/* Generated by Cython 0.12.1 on Sun Feb 28 10:41:24 2010 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#include "structmember.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#else

#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#if PY_VERSION_HEX < 0x02040000
  #define METH_COEXIST 0
  #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
  #define PyDict_Contains(d,o)   PySequence_Contains(d,o)
#endif

#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PY_FORMAT_SIZE_T ""
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
  #define PyNumber_Index(o)    PyNumber_Int(o)
  #define PyIndex_Check(o)     PyNumber_Check(o)
  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
#endif

#if PY_VERSION_HEX < 0x02060000
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #define PyType_Modified(t)

  typedef struct {
     void *buf;
     PyObject *obj;
     Py_ssize_t len;
     Py_ssize_t itemsize;
     int readonly;
     int ndim;
     char *format;
     Py_ssize_t *shape;
     Py_ssize_t *strides;
     Py_ssize_t *suboffsets;
     void *internal;
  } Py_buffer;

  #define PyBUF_SIMPLE 0
  #define PyBUF_WRITABLE 0x0001
  #define PyBUF_FORMAT 0x0004
  #define PyBUF_ND 0x0008
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)

#endif

#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#endif

#if PY_MAJOR_VERSION >= 3
  #define Py_TPFLAGS_CHECKTYPES 0
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif

#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyString_Type                PyUnicode_Type
  #define PyString_CheckExact          PyUnicode_CheckExact
#else
  #define PyBytes_Type                 PyString_Type
  #define PyBytes_CheckExact           PyString_CheckExact
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)

#endif

#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)
#endif

#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#else
  #define _USE_MATH_DEFINES
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
#else
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_NAMESTR(n) ((char *)(n))
  #define __Pyx_DOCSTR(n)  ((char *)(n))
#else
  #define __Pyx_NAMESTR(n) (n)
  #define __Pyx_DOCSTR(n)  (n)
#endif
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
#include <math.h>
#define __PYX_HAVE_API__lxml__etree
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "stdarg.h"
#include "etree_defs.h"
#include "lxml-version.h"
#include "libxml/xmlversion.h"
#include "libxml/encoding.h"
#include "libxml/chvalid.h"
#include "libxml/hash.h"
#include "libxml/tree.h"
#include "libxml/uri.h"
#include "libxml/HTMLtree.h"
#include "libxml/valid.h"
#include "libxml/xmlIO.h"
#include "libxml/xmlsave.h"
#include "libxml/globals.h"
#include "libxml/xmlstring.h"
#include "libxml/xmlmemory.h"
#include "pythread.h"
#include "libxml/xmlerror.h"
#include "libxml/xpath.h"
#include "libxml/xpathInternals.h"
#include "libxml/c14n.h"
#include "libxml/parser.h"
#include "libxml/parserInternals.h"
#include "libxml/HTMLparser.h"
#include "libxml/xinclude.h"
#include "libxslt/xslt.h"
#include "libxslt/xsltconfig.h"
#include "libxslt/xsltInternals.h"
#include "libxslt/extensions.h"
#include "libxslt/documents.h"
#include "libxslt/transform.h"
#include "libxslt/xsltutils.h"
#include "libxslt/security.h"
#include "libxslt/variables.h"
#include "libxslt/extra.h"
#include "libexslt/exslt.h"
#include "libxml/relaxng.h"
#include "libxml/xmlschemas.h"
#include "libxml/schematron.h"

#ifndef CYTHON_INLINE
  #if defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #else
    #define CYTHON_INLINE 
  #endif
#endif

typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/


/* Type Conversion Predeclarations */

#if PY_MAJOR_VERSION < 3
#define __Pyx_PyBytes_FromString          PyString_FromString
#define __Pyx_PyBytes_FromStringAndSize   PyString_FromStringAndSize
#define __Pyx_PyBytes_AsString            PyString_AsString
#else
#define __Pyx_PyBytes_FromString          PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize   PyBytes_FromStringAndSize
#define __Pyx_PyBytes_AsString            PyBytes_AsString
#endif

#define __Pyx_PyBytes_FromUString(s)      __Pyx_PyBytes_FromString((char*)s)
#define __Pyx_PyBytes_AsUString(s)        ((unsigned char*) __Pyx_PyBytes_AsString(s))

#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);

#if !defined(T_PYSSIZET)
#if PY_VERSION_HEX < 0x02050000
#define T_PYSSIZET T_INT
#elif !defined(T_LONGLONG)
#define T_PYSSIZET \
        ((sizeof(Py_ssize_t) == sizeof(int))  ? T_INT  : \
        ((sizeof(Py_ssize_t) == sizeof(long)) ? T_LONG : -1))
#else
#define T_PYSSIZET \
        ((sizeof(Py_ssize_t) == sizeof(int))          ? T_INT      : \
        ((sizeof(Py_ssize_t) == sizeof(long))         ? T_LONG     : \
        ((sizeof(Py_ssize_t) == sizeof(PY_LONG_LONG)) ? T_LONGLONG : -1)))
#endif
#endif


#if !defined(T_ULONGLONG)
#define __Pyx_T_UNSIGNED_INT(x) \
        ((sizeof(x) == sizeof(unsigned char))  ? T_UBYTE : \
        ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
        ((sizeof(x) == sizeof(unsigned int))   ? T_UINT : \
        ((sizeof(x) == sizeof(unsigned long))  ? T_ULONG : -1))))
#else
#define __Pyx_T_UNSIGNED_INT(x) \
        ((sizeof(x) == sizeof(unsigned char))  ? T_UBYTE : \
        ((sizeof(x) == sizeof(unsigned short)) ? T_USHORT : \
        ((sizeof(x) == sizeof(unsigned int))   ? T_UINT : \
        ((sizeof(x) == sizeof(unsigned long))  ? T_ULONG : \
        ((sizeof(x) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))))
#endif
#if !defined(T_LONGLONG)
#define __Pyx_T_SIGNED_INT(x) \
        ((sizeof(x) == sizeof(char))  ? T_BYTE : \
        ((sizeof(x) == sizeof(short)) ? T_SHORT : \
        ((sizeof(x) == sizeof(int))   ? T_INT : \
        ((sizeof(x) == sizeof(long))  ? T_LONG : -1))))
#else
#define __Pyx_T_SIGNED_INT(x) \
        ((sizeof(x) == sizeof(char))  ? T_BYTE : \
        ((sizeof(x) == sizeof(short)) ? T_SHORT : \
        ((sizeof(x) == sizeof(int))   ? T_INT : \
        ((sizeof(x) == sizeof(long))  ? T_LONG : \
        ((sizeof(x) == sizeof(PY_LONG_LONG))   ? T_LONGLONG : -1)))))
#endif

#define __Pyx_T_FLOATING(x) \
        ((sizeof(x) == sizeof(float)) ? T_FLOAT : \
        ((sizeof(x) == sizeof(double)) ? T_DOUBLE : -1))

#if !defined(T_SIZET)
#if !defined(T_ULONGLONG)
#define T_SIZET \
        ((sizeof(size_t) == sizeof(unsigned int))  ? T_UINT  : \
        ((sizeof(size_t) == sizeof(unsigned long)) ? T_ULONG : -1))
#else
#define T_SIZET \
        ((sizeof(size_t) == sizeof(unsigned int))          ? T_UINT      : \
        ((sizeof(size_t) == sizeof(unsigned long))         ? T_ULONG     : \
        ((sizeof(size_t) == sizeof(unsigned PY_LONG_LONG)) ? T_ULONGLONG : -1)))
#endif
#endif

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);

#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))


#ifdef __GNUC__
/* Test for GCC > 2.95 */
#if __GNUC__ > 2 ||               (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)) 
#define likely(x)   __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#else /* __GNUC__ > 2 ... */
#define likely(x)   (x)
#define unlikely(x) (x)
#endif /* __GNUC__ > 2 ... */
#else /* __GNUC__ */
#define likely(x)   (x)
#define unlikely(x) (x)
#endif /* __GNUC__ */
    
static PyObject *__pyx_m;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;
static const char **__pyx_f;


/* Type declarations */

typedef xmlNode *(*_node_to_node_function)(xmlNode *);

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":210
 *         c_parent = c_parent.parent
 * 
 * ctypedef struct _nscache:             # <<<<<<<<<<<<<<
 *     xmlNs** new
 *     xmlNs** old
 */

typedef struct {
  xmlNs **new;
  xmlNs **old;
  size_t size;
  size_t last;
} __pyx_t_4lxml_5etree__nscache;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":291
 *                                   _cstr(attr_name_utf), _cstr(value_utf))
 * 
 * ctypedef struct _ns_node_ref:             # <<<<<<<<<<<<<<
 *     xmlNs* ns
 *     xmlNode* node
 */

typedef struct {
  xmlNs *ns;
  xmlNode *node;
} __pyx_t_4lxml_5etree__ns_node_ref;

typedef PyObject *(*_element_class_lookup_function)(PyObject *, struct LxmlDocument *, xmlNode *);

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":3
 * # Custom resolver API
 * 
 * ctypedef enum _InputDocumentDataType:             # <<<<<<<<<<<<<<
 *     PARSER_DATA_EMPTY
 *     PARSER_DATA_STRING
 */

typedef enum {
  __pyx_e_4lxml_5etree_PARSER_DATA_EMPTY,
  __pyx_e_4lxml_5etree_PARSER_DATA_STRING,
  __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME,
  __pyx_e_4lxml_5etree_PARSER_DATA_FILE
} __pyx_t_4lxml_5etree__InputDocumentDataType;

typedef enum {
  __pyx_e_4lxml_5etree_SAX_EVENT_START = 1,
  __pyx_e_4lxml_5etree_SAX_EVENT_END = 2,
  __pyx_e_4lxml_5etree_SAX_EVENT_DATA = 4,
  __pyx_e_4lxml_5etree_SAX_EVENT_DOCTYPE = 8,
  __pyx_e_4lxml_5etree_SAX_EVENT_PI = 16,
  __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT = 32
} __pyx_t_4lxml_5etree__SaxParserEvents;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":7
 *     """
 * 
 * cdef enum _OutputMethods:             # <<<<<<<<<<<<<<
 *     OUTPUT_METHOD_XML
 *     OUTPUT_METHOD_HTML
 */

enum __pyx_t_4lxml_5etree__OutputMethods {
  __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML,
  __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML,
  __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":5
 * DEF __ITERPARSE_CHUNK_SIZE = 32768
 * 
 * ctypedef enum _IterparseEventFilter:             # <<<<<<<<<<<<<<
 *     ITERPARSE_FILTER_START     =  1
 *     ITERPARSE_FILTER_END       =  2
 */

typedef enum {
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START = 1,
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END = 2,
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS = 4,
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS = 8,
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_COMMENT = 16,
  __pyx_e_4lxml_5etree_ITERPARSE_FILTER_PI = 32
} __pyx_t_4lxml_5etree__IterparseEventFilter;

typedef int (*__pyx_t_4lxml_5etree__register_function)(void *, PyObject *, PyObject *);

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":236
 * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]
 * cdef public class _Element [ type LxmlElementType, object LxmlElement ]
 * cdef class _BaseParser             # <<<<<<<<<<<<<<
 * cdef class QName
 * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*)
 */

struct __pyx_obj_4lxml_5etree__BaseParser {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__BaseParser *__pyx_vtab;
  struct LxmlElementClassLookup *_class_lookup;
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *_resolvers;
  struct __pyx_obj_4lxml_5etree__ParserContext *_parser_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *_push_parser_context;
  int _parse_options;
  int _for_html;
  int _remove_comments;
  int _remove_pis;
  int _strip_cdata;
  struct __pyx_obj_4lxml_5etree_XMLSchema *_schema;
  PyObject *_filename;
  PyObject *_target;
  PyObject *_default_encoding;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1006
 * ############################################################
 * 
 * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
 *     cdef bint _feed_parser_running
 * 
 */

struct __pyx_obj_4lxml_5etree__FeedParser {
  struct __pyx_obj_4lxml_5etree__BaseParser __pyx_base;
  int _feed_parser_running;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1185
 *     )
 * 
 * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
 *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, target=None, compact=True)
 * 
 */

struct __pyx_obj_4lxml_5etree_XMLParser {
  struct __pyx_obj_4lxml_5etree__FeedParser __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1267
 *                              target, None, encoding)
 * 
 * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
 *     u"""ETCompatXMLParser(self, encoding=None, attribute_defaults=False, \
 *                  dtd_validation=False, load_dtd=False, no_network=True, \
 */

struct __pyx_obj_4lxml_5etree_ETCompatXMLParser {
  struct __pyx_obj_4lxml_5etree_XMLParser __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":14
 * 
 * 
 * cdef class _NamespaceRegistry:             # <<<<<<<<<<<<<<
 *     u"Dictionary-like namespace registry"
 *     cdef object _ns_uri
 */

struct __pyx_obj_4lxml_5etree__NamespaceRegistry {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry *__pyx_vtab;
  PyObject *_ns_uri;
  PyObject *_ns_uri_utf;
  PyObject *_entries;
  char *_c_ns_uri_utf;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":186
 *         return registry
 * 
 * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):             # <<<<<<<<<<<<<<
 *     def __setitem__(self, name, item):
 *         if not callable(item):
 */

struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry {
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":199
 *         return u"FunctionNamespace(%r)" % self._ns_uri
 * 
 * cdef class _XPathFunctionNamespaceRegistry(_FunctionNamespaceRegistry):             # <<<<<<<<<<<<<<
 *     cdef object _prefix
 *     cdef object _prefix_utf
 */

struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry {
  struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry __pyx_base;
  PyObject *_prefix;
  PyObject *_prefix_utf;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":11
 *     SAX_EVENT_COMMENT = 32
 * 
 * cdef class _SaxParserTarget:             # <<<<<<<<<<<<<<
 *     cdef int _sax_event_filter
 *     cdef int _sax_event_propagate
 */

struct __pyx_obj_4lxml_5etree__SaxParserTarget {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *__pyx_vtab;
  int _sax_event_filter;
  int _sax_event_propagate;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":105
 *             return ErrorLevels._getName(self.level, u"unknown")
 * 
 * cdef class _BaseErrorLog:             # <<<<<<<<<<<<<<
 *     cdef _LogEntry _first_error
 *     cdef readonly object last_error
 */

struct __pyx_obj_4lxml_5etree__BaseErrorLog {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *__pyx_vtab;
  struct __pyx_obj_4lxml_5etree__LogEntry *_first_error;
  PyObject *last_error;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2097
 * 
 * 
 * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
 *                                        type LxmlElementTagMatcherType ]:
 *     cdef object _pystrings
 */

struct LxmlElementTagMatcher {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtab;
  PyObject *_pystrings;
  int _node_type;
  char *_href;
  char *_name;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":327
 * 
 * 
 * cdef class XSLT:             # <<<<<<<<<<<<<<
 *     u"""XSLT(self, xslt_input, extensions=None, regexp=True, access_control=None)
 * 
 */

struct __pyx_obj_4lxml_5etree_XSLT {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree_XSLT *__pyx_vtab;
  struct __pyx_obj_4lxml_5etree__XSLTContext *_context;
  xsltStylesheet *_c_style;
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *_xslt_resolver_context;
  struct __pyx_obj_4lxml_5etree_XSLTAccessControl *_access_control;
  struct __pyx_obj_4lxml_5etree__ErrorLog *_error_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2203
 *         self._storeNext(node)
 * 
 * cdef class ElementDepthFirstIterator(_ElementTagMatcher):             # <<<<<<<<<<<<<<
 *     u"""ElementDepthFirstIterator(self, node, tag=None, inclusive=True)
 *     Iterates over an element and its sub-elements in document order (depth
 */

struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator {
  struct LxmlElementTagMatcher __pyx_base;
  struct LxmlElement *_next_node;
  struct LxmlElement *_top_node;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":101
 *         return doc_ref
 * 
 * cdef class _ResolverRegistry:             # <<<<<<<<<<<<<<
 *     cdef object _resolvers
 *     cdef Resolver _default_resolver
 */

struct __pyx_obj_4lxml_5etree__ResolverRegistry {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry *__pyx_vtab;
  PyObject *_resolvers;
  struct __pyx_obj_4lxml_5etree_Resolver *_default_resolver;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":332
 * ############################################################
 * 
 * cdef class TreeBuilder(_SaxParserTarget):             # <<<<<<<<<<<<<<
 *     u"""TreeBuilder(self, element_factory=None, parser=None)
 *     Parser target that builds a tree.
 */

struct __pyx_obj_4lxml_5etree_TreeBuilder {
  struct __pyx_obj_4lxml_5etree__SaxParserTarget __pyx_base;
  struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
  PyObject *_factory;
  PyObject *_data;
  PyObject *_element_stack;
  PyObject *_element_stack_pop;
  struct LxmlElement *_last;
  int _in_tail;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":102
 *     _XPATH_VERSION_WARNING_REQUIRED = 0
 * 
 * cdef class _XPathEvaluatorBase:             # <<<<<<<<<<<<<<
 *     cdef xpath.xmlXPathContext* _xpathCtxt
 *     cdef _XPathContext _context
 */

struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase *__pyx_vtab;
  xmlXPathContext *_xpathCtxt;
  struct __pyx_obj_4lxml_5etree__XPathContext *_context;
  PyThread_type_lock _eval_lock;
  struct __pyx_obj_4lxml_5etree__ErrorLog *_error_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":223
 * 
 * 
 * cdef class XPathElementEvaluator(_XPathEvaluatorBase):             # <<<<<<<<<<<<<<
 *     u"""XPathElementEvaluator(self, element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     Create an XPath evaluator for an element.
 */

struct __pyx_obj_4lxml_5etree_XPathElementEvaluator {
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase __pyx_base;
  struct LxmlElement *_element;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":298
 * 
 * 
 * cdef class XPathDocumentEvaluator(XPathElementEvaluator):             # <<<<<<<<<<<<<<
 *     u"""XPathDocumentEvaluator(self, etree, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     Create an XPath evaluator for an ElementTree.
 */

struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator {
  struct __pyx_obj_4lxml_5etree_XPathElementEvaluator __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":235
 * # forward declarations
 * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]
 * cdef public class _Element [ type LxmlElementType, object LxmlElement ]             # <<<<<<<<<<<<<<
 * cdef class _BaseParser
 * cdef class QName
 */

struct LxmlElement {
  PyObject_HEAD
  PyObject *_gc_doc;
  struct LxmlDocument *_doc;
  xmlNode *_c_node;
  PyObject *_tag;
  PyObject *_attrib;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1349
 * 
 * 
 * cdef class __ContentOnlyElement(_Element):             # <<<<<<<<<<<<<<
 *     cdef int _raiseImmutable(self) except -1:
 *         raise TypeError, u"this element does not have children or attributes"
 */

struct __pyx_obj_4lxml_5etree___ContentOnlyElement {
  struct LxmlElement __pyx_base;
  struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *__pyx_vtab;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1418
 *         return []
 * 
 * cdef class _Comment(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_obj_4lxml_5etree__Comment {
  struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":378
 * 
 * 
 * cdef class XPath(_XPathEvaluatorBase):             # <<<<<<<<<<<<<<
 *     u"""XPath(self, path, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     A compiled XPath expression that can be called on Elements and ElementTrees.
 */

struct __pyx_obj_4lxml_5etree_XPath {
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase __pyx_base;
  xmlXPathCompExpr *_xpath;
  PyObject *path;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":450
 * _find_namespaces = re.compile('({[^}]+})').findall
 * 
 * cdef class ETXPath(XPath):             # <<<<<<<<<<<<<<
 *     u"""ETXPath(self, path, extensions=None, regexp=True)
 *     Special XPath class that supports the ElementTree {uri} notation for namespaces.
 */

struct __pyx_obj_4lxml_5etree_ETXPath {
  struct __pyx_obj_4lxml_5etree_XPath __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":150
 * 
 * # class to store element class lookup functions
 * cdef public class ElementClassLookup [ type LxmlElementClassLookupType,             # <<<<<<<<<<<<<<
 *                                        object LxmlElementClassLookup ]:
 *     u"""ElementClassLookup(self)
 */

struct LxmlElementClassLookup {
  PyObject_HEAD
  _element_class_lookup_function _lookup_function;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":159
 *         self._lookup_function = NULL # use default lookup
 * 
 * cdef public class FallbackElementClassLookup(ElementClassLookup) \             # <<<<<<<<<<<<<<
 *          [ type LxmlFallbackElementClassLookupType,
 *            object LxmlFallbackElementClassLookup ]:
 */

struct LxmlFallbackElementClassLookup {
  struct LxmlElementClassLookup __pyx_base;
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *__pyx_vtab;
  struct LxmlElementClassLookup *fallback;
  _element_class_lookup_function _fallback_function;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":349
 * #  custom class lookup based on node type, namespace, name
 * 
 * cdef class CustomElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""CustomElementClassLookup(self, fallback=None)
 *     Element class lookup based on a subclass method.
 */

struct __pyx_obj_4lxml_5etree_CustomElementClassLookup {
  struct LxmlFallbackElementClassLookup __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":3
 * # read-only tree implementation
 * 
 * cdef class _ReadOnlyElementProxy:             # <<<<<<<<<<<<<<
 *     u"The main read-only Element proxy class (for internal use only!)."
 *     cdef bint _free_after_use
 */

struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *__pyx_vtab;
  int _free_after_use;
  xmlNode *_c_node;
  PyObject *_source_proxy;
  PyObject *_dependent_proxies;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":101
 *                 raise TypeError, "Invalid child type: %r" % type(child)
 * 
 * cdef class CommentBase(_Comment):             # <<<<<<<<<<<<<<
 *     u"""All custom Comment classes must inherit from this one.
 * 
 */

struct __pyx_obj_4lxml_5etree_CommentBase {
  struct __pyx_obj_4lxml_5etree__Comment __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":318
 * 
 * 
 * cdef class _XSLTQuotedStringParam:             # <<<<<<<<<<<<<<
 *     u"""A wrapper class for literal XSLT string parameters that require
 *     quote escaping.
 */

struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam {
  PyObject_HEAD
  PyObject *strval;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":31
 * # Base class for XSLT and XPath evaluation contexts: functions, namespaces, ...
 * 
 * cdef class _BaseContext:             # <<<<<<<<<<<<<<
 *     cdef xpath.xmlXPathContext* _xpathCtxt
 *     cdef _Document _doc
 */

struct __pyx_obj_4lxml_5etree__BaseContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__BaseContext *__pyx_vtab;
  xmlXPathContext *_xpathCtxt;
  struct LxmlDocument *_doc;
  PyObject *_extensions;
  PyObject *_namespaces;
  PyObject *_global_namespaces;
  PyObject *_utf_refs;
  PyObject *_function_cache;
  PyObject *_eval_context_dict;
  int _build_smart_strings;
  struct __pyx_obj_4lxml_5etree__TempStore *_temp_refs;
  PyObject *_temp_documents;
  struct __pyx_obj_4lxml_5etree__ExceptionContext *_exc;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":270
 * cdef dict EMPTY_DICT = {}
 * 
 * cdef class _XSLTContext(_BaseContext):             # <<<<<<<<<<<<<<
 *     cdef xslt.xsltTransformContext* _xsltCtxt
 *     cdef _ReadOnlyElementProxy _extension_element_proxy
 */

struct __pyx_obj_4lxml_5etree__XSLTContext {
  struct __pyx_obj_4lxml_5etree__BaseContext __pyx_base;
  xsltTransformContext *_xsltCtxt;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *_extension_element_proxy;
  PyObject *_extension_elements;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":3
 * # XSLT extension elements
 * 
 * cdef class XSLTExtension:             # <<<<<<<<<<<<<<
 *     u"""Base class of an XSLT extension element.
 *     """
 */

struct __pyx_obj_4lxml_5etree_XSLTExtension {
  PyObject_HEAD
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":208
 * 
 * # class for temporarily storing exceptions raised in extensions
 * cdef class _ExceptionContext:             # <<<<<<<<<<<<<<
 *     cdef object _exc_info
 *     cdef void clear(self):
 */

struct __pyx_obj_4lxml_5etree__ExceptionContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *__pyx_vtab;
  PyObject *_exc_info;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":148
 *         return repr(self._resolvers)
 * 
 * cdef class _ResolverContext(_ExceptionContext):             # <<<<<<<<<<<<<<
 *     cdef _ResolverRegistry _resolvers
 *     cdef _TempStore _storage
 */

struct __pyx_obj_4lxml_5etree__ResolverContext {
  struct __pyx_obj_4lxml_5etree__ExceptionContext __pyx_base;
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *_resolvers;
  struct __pyx_obj_4lxml_5etree__TempStore *_storage;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":6
 * cimport htmlparser
 * 
 * cdef class _ParserContext(_ResolverContext)             # <<<<<<<<<<<<<<
 * cdef class _SaxParserContext(_ParserContext)
 * cdef class _TargetParserContext(_SaxParserContext)
 */

struct __pyx_obj_4lxml_5etree__ParserContext {
  struct __pyx_obj_4lxml_5etree__ResolverContext __pyx_base;
  struct __pyx_obj_4lxml_5etree__ErrorLog *_error_log;
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *_validator;
  xmlParserCtxt *_c_ctxt;
  PyThread_type_lock _lock;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":7
 * 
 * cdef class _ParserContext(_ResolverContext)
 * cdef class _SaxParserContext(_ParserContext)             # <<<<<<<<<<<<<<
 * cdef class _TargetParserContext(_SaxParserContext)
 * cdef class _ParserSchemaValidationContext
 */

struct __pyx_obj_4lxml_5etree__SaxParserContext {
  struct __pyx_obj_4lxml_5etree__ParserContext __pyx_base;
  struct __pyx_obj_4lxml_5etree__SaxParserTarget *_target;
  startElementNsSAX2Func _origSaxStart;
  endElementNsSAX2Func _origSaxEnd;
  startElementSAXFunc _origSaxStartNoNs;
  endElementSAXFunc _origSaxEndNoNs;
  charactersSAXFunc _origSaxData;
  cdataBlockSAXFunc _origSaxCData;
  internalSubsetSAXFunc _origSaxDoctype;
  commentSAXFunc _origSaxComment;
  processingInstructionSAXFunc _origSaxPi;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":8
 * cdef class _ParserContext(_ResolverContext)
 * cdef class _SaxParserContext(_ParserContext)
 * cdef class _TargetParserContext(_SaxParserContext)             # <<<<<<<<<<<<<<
 * cdef class _ParserSchemaValidationContext
 * cdef class _Validator
 */

struct __pyx_obj_4lxml_5etree__TargetParserContext {
  struct __pyx_obj_4lxml_5etree__SaxParserContext __pyx_base;
  PyObject *_python_target;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":15
 *     cdef object _file
 * 
 * cdef class Resolver:             # <<<<<<<<<<<<<<
 *     u"This is the base class of all resolvers."
 *     def resolve(self, system_url, public_id, context):
 */

struct __pyx_obj_4lxml_5etree_Resolver {
  PyObject_HEAD
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1535
 * 
 * 
 * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
 *                                  object LxmlElementTree ]:
 *     cdef _Document _doc
 */

struct LxmlElementTree {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ElementTree *__pyx_vtab;
  struct LxmlDocument *_doc;
  struct LxmlElement *_context_node;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":660
 *     return new_xslt
 * 
 * cdef class _XSLTResultTree(_ElementTree):             # <<<<<<<<<<<<<<
 *     cdef XSLT _xslt
 *     cdef _Document _profile
 */

struct __pyx_obj_4lxml_5etree__XSLTResultTree {
  struct LxmlElementTree __pyx_base;
  struct __pyx_obj_4lxml_5etree_XSLT *_xslt;
  struct LxmlDocument *_profile;
  char *_buffer;
  Py_ssize_t _buffer_len;
  Py_ssize_t _buffer_refcnt;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1448
 *             return u"<?%s?>" % self.target
 * 
 * cdef class _Entity(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_obj_4lxml_5etree__Entity {
  struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":129
 *     """
 * 
 * cdef class EntityBase(_Entity):             # <<<<<<<<<<<<<<
 *     u"""All custom Entity classes must inherit from this one.
 * 
 */

struct __pyx_obj_4lxml_5etree_EntityBase {
  struct __pyx_obj_4lxml_5etree__Entity __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":10
 *     pass
 * 
 * cdef class XInclude:             # <<<<<<<<<<<<<<
 *     u"""XInclude(self)
 *     XInclude processor.
 */

struct __pyx_obj_4lxml_5etree_XInclude {
  PyObject_HEAD
  struct __pyx_obj_4lxml_5etree__ErrorLog *_error_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":234
 * 
 * # forward declarations
 * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]             # <<<<<<<<<<<<<<
 * cdef public class _Element [ type LxmlElementType, object LxmlElement ]
 * cdef class _BaseParser
 */

struct LxmlDocument {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__Document *__pyx_vtab;
  int _ns_counter;
  PyObject *_prefix_tail;
  xmlDoc *_c_doc;
  struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":9
 *     PARSER_DATA_FILE
 * 
 * cdef class _InputDocument:             # <<<<<<<<<<<<<<
 *     cdef _InputDocumentDataType _type
 *     cdef object _data_bytes
 */

struct __pyx_obj_4lxml_5etree__InputDocument {
  PyObject_HEAD
  __pyx_t_4lxml_5etree__InputDocumentDataType _type;
  PyObject *_data_bytes;
  PyObject *_filename;
  PyObject *_file;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1426
 *         return u"<!--%s-->" % self.text
 * 
 * cdef class _ProcessingInstruction(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_obj_4lxml_5etree__ProcessingInstruction {
  struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":115
 *     """
 * 
 * cdef class PIBase(_ProcessingInstruction):             # <<<<<<<<<<<<<<
 *     u"""All custom Processing Instruction classes must inherit from this one.
 * 
 */

struct __pyx_obj_4lxml_5etree_PIBase {
  struct __pyx_obj_4lxml_5etree__ProcessingInstruction __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":814
 *     return __findStylesheetByID(doc, id=id)
 * 
 * cdef class _XSLTProcessingInstruction(PIBase):             # <<<<<<<<<<<<<<
 *     def parseXSL(self, parser=None):
 *         u"""Try to parse the stylesheet referenced by this PI and return an
 */

struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction {
  struct __pyx_obj_4lxml_5etree_PIBase __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":332
 * #  per-parser lookup scheme
 * 
 * cdef class ParserBasedElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""ParserBasedElementClassLookup(self, fallback=None)
 *     Element class lookup based on the XML parser.
 */

struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup {
  struct LxmlFallbackElementClassLookup __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":10
 * cdef class _TargetParserContext(_SaxParserContext)
 * cdef class _ParserSchemaValidationContext
 * cdef class _Validator             # <<<<<<<<<<<<<<
 * cdef class XMLSchema(_Validator)
 * 
 */

struct __pyx_obj_4lxml_5etree__Validator {
  PyObject_HEAD
  struct __pyx_obj_4lxml_5etree__ErrorLog *_error_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":22
 * # RelaxNG
 * 
 * cdef class RelaxNG(_Validator):             # <<<<<<<<<<<<<<
 *     u"""RelaxNG(self, etree=None, file=None)
 *     Turn a document into a Relax NG validator.
 */

struct __pyx_obj_4lxml_5etree_RelaxNG {
  struct __pyx_obj_4lxml_5etree__Validator __pyx_base;
  xmlRelaxNG *_c_schema;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":41
 * # Logging classes
 * 
 * cdef class _LogEntry:             # <<<<<<<<<<<<<<
 *     cdef readonly object domain
 *     cdef readonly object type
 */

struct __pyx_obj_4lxml_5etree__LogEntry {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__LogEntry *__pyx_vtab;
  PyObject *domain;
  PyObject *type;
  PyObject *level;
  PyObject *line;
  PyObject *column;
  PyObject *message;
  PyObject *filename;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":259
 * ############################################################
 * 
 * cdef class _FileReaderContext:             # <<<<<<<<<<<<<<
 *     cdef object _filelike
 *     cdef object _encoding
 */

struct __pyx_obj_4lxml_5etree__FileReaderContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *__pyx_vtab;
  PyObject *_filelike;
  PyObject *_encoding;
  PyObject *_url;
  PyObject *_bytes;
  struct __pyx_obj_4lxml_5etree__ExceptionContext *_exc_context;
  Py_ssize_t _bytes_read;
  char *_c_url;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":13
 *         self.result = result
 * 
 * cdef class _PythonSaxParserTarget(_SaxParserTarget):             # <<<<<<<<<<<<<<
 *     cdef object _target_start
 *     cdef object _target_end
 */

struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget {
  struct __pyx_obj_4lxml_5etree__SaxParserTarget __pyx_base;
  PyObject *_target_start;
  PyObject *_target_end;
  PyObject *_target_data;
  PyObject *_target_doctype;
  PyObject *_target_pi;
  PyObject *_target_comment;
  int _start_takes_nsmap;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2390
 * PI = ProcessingInstruction
 * 
 * cdef class CDATA:             # <<<<<<<<<<<<<<
 *     u"""CDATA(data)
 * 
 */

struct __pyx_obj_4lxml_5etree_CDATA {
  PyObject_HEAD
  PyObject *_utf8_data;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":62
 *     return count
 * 
 * cdef class _IterparseContext(_ParserContext):             # <<<<<<<<<<<<<<
 *     cdef xmlparser.startElementNsSAX2Func _origSaxStart
 *     cdef xmlparser.endElementNsSAX2Func   _origSaxEnd
 */

struct __pyx_obj_4lxml_5etree__IterparseContext {
  struct __pyx_obj_4lxml_5etree__ParserContext __pyx_base;
  startElementNsSAX2Func _origSaxStart;
  endElementNsSAX2Func _origSaxEnd;
  startElementSAXFunc _origSaxStartNoNs;
  endElementSAXFunc _origSaxEndNoNs;
  commentSAXFunc _origSaxComment;
  processingInstructionSAXFunc _origSaxPI;
  struct LxmlElement *_root;
  struct LxmlDocument *_doc;
  int _event_filter;
  PyObject *_events;
  int _event_index;
  PyObject *_ns_stack;
  PyObject *_pop_ns;
  PyObject *_node_stack;
  PyObject *_pop_node;
  PyObject *_tag_tuple;
  char *_tag_href;
  char *_tag_name;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":192
 *         return message
 * 
 * cdef class _ListErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
 *     u"Immutable base version of a list based error log."
 *     cdef list _entries
 */

struct __pyx_obj_4lxml_5etree__ListErrorLog {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog __pyx_base;
  PyObject *_entries;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":312
 *         return self.filter_from_level(ErrorLevels.WARNING)
 * 
 * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         _ListErrorLog.__init__(self, [], None, None)
 */

struct __pyx_obj_4lxml_5etree__ErrorLog {
  struct __pyx_obj_4lxml_5etree__ListErrorLog __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":50
 * 
 * 
 * cdef class _XPathContext(_BaseContext):             # <<<<<<<<<<<<<<
 *     cdef object _variables
 *     def __init__(self, namespaces, extensions, enable_regexp, variables,
 */

struct __pyx_obj_4lxml_5etree__XPathContext {
  struct __pyx_obj_4lxml_5etree__BaseContext __pyx_base;
  PyObject *_variables;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2281
 *         return NULL
 * 
 * cdef class ElementTextIterator:             # <<<<<<<<<<<<<<
 *     u"""ElementTextIterator(self, element, tag=None, with_tail=True)
 *     Iterates over the text content of a subtree.
 */

struct __pyx_obj_4lxml_5etree_ElementTextIterator {
  PyObject_HEAD
  PyObject *_nextEvent;
  struct LxmlElement *_start_element;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2125
 *                 self._name = NULL
 * 
 * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
 *     object LxmlElementIterator, type LxmlElementIteratorType ]:
 *     # we keep Python references here to control GC
 */

struct LxmlElementIterator {
  struct LxmlElementTagMatcher __pyx_base;
  struct LxmlElement *_node;
  _node_to_node_function _next_element;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":6
 * # Custom Element classes
 * 
 * cdef public class ElementBase(_Element) [ type LxmlElementBaseType,             # <<<<<<<<<<<<<<
 *                                           object LxmlElementBase ]:
 *     u"""ElementBase(*children, attrib=None, nsmap=None, **_extra)
 */

struct LxmlElementBase {
  struct LxmlElement __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":362
 *         self._entries.append(entry)
 * 
 * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
 *     u"""PyErrorLog(self, logger_name=None)
 *     A global error log that connects to the Python stdlib logging package.
 */

struct __pyx_obj_4lxml_5etree_PyErrorLog {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog __pyx_base;
  PyObject *level_map;
  PyObject *_map_level;
  PyObject *_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":22
 * # DTD
 * 
 * cdef class DTD(_Validator):             # <<<<<<<<<<<<<<
 *     u"""DTD(self, file=None, external_id=None)
 *     A DTD validator.
 */

struct __pyx_obj_4lxml_5etree_DTD {
  struct __pyx_obj_4lxml_5etree__Validator __pyx_base;
  xmlDtd *_c_dtd;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":311
 *         return c_ctxt.node.next
 * 
 * cdef class iterparse(_BaseParser):             # <<<<<<<<<<<<<<
 *     u"""iterparse(self, source, events=("end",), tag=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, remove_blank_text=False, remove_comments=False, remove_pis=False, encoding=None, html=False, huge_tree=False, schema=None)
 * 
 */

struct __pyx_obj_4lxml_5etree_iterparse {
  struct __pyx_obj_4lxml_5etree__BaseParser __pyx_base;
  PyObject *_tag;
  PyObject *_events;
  PyObject *root;
  PyObject *_source;
  PyObject *_buffer;
  int (*_parse_chunk)(xmlParserCtxt *, char *, int, int);
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":50
 * # XSLT document loaders
 * 
 * cdef class _XSLTResolverContext(_ResolverContext):             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* _c_style_doc
 *     cdef _BaseParser _parser
 */

struct __pyx_obj_4lxml_5etree__XSLTResolverContext {
  struct __pyx_obj_4lxml_5etree__ResolverContext __pyx_base;
  xmlDoc *_c_style_doc;
  struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":40
 *     pass
 * 
 * cdef class _ParserDictionaryContext:             # <<<<<<<<<<<<<<
 *     # Global parser context to share the string dictionary.
 *     #
 */

struct __pyx_obj_4lxml_5etree__ParserDictionaryContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *__pyx_vtab;
  xmlDict *_c_dict;
  struct __pyx_obj_4lxml_5etree__BaseParser *_default_parser;
  PyObject *_implied_parser_contexts;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":527
 * 
 * 
 * cdef class iterwalk:             # <<<<<<<<<<<<<<
 *     u"""iterwalk(self, element_or_tree, events=("end",), tag=None)
 * 
 */

struct __pyx_obj_4lxml_5etree_iterwalk {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree_iterwalk *__pyx_vtab;
  PyObject *_node_stack;
  PyObject *_pop_node;
  int _index;
  PyObject *_events;
  PyObject *_pop_event;
  int _event_filter;
  PyObject *_tag_tuple;
  char *_tag_href;
  char *_tag_name;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":342
 *         self._entries.append(entry)
 * 
 * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
 *     def __init__(self, domains):
 *         _ErrorLog.__init__(self)
 */

struct __pyx_obj_4lxml_5etree__DomainErrorLog {
  struct __pyx_obj_4lxml_5etree__ErrorLog __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":282
 * # attribute based lookup scheme
 * 
 * cdef class AttributeBasedElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""AttributeBasedElementClassLookup(self, attribute_name, class_mapping, fallback=None)
 *     Checks an attribute of an Element and looks up the value in a
 */

struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup {
  struct LxmlFallbackElementClassLookup __pyx_base;
  PyObject *_class_mapping;
  PyObject *_pytag;
  char *_c_ns;
  char *_c_name;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":410
 * 
 * 
 * cdef class DocInfo:             # <<<<<<<<<<<<<<
 *     u"Document information provided by parser and DTD."
 *     cdef _Document _doc
 */

struct __pyx_obj_4lxml_5etree_DocInfo {
  PyObject_HEAD
  struct LxmlDocument *_doc;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":11
 * cdef class _ParserSchemaValidationContext
 * cdef class _Validator
 * cdef class XMLSchema(_Validator)             # <<<<<<<<<<<<<<
 * 
 * class ParseError(LxmlSyntaxError):
 */

struct __pyx_obj_4lxml_5etree_XMLSchema {
  struct __pyx_obj_4lxml_5etree__Validator __pyx_base;
  struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *__pyx_vtab;
  xmlSchema *_c_schema;
  int _has_default_attributes;
  int _add_attribute_defaults;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2194
 *         self._storeNext(node)
 * 
 * cdef class AncestorsIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""AncestorsIterator(self, node, tag=None)
 *     Iterates over the ancestors of an element (from parent to parent).
 */

struct __pyx_obj_4lxml_5etree_AncestorsIterator {
  struct LxmlElementIterator __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":58
 *     return (_elementTreeFactory(doc, None), _IDDict(doc))
 * 
 * cdef class _IDDict:             # <<<<<<<<<<<<<<
 *     u"""IDDict(self, etree)
 *     A dictionary-like proxy class that mapps ID attributes to elements.
 */

struct __pyx_obj_4lxml_5etree__IDDict {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__IDDict *__pyx_vtab;
  struct LxmlDocument *_doc;
  PyObject *_keys;
  PyObject *_items;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":95
 * 
 * 
 * cdef class ElementNamespaceClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""ElementNamespaceClassLookup(self, fallback=None)
 * 
 */

struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup {
  struct LxmlFallbackElementClassLookup __pyx_base;
  PyObject *_namespace_registries;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":279
 *     del sourceProxy._dependent_proxies[:]
 * 
 * cdef class _AppendOnlyElementProxy(_ReadOnlyElementProxy):             # <<<<<<<<<<<<<<
 *     u"""A read-only element that allows adding children and changing the
 *     text content (i.e. everything that adds to the subtree).
 */

struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy {
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1936
 * 
 * 
 * cdef class _Attrib:             # <<<<<<<<<<<<<<
 *     u"""A dict-like proxy for the ``Element.attrib`` property.
 *     """
 */

struct __pyx_obj_4lxml_5etree__Attrib {
  PyObject_HEAD
  struct LxmlElement *_element;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":201
 * # default lookup scheme
 * 
 * cdef class ElementDefaultClassLookup(ElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""ElementDefaultClassLookup(self, element=None, comment=None, pi=None, entity=None)
 *     Element class lookup scheme that always returns the default Element
 */

struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup {
  struct LxmlElementClassLookup __pyx_base;
  PyObject *element_class;
  PyObject *comment_class;
  PyObject *pi_class;
  PyObject *entity_class;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":619
 * # special str/unicode subclasses
 * 
 * cdef class _ElementUnicodeResult(python.unicode):             # <<<<<<<<<<<<<<
 *     cdef _Element _parent
 *     cdef readonly object is_tail
 */

struct __pyx_obj_4lxml_5etree__ElementUnicodeResult {
  PyUnicodeObject __pyx_base;
  struct LxmlElement *_parent;
  PyObject *is_tail;
  PyObject *is_text;
  PyObject *is_attribute;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":26
 * 
 * ctypedef int (*_register_function)(void* ctxt, name_utf, ns_uri_utf)
 * cdef class _ExsltRegExp             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */

struct __pyx_obj_4lxml_5etree__ExsltRegExp {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *__pyx_vtab;
  PyObject *_compile_map;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":237
 * cdef public class _Element [ type LxmlElementType, object LxmlElement ]
 * cdef class _BaseParser
 * cdef class QName             # <<<<<<<<<<<<<<
 * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*)
 * 
 */

struct __pyx_obj_4lxml_5etree_QName {
  PyObject_HEAD
  PyObject *text;
  PyObject *localname;
  PyObject *namespace;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":194
 * 
 * # class for temporary storage of Python references
 * cdef class _TempStore:             # <<<<<<<<<<<<<<
 *     cdef list _storage
 *     def __init__(self):
 */

struct __pyx_obj_4lxml_5etree__TempStore {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__TempStore *__pyx_vtab;
  PyObject *_storage;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":304
 * # output to file-like objects
 * 
 * cdef class _FilelikeWriter:             # <<<<<<<<<<<<<<
 *     cdef object _filelike
 *     cdef object _close_filelike
 */

struct __pyx_obj_4lxml_5etree__FilelikeWriter {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *__pyx_vtab;
  PyObject *_filelike;
  PyObject *_close_filelike;
  struct __pyx_obj_4lxml_5etree__ExceptionContext *_exc_context;
  struct __pyx_obj_4lxml_5etree__ErrorLog *error_log;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":22
 * # Schematron
 * 
 * cdef class Schematron(_Validator):             # <<<<<<<<<<<<<<
 *     u"""Schematron(self, etree=None, file=None)
 *     A Schematron validator.
 */

struct __pyx_obj_4lxml_5etree_Schematron {
  struct __pyx_obj_4lxml_5etree__Validator __pyx_base;
  xmlSchematron *_c_schema;
  xmlDoc *_c_schema_doc;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":167
 * # XSLT file/network access control
 * 
 * cdef class XSLTAccessControl:             # <<<<<<<<<<<<<<
 *     u"""XSLTAccessControl(self, read_file=True, write_file=True, create_dir=True, read_network=True, write_network=True)
 * 
 */

struct __pyx_obj_4lxml_5etree_XSLTAccessControl {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *__pyx_vtab;
  xsltSecurityPrefs *_prefs;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2180
 *             self._node = _elementFactory(node._doc, c_node)
 * 
 * cdef class SiblingsIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""SiblingsIterator(self, node, tag=None, preceding=False)
 *     Iterates over the siblings of an element.
 */

struct __pyx_obj_4lxml_5etree_SiblingsIterator {
  struct LxmlElementIterator __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1343
 *     )
 * 
 * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
 *     u"""HTMLParser(self, encoding=None, remove_blank_text=False, \
 *                    remove_comments=False, remove_pis=False, strip_cdata=True, \
 */

struct __pyx_obj_4lxml_5etree_HTMLParser {
  struct __pyx_obj_4lxml_5etree__FeedParser __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":81
 *         python.PyDict_Clear(self._entries)
 * 
 * cdef class _ClassNamespaceRegistry(_NamespaceRegistry):             # <<<<<<<<<<<<<<
 *     u"Dictionary-like registry for namespace implementation classes"
 *     def __setitem__(self, name, item):
 */

struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry {
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":9
 * cdef class _SaxParserContext(_ParserContext)
 * cdef class _TargetParserContext(_SaxParserContext)
 * cdef class _ParserSchemaValidationContext             # <<<<<<<<<<<<<<
 * cdef class _Validator
 * cdef class XMLSchema(_Validator)
 */

struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext {
  PyObject_HEAD
  struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *__pyx_vtab;
  struct __pyx_obj_4lxml_5etree_XMLSchema *_schema;
  xmlSchemaValidCtxt *_valid_ctxt;
  xmlSchemaSAXPlugStruct *_sax_plug;
  int _add_default_attributes;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2056
 *         return python.PyObject_RichCompare(one, other, op)
 * 
 * cdef class _AttribIterator:             # <<<<<<<<<<<<<<
 *     u"""Attribute iterator - for internal use only!
 *     """
 */

struct __pyx_obj_4lxml_5etree__AttribIterator {
  PyObject_HEAD
  struct LxmlElement *_node;
  xmlAttr *_c_attr;
  int _keysvalues;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":407
 * # read-only tree based class lookup
 * 
 * cdef class PythonElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""PythonElementClassLookup(self, fallback=None)
 *     Element class lookup based on a subclass method.
 */

struct __pyx_obj_4lxml_5etree_PythonElementClassLookup {
  struct LxmlFallbackElementClassLookup __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2157
 *         return current_node
 * 
 * cdef class ElementChildIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""ElementChildIterator(self, node, tag=None, reversed=False)
 *     Iterates over the children of an element.
 */

struct __pyx_obj_4lxml_5etree_ElementChildIterator {
  struct LxmlElementIterator __pyx_base;
};

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":351
 *             _ErrorLog.receive(self, entry)
 * 
 * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
 *     cdef int _max_len
 *     def __init__(self, max_len):
 */

struct __pyx_obj_4lxml_5etree__RotatingErrorLog {
  struct __pyx_obj_4lxml_5etree__ErrorLog __pyx_base;
  int _max_len;
};


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":101
 *         return doc_ref
 * 
 * cdef class _ResolverRegistry:             # <<<<<<<<<<<<<<
 *     cdef object _resolvers
 *     cdef Resolver _default_resolver
 */

struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry {
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *(*_copy)(struct __pyx_obj_4lxml_5etree__ResolverRegistry *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry *__pyx_vtabptr_4lxml_5etree__ResolverRegistry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":208
 * 
 * # class for temporarily storing exceptions raised in extensions
 * cdef class _ExceptionContext:             # <<<<<<<<<<<<<<
 *     cdef object _exc_info
 *     cdef void clear(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext {
  void (*clear)(struct __pyx_obj_4lxml_5etree__ExceptionContext *);
  void (*_store_raised)(struct __pyx_obj_4lxml_5etree__ExceptionContext *);
  void (*_store_exception)(struct __pyx_obj_4lxml_5etree__ExceptionContext *, PyObject *);
  int (*_has_raised)(struct __pyx_obj_4lxml_5etree__ExceptionContext *);
  int (*_raise_if_stored)(struct __pyx_obj_4lxml_5etree__ExceptionContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *__pyx_vtabptr_4lxml_5etree__ExceptionContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":148
 *         return repr(self._resolvers)
 * 
 * cdef class _ResolverContext(_ExceptionContext):             # <<<<<<<<<<<<<<
 *     cdef _ResolverRegistry _resolvers
 *     cdef _TempStore _storage
 */

struct __pyx_vtabstruct_4lxml_5etree__ResolverContext {
  struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__ResolverContext *__pyx_vtabptr_4lxml_5etree__ResolverContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":676
 *     return 0
 * 
 * cdef class _BaseParser:             # <<<<<<<<<<<<<<
 *     cdef ElementClassLookup _class_lookup
 *     cdef _ResolverRegistry _resolvers
 */

struct __pyx_vtabstruct_4lxml_5etree__BaseParser {
  struct __pyx_obj_4lxml_5etree__ParserContext *(*_getParserContext)(struct __pyx_obj_4lxml_5etree__BaseParser *);
  struct __pyx_obj_4lxml_5etree__ParserContext *(*_getPushParserContext)(struct __pyx_obj_4lxml_5etree__BaseParser *);
  struct __pyx_obj_4lxml_5etree__ParserContext *(*_createContext)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *);
  xmlParserCtxt *(*_newParserCtxt)(struct __pyx_obj_4lxml_5etree__BaseParser *);
  xmlParserCtxt *(*_newPushParserCtxt)(struct __pyx_obj_4lxml_5etree__BaseParser *);
  struct __pyx_obj_4lxml_5etree__BaseParser *(*_copy)(struct __pyx_obj_4lxml_5etree__BaseParser *);
  xmlDoc *(*_parseUnicodeDoc)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, char *);
  xmlDoc *(*_parseDoc)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *, Py_ssize_t, char *);
  xmlDoc *(*_parseDocFromFile)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *);
  xmlDoc *(*_parseDocFromFilelike)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseParser *__pyx_vtabptr_4lxml_5etree__BaseParser;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1006
 * ############################################################
 * 
 * cdef class _FeedParser(_BaseParser):             # <<<<<<<<<<<<<<
 *     cdef bint _feed_parser_running
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree__FeedParser {
  struct __pyx_vtabstruct_4lxml_5etree__BaseParser __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__FeedParser *__pyx_vtabptr_4lxml_5etree__FeedParser;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1185
 *     )
 * 
 * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
 *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, target=None, compact=True)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_XMLParser {
  struct __pyx_vtabstruct_4lxml_5etree__FeedParser __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_XMLParser *__pyx_vtabptr_4lxml_5etree_XMLParser;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTagMatcherType;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2097
 * 
 * 
 * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
 *                                        type LxmlElementTagMatcherType ]:
 *     cdef object _pystrings
 */

struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher {
  PyObject *(*_initTagMatch)(struct LxmlElementTagMatcher *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtabptr_4lxml_5etree__ElementTagMatcher;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1349
 * 
 * 
 * cdef class __ContentOnlyElement(_Element):             # <<<<<<<<<<<<<<
 *     cdef int _raiseImmutable(self) except -1:
 *         raise TypeError, u"this element does not have children or attributes"
 */

struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement {
  int (*_raiseImmutable)(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *);
};
static struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1448
 *             return u"<?%s?>" % self.target
 * 
 * cdef class _Entity(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__Entity {
  struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__Entity *__pyx_vtabptr_4lxml_5etree__Entity;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":129
 *     """
 * 
 * cdef class EntityBase(_Entity):             # <<<<<<<<<<<<<<
 *     u"""All custom Entity classes must inherit from this one.
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_EntityBase {
  struct __pyx_vtabstruct_4lxml_5etree__Entity __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_EntityBase *__pyx_vtabptr_4lxml_5etree_EntityBase;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":31
 * # Base class for XSLT and XPath evaluation contexts: functions, namespaces, ...
 * 
 * cdef class _BaseContext:             # <<<<<<<<<<<<<<
 *     cdef xpath.xmlXPathContext* _xpathCtxt
 *     cdef _Document _doc
 */

struct __pyx_vtabstruct_4lxml_5etree__BaseContext {
  struct __pyx_obj_4lxml_5etree__BaseContext *(*_copy)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*_to_utf)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *);
  void (*_set_xpath_context)(struct __pyx_obj_4lxml_5etree__BaseContext *, xmlXPathContext *);
  PyObject *(*_register_context)(struct __pyx_obj_4lxml_5etree__BaseContext *, struct LxmlDocument *);
  PyObject *(*_cleanup_context)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*_release_context)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*addNamespace)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *);
  PyObject *(*registerNamespace)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *);
  PyObject *(*registerLocalNamespaces)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*registerGlobalNamespaces)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*unregisterGlobalNamespaces)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  void (*_unregisterNamespace)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *);
  void (*_addLocalExtensionFunction)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *, PyObject *);
  void (*registerGlobalFunctions)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function);
  void (*registerLocalFunctions)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function);
  PyObject *(*unregisterAllFunctions)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function);
  PyObject *(*unregisterGlobalFunctions)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function);
  PyObject *(*_find_cached_function)(struct __pyx_obj_4lxml_5etree__BaseContext *, char *, char *);
  PyObject *(*_release_temp_refs)(struct __pyx_obj_4lxml_5etree__BaseContext *);
  PyObject *(*_hold)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *);
  struct LxmlDocument *(*_findDocumentForNode)(struct __pyx_obj_4lxml_5etree__BaseContext *, xmlNode *);
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseContext *__pyx_vtabptr_4lxml_5etree__BaseContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":50
 * 
 * 
 * cdef class _XPathContext(_BaseContext):             # <<<<<<<<<<<<<<
 *     cdef object _variables
 *     def __init__(self, namespaces, extensions, enable_regexp, variables,
 */

struct __pyx_vtabstruct_4lxml_5etree__XPathContext {
  struct __pyx_vtabstruct_4lxml_5etree__BaseContext __pyx_base;
  PyObject *(*set_context)(struct __pyx_obj_4lxml_5etree__XPathContext *, xmlXPathContext *);
  PyObject *(*register_context)(struct __pyx_obj_4lxml_5etree__XPathContext *, struct LxmlDocument *);
  PyObject *(*unregister_context)(struct __pyx_obj_4lxml_5etree__XPathContext *);
  PyObject *(*registerVariables)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *);
  PyObject *(*registerVariable)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *, PyObject *);
  void (*_registerVariable)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *, PyObject *);
  void (*_setupDict)(struct __pyx_obj_4lxml_5etree__XPathContext *, xmlXPathContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathContext *__pyx_vtabptr_4lxml_5etree__XPathContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":26
 *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
 * 
 * cdef class XMLSchema(_Validator):             # <<<<<<<<<<<<<<
 *     u"""XMLSchema(self, etree=None, file=None)
 *     Turn a document into an XML Schema validator.
 */

struct __pyx_vtabstruct_4lxml_5etree_XMLSchema {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *(*_newSaxValidator)(struct __pyx_obj_4lxml_5etree_XMLSchema *, int);
};
static struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *__pyx_vtabptr_4lxml_5etree_XMLSchema;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":527
 * 
 * 
 * cdef class iterwalk:             # <<<<<<<<<<<<<<
 *     u"""iterwalk(self, element_or_tree, events=("end",), tag=None)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_iterwalk {
  void (*_setTagFilter)(struct __pyx_obj_4lxml_5etree_iterwalk *, PyObject *);
  int (*_start_node)(struct __pyx_obj_4lxml_5etree_iterwalk *, struct LxmlElement *);
  struct LxmlElement *(*_end_node)(struct __pyx_obj_4lxml_5etree_iterwalk *);
};
static struct __pyx_vtabstruct_4lxml_5etree_iterwalk *__pyx_vtabptr_4lxml_5etree_iterwalk;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlFallbackElementClassLookupType;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":159
 *         self._lookup_function = NULL # use default lookup
 * 
 * cdef public class FallbackElementClassLookup(ElementClassLookup) \             # <<<<<<<<<<<<<<
 *          [ type LxmlFallbackElementClassLookupType,
 *            object LxmlFallbackElementClassLookup ]:
 */

struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup {
  void (*_setFallback)(struct LxmlFallbackElementClassLookup *, struct LxmlElementClassLookup *);
};
static struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":282
 * # attribute based lookup scheme
 * 
 * cdef class AttributeBasedElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""AttributeBasedElementClassLookup(self, attribute_name, class_mapping, fallback=None)
 *     Checks an attribute of an Element and looks up the value in a
 */

struct __pyx_vtabstruct_4lxml_5etree_AttributeBasedElementClassLookup {
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_AttributeBasedElementClassLookup *__pyx_vtabptr_4lxml_5etree_AttributeBasedElementClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":105
 *             return ErrorLevels._getName(self.level, u"unknown")
 * 
 * cdef class _BaseErrorLog:             # <<<<<<<<<<<<<<
 *     cdef _LogEntry _first_error
 *     cdef readonly object last_error
 */

struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog {
  void (*_receive)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, xmlError *);
  void (*_receiveGeneric)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int, int, int, int, PyObject *, PyObject *);
  PyObject *(*_buildParseException)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *, PyObject *);
  PyObject *(*_buildExceptionMessage)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":192
 *         return message
 * 
 * cdef class _ListErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
 *     u"Immutable base version of a list based error log."
 *     cdef list _entries
 */

struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog {
  struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog *__pyx_vtabptr_4lxml_5etree__ListErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":312
 *         return self.filter_from_level(ErrorLevels.WARNING)
 * 
 * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         _ListErrorLog.__init__(self, [], None, None)
 */

struct __pyx_vtabstruct_4lxml_5etree__ErrorLog {
  struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog __pyx_base;
  void (*connect)(struct __pyx_obj_4lxml_5etree__ErrorLog *);
  void (*disconnect)(struct __pyx_obj_4lxml_5etree__ErrorLog *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *__pyx_vtabptr_4lxml_5etree__ErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":342
 *         self._entries.append(entry)
 * 
 * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
 *     def __init__(self, domains):
 *         _ErrorLog.__init__(self)
 */

struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog {
  struct __pyx_vtabstruct_4lxml_5etree__ErrorLog __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog *__pyx_vtabptr_4lxml_5etree__DomainErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":311
 *         return c_ctxt.node.next
 * 
 * cdef class iterparse(_BaseParser):             # <<<<<<<<<<<<<<
 *     u"""iterparse(self, source, events=("end",), tag=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, remove_blank_text=False, remove_comments=False, remove_pis=False, encoding=None, html=False, huge_tree=False, schema=None)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_iterparse {
  struct __pyx_vtabstruct_4lxml_5etree__BaseParser __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_iterparse *__pyx_vtabptr_4lxml_5etree_iterparse;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":259
 * ############################################################
 * 
 * cdef class _FileReaderContext:             # <<<<<<<<<<<<<<
 *     cdef object _filelike
 *     cdef object _encoding
 */

struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext {
  xmlParserInputBuffer *(*_createParserInputBuffer)(struct __pyx_obj_4lxml_5etree__FileReaderContext *);
  xmlParserInput *(*_createParserInput)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, xmlParserCtxt *);
  xmlDtd *(*_readDtd)(struct __pyx_obj_4lxml_5etree__FileReaderContext *);
  xmlDoc *(*_readDoc)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, xmlParserCtxt *, int);
  int (*copyToBuffer)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, char *, int);
};
static struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *__pyx_vtabptr_4lxml_5etree__FileReaderContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":11
 *     SAX_EVENT_COMMENT = 32
 * 
 * cdef class _SaxParserTarget:             # <<<<<<<<<<<<<<
 *     cdef int _sax_event_filter
 *     cdef int _sax_event_propagate
 */

struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget {
  PyObject *(*_handleSaxStart)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_handleSaxEnd)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *);
  int (*_handleSaxData)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *);
  int (*_handleSaxDoctype)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *);
  PyObject *(*_handleSaxPi)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *);
  PyObject *(*_handleSaxComment)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *__pyx_vtabptr_4lxml_5etree__SaxParserTarget;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":332
 * ############################################################
 * 
 * cdef class TreeBuilder(_SaxParserTarget):             # <<<<<<<<<<<<<<
 *     u"""TreeBuilder(self, element_factory=None, parser=None)
 *     Parser target that builds a tree.
 */

struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder {
  struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget __pyx_base;
  int (*_flush)(struct __pyx_obj_4lxml_5etree_TreeBuilder *);
};
static struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *__pyx_vtabptr_4lxml_5etree_TreeBuilder;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1418
 *         return []
 * 
 * cdef class _Comment(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__Comment {
  struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__Comment *__pyx_vtabptr_4lxml_5etree__Comment;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":50
 * # XSLT document loaders
 * 
 * cdef class _XSLTResolverContext(_ResolverContext):             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* _c_style_doc
 *     cdef _BaseParser _parser
 */

struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext {
  struct __pyx_vtabstruct_4lxml_5etree__ResolverContext __pyx_base;
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *(*_copy)(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *__pyx_vtabptr_4lxml_5etree__XSLTResolverContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":194
 * 
 * # class for temporary storage of Python references
 * cdef class _TempStore:             # <<<<<<<<<<<<<<
 *     cdef list _storage
 *     def __init__(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__TempStore {
  int (*add)(struct __pyx_obj_4lxml_5etree__TempStore *, PyObject *);
  int (*clear)(struct __pyx_obj_4lxml_5etree__TempStore *);
};
static struct __pyx_vtabstruct_4lxml_5etree__TempStore *__pyx_vtabptr_4lxml_5etree__TempStore;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementIteratorType;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2125
 *                 self._name = NULL
 * 
 * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
 *     object LxmlElementIterator, type LxmlElementIteratorType ]:
 *     # we keep Python references here to control GC
 */

struct __pyx_vtabstruct_4lxml_5etree__ElementIterator {
  struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher __pyx_base;
  void (*_storeNext)(struct LxmlElementIterator *, struct LxmlElement *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *__pyx_vtabptr_4lxml_5etree__ElementIterator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2180
 *             self._node = _elementFactory(node._doc, c_node)
 * 
 * cdef class SiblingsIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""SiblingsIterator(self, node, tag=None, preceding=False)
 *     Iterates over the siblings of an element.
 */

struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator {
  struct __pyx_vtabstruct_4lxml_5etree__ElementIterator __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator *__pyx_vtabptr_4lxml_5etree_SiblingsIterator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":304
 * # output to file-like objects
 * 
 * cdef class _FilelikeWriter:             # <<<<<<<<<<<<<<
 *     cdef object _filelike
 *     cdef object _close_filelike
 */

struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter {
  xmlOutputBuffer *(*_createOutputBuffer)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, xmlCharEncodingHandler *);
  int (*write)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, char *, int);
  int (*close)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *);
};
static struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *__pyx_vtabptr_4lxml_5etree__FilelikeWriter;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1426
 *         return u"<!--%s-->" % self.text
 * 
 * cdef class _ProcessingInstruction(__ContentOnlyElement):             # <<<<<<<<<<<<<<
 *     property tag:
 *         def __get__(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction {
  struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction *__pyx_vtabptr_4lxml_5etree__ProcessingInstruction;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":115
 *     """
 * 
 * cdef class PIBase(_ProcessingInstruction):             # <<<<<<<<<<<<<<
 *     u"""All custom Processing Instruction classes must inherit from this one.
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_PIBase {
  struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_PIBase *__pyx_vtabptr_4lxml_5etree_PIBase;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":270
 * cdef dict EMPTY_DICT = {}
 * 
 * cdef class _XSLTContext(_BaseContext):             # <<<<<<<<<<<<<<
 *     cdef xslt.xsltTransformContext* _xsltCtxt
 *     cdef _ReadOnlyElementProxy _extension_element_proxy
 */

struct __pyx_vtabstruct_4lxml_5etree__XSLTContext {
  struct __pyx_vtabstruct_4lxml_5etree__BaseContext __pyx_base;
  PyObject *(*register_context)(struct __pyx_obj_4lxml_5etree__XSLTContext *, xsltTransformContext *, struct LxmlDocument *);
  PyObject *(*free_context)(struct __pyx_obj_4lxml_5etree__XSLTContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *__pyx_vtabptr_4lxml_5etree__XSLTContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":327
 * 
 * 
 * cdef class XSLT:             # <<<<<<<<<<<<<<
 *     u"""XSLT(self, xslt_input, extensions=None, regexp=True, access_control=None)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_XSLT {
  xmlDoc *(*_run_transform)(struct __pyx_obj_4lxml_5etree_XSLT *, xmlDoc *, PyObject *, struct __pyx_obj_4lxml_5etree__XSLTContext *, xsltTransformContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree_XSLT *__pyx_vtabptr_4lxml_5etree_XSLT;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":351
 *             _ErrorLog.receive(self, entry)
 * 
 * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
 *     cdef int _max_len
 *     def __init__(self, max_len):
 */

struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog {
  struct __pyx_vtabstruct_4lxml_5etree__ErrorLog __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog *__pyx_vtabptr_4lxml_5etree__RotatingErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":13
 *         self.result = result
 * 
 * cdef class _PythonSaxParserTarget(_SaxParserTarget):             # <<<<<<<<<<<<<<
 *     cdef object _target_start
 *     cdef object _target_end
 */

struct __pyx_vtabstruct_4lxml_5etree__PythonSaxParserTarget {
  struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__PythonSaxParserTarget *__pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":14
 * 
 * 
 * cdef class _NamespaceRegistry:             # <<<<<<<<<<<<<<
 *     u"Dictionary-like namespace registry"
 *     cdef object _ns_uri
 */

struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry {
  PyObject *(*_get)(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *, PyObject *);
  PyObject *(*_getForString)(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *, char *);
};
static struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry *__pyx_vtabptr_4lxml_5etree__NamespaceRegistry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":186
 *         return registry
 * 
 * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):             # <<<<<<<<<<<<<<
 *     def __setitem__(self, name, item):
 *         if not callable(item):
 */

struct __pyx_vtabstruct_4lxml_5etree__FunctionNamespaceRegistry {
  struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__FunctionNamespaceRegistry *__pyx_vtabptr_4lxml_5etree__FunctionNamespaceRegistry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":41
 * # Logging classes
 * 
 * cdef class _LogEntry:             # <<<<<<<<<<<<<<
 *     cdef readonly object domain
 *     cdef readonly object type
 */

struct __pyx_vtabstruct_4lxml_5etree__LogEntry {
  PyObject *(*_setError)(struct __pyx_obj_4lxml_5etree__LogEntry *, xmlError *);
  PyObject *(*_setGeneric)(struct __pyx_obj_4lxml_5etree__LogEntry *, int, int, int, int, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__LogEntry *__pyx_vtabptr_4lxml_5etree__LogEntry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":470
 * ############################################################
 * 
 * cdef class _ParserContext(_ResolverContext):             # <<<<<<<<<<<<<<
 *     cdef _ErrorLog _error_log
 *     cdef _ParserSchemaValidationContext _validator
 */

struct __pyx_vtabstruct_4lxml_5etree__ParserContext {
  struct __pyx_vtabstruct_4lxml_5etree__ResolverContext __pyx_base;
  struct __pyx_obj_4lxml_5etree__ParserContext *(*_copy)(struct __pyx_obj_4lxml_5etree__ParserContext *);
  void (*_initParserContext)(struct __pyx_obj_4lxml_5etree__ParserContext *, xmlParserCtxt *);
  void (*_resetParserContext)(struct __pyx_obj_4lxml_5etree__ParserContext *);
  int (*prepare)(struct __pyx_obj_4lxml_5etree__ParserContext *);
  int (*cleanup)(struct __pyx_obj_4lxml_5etree__ParserContext *);
  PyObject *(*_handleParseResult)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *);
  xmlDoc *(*_handleParseResultDoc)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserContext *__pyx_vtabptr_4lxml_5etree__ParserContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":102
 *     _XPATH_VERSION_WARNING_REQUIRED = 0
 * 
 * cdef class _XPathEvaluatorBase:             # <<<<<<<<<<<<<<
 *     cdef xpath.xmlXPathContext* _xpathCtxt
 *     cdef _XPathContext _context
 */

struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase {
  PyObject *(*set_context)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, xmlXPathContext *);
  int (*_checkAbsolutePath)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, char *);
  int (*_lock)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *);
  void (*_unlock)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *);
  PyObject *(*_raise_parse_error)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *);
  PyObject *(*_raise_eval_error)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *);
  PyObject *(*_handle_result)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, xmlXPathObject *, struct LxmlDocument *);
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase *__pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":223
 * 
 * 
 * cdef class XPathElementEvaluator(_XPathEvaluatorBase):             # <<<<<<<<<<<<<<
 *     u"""XPathElementEvaluator(self, element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     Create an XPath evaluator for an element.
 */

struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator {
  struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *__pyx_vtabptr_4lxml_5etree_XPathElementEvaluator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":101
 *                 raise TypeError, "Invalid child type: %r" % type(child)
 * 
 * cdef class CommentBase(_Comment):             # <<<<<<<<<<<<<<
 *     u"""All custom Comment classes must inherit from this one.
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_CommentBase {
  struct __pyx_vtabstruct_4lxml_5etree__Comment __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_CommentBase *__pyx_vtabptr_4lxml_5etree_CommentBase;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":170
 *         return context
 * 
 * cdef class _ParserSchemaValidationContext:             # <<<<<<<<<<<<<<
 *     cdef XMLSchema _schema
 *     cdef xmlschema.xmlSchemaValidCtxt* _valid_ctxt
 */

struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *(*copy)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *);
  void (*inject_default_attributes)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *, xmlDoc *);
  int (*connect)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *, xmlParserCtxt *);
  void (*disconnect)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *);
  int (*isvalid)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *__pyx_vtabptr_4lxml_5etree__ParserSchemaValidationContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2157
 *         return current_node
 * 
 * cdef class ElementChildIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""ElementChildIterator(self, node, tag=None, reversed=False)
 *     Iterates over the children of an element.
 */

struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator {
  struct __pyx_vtabstruct_4lxml_5etree__ElementIterator __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator *__pyx_vtabptr_4lxml_5etree_ElementChildIterator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":332
 * #  per-parser lookup scheme
 * 
 * cdef class ParserBasedElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""ParserBasedElementClassLookup(self, fallback=None)
 *     Element class lookup based on the XML parser.
 */

struct __pyx_vtabstruct_4lxml_5etree_ParserBasedElementClassLookup {
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_ParserBasedElementClassLookup *__pyx_vtabptr_4lxml_5etree_ParserBasedElementClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":31
 *         return None
 * 
 * cdef class _SaxParserContext(_ParserContext):             # <<<<<<<<<<<<<<
 *     u"""This class maps SAX2 events to method calls.
 *     """
 */

struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext {
  struct __pyx_vtabstruct_4lxml_5etree__ParserContext __pyx_base;
  void (*_setSaxParserTarget)(struct __pyx_obj_4lxml_5etree__SaxParserContext *, struct __pyx_obj_4lxml_5etree__SaxParserTarget *);
  void (*_handleSaxException)(struct __pyx_obj_4lxml_5etree__SaxParserContext *, xmlParserCtxt *);
};
static struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *__pyx_vtabptr_4lxml_5etree__SaxParserContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":814
 *     return __findStylesheetByID(doc, id=id)
 * 
 * cdef class _XSLTProcessingInstruction(PIBase):             # <<<<<<<<<<<<<<
 *     def parseXSL(self, parser=None):
 *         u"""Try to parse the stylesheet referenced by this PI and return an
 */

struct __pyx_vtabstruct_4lxml_5etree__XSLTProcessingInstruction {
  struct __pyx_vtabstruct_4lxml_5etree_PIBase __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTProcessingInstruction *__pyx_vtabptr_4lxml_5etree__XSLTProcessingInstruction;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":62
 *     return count
 * 
 * cdef class _IterparseContext(_ParserContext):             # <<<<<<<<<<<<<<
 *     cdef xmlparser.startElementNsSAX2Func _origSaxStart
 *     cdef xmlparser.endElementNsSAX2Func   _origSaxEnd
 */

struct __pyx_vtabstruct_4lxml_5etree__IterparseContext {
  struct __pyx_vtabstruct_4lxml_5etree__ParserContext __pyx_base;
  PyObject *(*_setEventFilter)(struct __pyx_obj_4lxml_5etree__IterparseContext *, PyObject *, PyObject *);
  int (*startNode)(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *);
  int (*endNode)(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *);
  int (*pushEvent)(struct __pyx_obj_4lxml_5etree__IterparseContext *, PyObject *, xmlNode *);
  void (*_assureDocGetsFreed)(struct __pyx_obj_4lxml_5etree__IterparseContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *__pyx_vtabptr_4lxml_5etree__IterparseContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":378
 * 
 * 
 * cdef class XPath(_XPathEvaluatorBase):             # <<<<<<<<<<<<<<
 *     u"""XPath(self, path, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     A compiled XPath expression that can be called on Elements and ElementTrees.
 */

struct __pyx_vtabstruct_4lxml_5etree_XPath {
  struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_XPath *__pyx_vtabptr_4lxml_5etree_XPath;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":349
 * #  custom class lookup based on node type, namespace, name
 * 
 * cdef class CustomElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""CustomElementClassLookup(self, fallback=None)
 *     Element class lookup based on a subclass method.
 */

struct __pyx_vtabstruct_4lxml_5etree_CustomElementClassLookup {
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_CustomElementClassLookup *__pyx_vtabptr_4lxml_5etree_CustomElementClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":3
 * # read-only tree implementation
 * 
 * cdef class _ReadOnlyElementProxy:             # <<<<<<<<<<<<<<
 *     u"The main read-only Element proxy class (for internal use only!)."
 *     cdef bint _free_after_use
 */

struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy {
  int (*_assertNode)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *);
  void (*free_after_use)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *);
  PyObject *(*getchildren)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *__pyx_vtabptr_4lxml_5etree__ReadOnlyElementProxy;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":279
 *     del sourceProxy._dependent_proxies[:]
 * 
 * cdef class _AppendOnlyElementProxy(_ReadOnlyElementProxy):             # <<<<<<<<<<<<<<
 *     u"""A read-only element that allows adding children and changing the
 *     text content (i.e. everything that adds to the subtree).
 */

struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy {
  struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy __pyx_base;
  PyObject *(*append)(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *__pyx_vtabptr_4lxml_5etree__AppendOnlyElementProxy;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":450
 * _find_namespaces = re.compile('({[^}]+})').findall
 * 
 * cdef class ETXPath(XPath):             # <<<<<<<<<<<<<<
 *     u"""ETXPath(self, path, extensions=None, regexp=True)
 *     Special XPath class that supports the ElementTree {uri} notation for namespaces.
 */

struct __pyx_vtabstruct_4lxml_5etree_ETXPath {
  struct __pyx_vtabstruct_4lxml_5etree_XPath __pyx_base;
  PyObject *(*_nsextract_path)(struct __pyx_obj_4lxml_5etree_ETXPath *, PyObject *);
};
static struct __pyx_vtabstruct_4lxml_5etree_ETXPath *__pyx_vtabptr_4lxml_5etree_ETXPath;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":81
 *         python.PyDict_Clear(self._entries)
 * 
 * cdef class _ClassNamespaceRegistry(_NamespaceRegistry):             # <<<<<<<<<<<<<<
 *     u"Dictionary-like registry for namespace implementation classes"
 *     def __setitem__(self, name, item):
 */

struct __pyx_vtabstruct_4lxml_5etree__ClassNamespaceRegistry {
  struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__ClassNamespaceRegistry *__pyx_vtabptr_4lxml_5etree__ClassNamespaceRegistry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":95
 * 
 * 
 * cdef class ElementNamespaceClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""ElementNamespaceClassLookup(self, fallback=None)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_ElementNamespaceClassLookup {
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementNamespaceClassLookup *__pyx_vtabptr_4lxml_5etree_ElementNamespaceClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":407
 * # read-only tree based class lookup
 * 
 * cdef class PythonElementClassLookup(FallbackElementClassLookup):             # <<<<<<<<<<<<<<
 *     u"""PythonElementClassLookup(self, fallback=None)
 *     Element class lookup based on a subclass method.
 */

struct __pyx_vtabstruct_4lxml_5etree_PythonElementClassLookup {
  struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_PythonElementClassLookup *__pyx_vtabptr_4lxml_5etree_PythonElementClassLookup;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":298
 * 
 * 
 * cdef class XPathDocumentEvaluator(XPathElementEvaluator):             # <<<<<<<<<<<<<<
 *     u"""XPathDocumentEvaluator(self, etree, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 *     Create an XPath evaluator for an ElementTree.
 */

struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator {
  struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator *__pyx_vtabptr_4lxml_5etree_XPathDocumentEvaluator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":167
 * # XSLT file/network access control
 * 
 * cdef class XSLTAccessControl:             # <<<<<<<<<<<<<<
 *     u"""XSLTAccessControl(self, read_file=True, write_file=True, create_dir=True, read_network=True, write_network=True)
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl {
  PyObject *(*_setAccess)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltSecurityOption, PyObject *);
  void (*_register_in_context)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltTransformContext *);
  PyObject *(*_optval)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltSecurityOption);
};
static struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *__pyx_vtabptr_4lxml_5etree_XSLTAccessControl;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTreeType;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1535
 * 
 * 
 * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
 *                                  object LxmlElementTree ]:
 *     cdef _Document _doc
 */

struct __pyx_vtabstruct_4lxml_5etree__ElementTree {
  PyObject *(*_assertHasRoot)(struct LxmlElementTree *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementTree *__pyx_vtabptr_4lxml_5etree__ElementTree;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":660
 *     return new_xslt
 * 
 * cdef class _XSLTResultTree(_ElementTree):             # <<<<<<<<<<<<<<
 *     cdef XSLT _xslt
 *     cdef _Document _profile
 */

struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree {
  struct __pyx_vtabstruct_4lxml_5etree__ElementTree __pyx_base;
  PyObject *(*_saveToStringAndSize)(struct __pyx_obj_4lxml_5etree__XSLTResultTree *, char **, int *);
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree *__pyx_vtabptr_4lxml_5etree__XSLTResultTree;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":375
 * # EXSLT regexp implementation
 * 
 * cdef class _ExsltRegExp:             # <<<<<<<<<<<<<<
 *     cdef dict _compile_map
 *     def __init__(self):
 */

struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp {
  PyObject *(*_make_string)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, PyObject *);
  PyObject *(*_compile)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, PyObject *, PyObject *);
  PyObject *(*_register_in_context)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, struct __pyx_obj_4lxml_5etree__BaseContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *__pyx_vtabptr_4lxml_5etree__ExsltRegExp;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2194
 *         self._storeNext(node)
 * 
 * cdef class AncestorsIterator(_ElementIterator):             # <<<<<<<<<<<<<<
 *     u"""AncestorsIterator(self, node, tag=None)
 *     Iterates over the ancestors of an element (from parent to parent).
 */

struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator {
  struct __pyx_vtabstruct_4lxml_5etree__ElementIterator __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator *__pyx_vtabptr_4lxml_5etree_AncestorsIterator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":362
 *         self._entries.append(entry)
 * 
 * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
 *     u"""PyErrorLog(self, logger_name=None)
 *     A global error log that connects to the Python stdlib logging package.
 */

struct __pyx_vtabstruct_4lxml_5etree_PyErrorLog {
  struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_PyErrorLog *__pyx_vtabptr_4lxml_5etree_PyErrorLog;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2203
 *         self._storeNext(node)
 * 
 * cdef class ElementDepthFirstIterator(_ElementTagMatcher):             # <<<<<<<<<<<<<<
 *     u"""ElementDepthFirstIterator(self, node, tag=None, inclusive=True)
 *     Iterates over an element and its sub-elements in document order (depth
 */

struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator {
  struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher __pyx_base;
  xmlNode *(*_nextNodeAnyTag)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *);
  xmlNode *(*_nextNodeMatchTag)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *);
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *__pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":199
 *         return u"FunctionNamespace(%r)" % self._ns_uri
 * 
 * cdef class _XPathFunctionNamespaceRegistry(_FunctionNamespaceRegistry):             # <<<<<<<<<<<<<<
 *     cdef object _prefix
 *     cdef object _prefix_utf
 */

struct __pyx_vtabstruct_4lxml_5etree__XPathFunctionNamespaceRegistry {
  struct __pyx_vtabstruct_4lxml_5etree__FunctionNamespaceRegistry __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_vtabptr_4lxml_5etree__XPathFunctionNamespaceRegistry;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":58
 *     return (_elementTreeFactory(doc, None), _IDDict(doc))
 * 
 * cdef class _IDDict:             # <<<<<<<<<<<<<<
 *     u"""IDDict(self, etree)
 *     A dictionary-like proxy class that mapps ID attributes to elements.
 */

struct __pyx_vtabstruct_4lxml_5etree__IDDict {
  PyObject *(*_build_keys)(struct __pyx_obj_4lxml_5etree__IDDict *);
  PyObject *(*_build_items)(struct __pyx_obj_4lxml_5etree__IDDict *);
};
static struct __pyx_vtabstruct_4lxml_5etree__IDDict *__pyx_vtabptr_4lxml_5etree__IDDict;

__PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlDocumentType;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":251
 * # Public Python API
 * 
 * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]:             # <<<<<<<<<<<<<<
 *     u"""Internal base class to reference a libxml document.
 * 
 */

struct __pyx_vtabstruct_4lxml_5etree__Document {
  PyObject *(*getroot)(struct LxmlDocument *);
  int (*hasdoctype)(struct LxmlDocument *);
  PyObject *(*getdoctype)(struct LxmlDocument *);
  PyObject *(*getxmlinfo)(struct LxmlDocument *);
  PyObject *(*isstandalone)(struct LxmlDocument *);
  PyObject *(*buildNewPrefix)(struct LxmlDocument *);
  xmlNs *(*_findOrBuildNodeNs)(struct LxmlDocument *, xmlNode *, char *, char *);
  int (*_setNodeNs)(struct LxmlDocument *, xmlNode *, char *);
};
static struct __pyx_vtabstruct_4lxml_5etree__Document *__pyx_vtabptr_4lxml_5etree__Document;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":40
 *     pass
 * 
 * cdef class _ParserDictionaryContext:             # <<<<<<<<<<<<<<
 *     # Global parser context to share the string dictionary.
 *     #
 */

struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext {
  void (*initMainParserContext)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *);
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *(*_findThreadParserContext)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *);
  void (*setDefaultParser)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__BaseParser *);
  struct __pyx_obj_4lxml_5etree__BaseParser *(*getDefaultParser)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *);
  xmlDict *(*_getThreadDict)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDict *);
  void (*initThreadDictRef)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDict **);
  void (*initParserDict)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlParserCtxt *);
  void (*initXPathParserDict)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlXPathContext *);
  void (*initDocDict)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDoc *);
  struct __pyx_obj_4lxml_5etree__ParserContext *(*findImpliedContext)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *);
  void (*pushImpliedContextFromParser)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__BaseParser *);
  void (*pushImpliedContext)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__ParserContext *);
  void (*popImpliedContext)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *);
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *__pyx_vtabptr_4lxml_5etree__ParserDictionaryContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1267
 *                              target, None, encoding)
 * 
 * cdef class ETCompatXMLParser(XMLParser):             # <<<<<<<<<<<<<<
 *     u"""ETCompatXMLParser(self, encoding=None, attribute_defaults=False, \
 *                  dtd_validation=False, load_dtd=False, no_network=True, \
 */

struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser {
  struct __pyx_vtabstruct_4lxml_5etree_XMLParser __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser *__pyx_vtabptr_4lxml_5etree_ETCompatXMLParser;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":93
 * 
 * 
 * cdef class _TargetParserContext(_SaxParserContext):             # <<<<<<<<<<<<<<
 *     u"""This class maps SAX2 events to the ET parser target interface.
 *     """
 */

struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext {
  struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext __pyx_base;
  int (*_setTarget)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, PyObject *);
  void (*_cleanupTargetParserContext)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, xmlDoc *);
};
static struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *__pyx_vtabptr_4lxml_5etree__TargetParserContext;


/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1343
 *     )
 * 
 * cdef class HTMLParser(_FeedParser):             # <<<<<<<<<<<<<<
 *     u"""HTMLParser(self, encoding=None, remove_blank_text=False, \
 *                    remove_comments=False, remove_pis=False, strip_cdata=True, \
 */

struct __pyx_vtabstruct_4lxml_5etree_HTMLParser {
  struct __pyx_vtabstruct_4lxml_5etree__FeedParser __pyx_base;
};
static struct __pyx_vtabstruct_4lxml_5etree_HTMLParser *__pyx_vtabptr_4lxml_5etree_HTMLParser;

#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif

#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct * __Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
  end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
  }
  #define __Pyx_RefNannySetupContext(name)           void *__pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
  #define __Pyx_RefNannyFinishContext()           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r);} } while(0)
#else
  #define __Pyx_RefNannySetupContext(name)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
#endif /* CYTHON_REFNANNY */
#define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);} } while(0)
#define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r);} } while(0)

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name, PyObject* kw_name); /*proto*/

static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/

static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static CYTHON_INLINE long __Pyx_mod_long(long, long); /* proto */

static CYTHON_INLINE long __Pyx_div_long(long, long); /* proto */

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict,
    const char* function_name, int kw_allowed); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void);

static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t index); /*proto*/
static int __Pyx_EndUnpack(PyObject *); /*proto*/

static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/

static CYTHON_INLINE long __Pyx_NegateNonNeg(long b) { return unlikely(b < 0) ? b : !b; }
static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) {
    return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b);
}

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t); /* proto */


static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}


#define __Pyx_GetItemInt_List(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_List_Fast(o, i, size <= sizeof(long)) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    if (likely(o != Py_None)) {
        if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
            PyObject *r = PyList_GET_ITEM(o, i);
            Py_INCREF(r);
            return r;
        }
        else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
            PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
            Py_INCREF(r);
            return r;
        }
    }
    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
}

#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_Tuple_Fast(o, i, size <= sizeof(long)) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    if (likely(o != Py_None)) {
        if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, i);
            Py_INCREF(r);
            return r;
        }
        else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
            PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
            Py_INCREF(r);
            return r;
        }
    }
    return __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
}


#define __Pyx_GetItemInt(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_GetItemInt_Fast(o, i, size <= sizeof(long)) : \
                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    PyObject *r;
    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        r = PyList_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (PyTuple_CheckExact(o) && ((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
        r = PyTuple_GET_ITEM(o, i);
        Py_INCREF(r);
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_item && (likely(i >= 0))) {
        r = PySequence_GetItem(o, i);
    }
    else {
        r = __Pyx_GetItemInt_Generic(o, fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i));
    }
    return r;
}

#define __Pyx_DelItemInt(o, i, size, to_py_func) ((size <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_DelItemInt_Fast(o, i, size <= sizeof(long)) : \
                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))

static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
    int r;
    if (!j) return -1;
    r = PyObject_DelItem(o, j);
    Py_DECREF(j);
    return r;
}

static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, int fits_long) {
    if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && likely(i >= 0))
        return PySequence_DelItem(o, i);
    else {
        PyObject *j = fits_long ? PyInt_FromLong(i) : PyLong_FromLongLong(i);
        return __Pyx_DelItem_Generic(o, j);
    }
}

static PyObject* __Pyx_PyEval_CallObjectWithKeywords(PyObject*, PyObject*, PyObject*); /*proto*/

#if PY_VERSION_HEX < 0x02050000
#ifndef PyAnySet_CheckExact

#define PyAnySet_CheckExact(ob) \
    ((ob)->ob_type == &PySet_Type || \
     (ob)->ob_type == &PyFrozenSet_Type)

#define PySet_New(iterable) \
    PyObject_CallFunctionObjArgs((PyObject *)&PySet_Type, (iterable), NULL)

#define Pyx_PyFrozenSet_New(iterable) \
    PyObject_CallFunctionObjArgs((PyObject *)&PyFrozenSet_Type, (iterable), NULL)

#define PySet_Size(anyset) \
    PyObject_Size((anyset))

#define PySet_Contains(anyset, key) \
    PySequence_Contains((anyset), (key))

#define PySet_Pop(set) \
    PyObject_CallMethod(set, (char *)"pop", NULL)

static CYTHON_INLINE int PySet_Clear(PyObject *set) {
    PyObject *ret = PyObject_CallMethod(set, (char *)"clear", NULL);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}

static CYTHON_INLINE int PySet_Discard(PyObject *set, PyObject *key) {
    PyObject *ret = PyObject_CallMethod(set, (char *)"discard", (char *)"O", key);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}

static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) {
    PyObject *ret = PyObject_CallMethod(set, (char *)"add", (char *)"O", key);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}

#endif /* PyAnySet_CheckExact (<= Py2.4) */

#if PY_VERSION_HEX < 0x02040000
#ifndef Py_SETOBJECT_H
#define Py_SETOBJECT_H

static PyTypeObject *__Pyx_PySet_Type = NULL;
static PyTypeObject *__Pyx_PyFrozenSet_Type = NULL;

#define PySet_Type (*__Pyx_PySet_Type)
#define PyFrozenSet_Type (*__Pyx_PyFrozenSet_Type)

#define PyAnySet_Check(ob) \
    (PyAnySet_CheckExact(ob) || \
     PyType_IsSubtype((ob)->ob_type, &PySet_Type) || \
     PyType_IsSubtype((ob)->ob_type, &PyFrozenSet_Type))

#define PyFrozenSet_CheckExact(ob) ((ob)->ob_type == &PyFrozenSet_Type)

static int __Pyx_Py23SetsImport(void) {
    PyObject *sets=0, *Set=0, *ImmutableSet=0;

    sets = PyImport_ImportModule((char *)"sets");
    if (!sets) goto bad;
    Set = PyObject_GetAttrString(sets, (char *)"Set");
    if (!Set) goto bad;
    ImmutableSet = PyObject_GetAttrString(sets, (char *)"ImmutableSet");
    if (!ImmutableSet) goto bad;
    Py_DECREF(sets);

    __Pyx_PySet_Type       = (PyTypeObject*) Set;
    __Pyx_PyFrozenSet_Type = (PyTypeObject*) ImmutableSet;

    return 0;

 bad:
    Py_XDECREF(sets);
    Py_XDECREF(Set);
    Py_XDECREF(ImmutableSet);
    return -1;
}

#else
static int __Pyx_Py23SetsImport(void) { return 0; }
#endif /* !Py_SETOBJECT_H */
#endif /* < Py2.4  */
#endif /* < Py2.5  */

static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/

#include <string.h>

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact); /*proto*/

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, const char *modname); /*proto*/

static int __Pyx_Print(PyObject *, int); /*proto*/
#if PY_MAJOR_VERSION >= 3
static PyObject* __pyx_print = 0;
static PyObject* __pyx_print_kwargs = 0;
#endif

static int __Pyx_PrintOne(PyObject *o); /*proto*/

#include "descrobject.h"
static PyObject* __Pyx_Method_ClassMethod(PyObject *method); /*proto*/

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/

static PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); /*proto*/

#ifndef __PYX_FORCE_INIT_THREADS
  #if PY_VERSION_HEX < 0x02040200
    #define __PYX_FORCE_INIT_THREADS 1
  #else
    #define __PYX_FORCE_INIT_THREADS 0
  #endif
#endif

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);

static void __Pyx_WriteUnraisable(const char *name); /*proto*/

static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/

static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/

static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, long size, int strict);  /*proto*/

static PyObject *__Pyx_ImportModule(const char *name); /*proto*/

static void __Pyx_AddTraceback(const char *funcname); /*proto*/

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
/* Module declarations from lxml.cstd */

/* Module declarations from lxml.tree */

/* Module declarations from __builtin__ */

/* Module declarations from lxml.python */

static PyTypeObject *__pyx_ptype_4lxml_6python_slice = 0;
static PyTypeObject *__pyx_ptype_4lxml_6python_unicode = 0;
/* Module declarations from lxml.config */

/* Module declarations from lxml.xmlerror */

/* Module declarations from lxml.xpath */

/* Module declarations from lxml.c14n */

/* Module declarations from lxml.xmlparser */

/* Module declarations from lxml.htmlparser */

/* Module declarations from lxml.xinclude */

/* Module declarations from lxml.xslt */

/* Module declarations from lxml.dtdvalid */

/* Module declarations from lxml.relaxng */

/* Module declarations from lxml.xmlschema */

/* Module declarations from lxml.schematron */

/* Module declarations from lxml.etree */

static PyTypeObject *__pyx_ptype_4lxml_5etree__TempStore = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ExceptionContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Document = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Element = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__BaseParser = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_QName = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__LogEntry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__BaseErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ListErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__DomainErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__RotatingErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_PyErrorLog = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_DocInfo = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree___ContentOnlyElement = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Comment = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ProcessingInstruction = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Entity = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ElementTree = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Attrib = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__AttribIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ElementTagMatcher = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ElementIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementChildIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_SiblingsIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_AncestorsIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementTextIterator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_CDATA = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__AppendOnlyElementProxy = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementBase = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_CommentBase = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_PIBase = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_EntityBase = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_FallbackElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementDefaultClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_AttributeBasedElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ParserBasedElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_CustomElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_PythonElementClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__NamespaceRegistry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ClassNamespaceRegistry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ElementNamespaceClassLookup = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__FunctionNamespaceRegistry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XPathFunctionNamespaceRegistry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__InputDocument = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_Resolver = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ResolverRegistry = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ResolverContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ParserContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__SaxParserContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__TargetParserContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ParserSchemaValidationContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__Validator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XMLSchema = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ParserDictionaryContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__FileReaderContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__FeedParser = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XMLParser = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ETCompatXMLParser = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_HTMLParser = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__SaxParserTarget = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_TreeBuilder = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__PythonSaxParserTarget = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__FilelikeWriter = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__IterparseContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_iterparse = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_iterwalk = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__IDDict = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XInclude = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ExsltRegExp = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__BaseContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__ElementUnicodeResult = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XPathContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XPathEvaluatorBase = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XPathElementEvaluator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XPathDocumentEvaluator = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XPath = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_ETXPath = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XSLTResolverContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XSLTAccessControl = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XSLTContext = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XSLTQuotedStringParam = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XSLT = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XSLTResultTree = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_XSLTExtension = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_DTD = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_RelaxNG = 0;
static PyTypeObject *__pyx_ptype_4lxml_5etree_Schematron = 0;
static PyObject *__pyx_v_4lxml_5etree__unicode = 0;
static PyObject *__pyx_v_4lxml_5etree_os_path_abspath = 0;
static PyObject *__pyx_v_4lxml_5etree_BytesIO = 0;
static PyObject *__pyx_v_4lxml_5etree_StringIO = 0;
static PyObject *__pyx_v_4lxml_5etree__elementpath = 0;
static PyObject *__pyx_v_4lxml_5etree_sys = 0;
static PyObject *__pyx_v_4lxml_5etree_re = 0;
static PyObject *__pyx_v_4lxml_5etree_gzip = 0;
static PyObject *__pyx_v_4lxml_5etree_ITER_EMPTY = 0;
static PyObject *__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT = 0;
static PyObject *__pyx_v_4lxml_5etree__FILENAME_ENCODING = 0;
static char *__pyx_v_4lxml_5etree__C_FILENAME_ENCODING;
static PyObject *__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES = 0;
static PyObject *__pyx_v_4lxml_5etree__LxmlError = 0;
static PyObject *__pyx_v_4lxml_5etree_error_super_init = 0;
static int __pyx_v_4lxml_5etree__LIBXML_VERSION_INT;
static PyObject *__pyx_v_4lxml_5etree___RE_XML_ENCODING = 0;
static PyObject *__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING = 0;
static PyObject *__pyx_v_4lxml_5etree___HAS_XML_ENCODING = 0;
static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG = 0;
static PyObject *__pyx_v_4lxml_5etree___ERROR_LEVELS = 0;
static PyObject *__pyx_v_4lxml_5etree___ERROR_DOMAINS = 0;
static PyObject *__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES = 0;
static PyObject *__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES = 0;
static PyObject *__pyx_v_4lxml_5etree__PREFIX_CACHE = 0;
static _element_class_lookup_function __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS;
static PyObject *__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE = 0;
static struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP = 0;
static PyObject *__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES = 0;
static PyObject *__pyx_v_4lxml_5etree__XMLSyntaxError = 0;
static struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT = 0;
static char *__pyx_v_4lxml_5etree__UNICODE_ENCODING;
static xmlExternalEntityLoader __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER;
static int __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS;
static struct __pyx_obj_4lxml_5etree_XMLParser *__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER = 0;
static int __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS;
static struct __pyx_obj_4lxml_5etree_HTMLParser *__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER = 0;
static PyObject *__pyx_v_4lxml_5etree_inspect_getargspec = 0;
static PyObject *__pyx_v_4lxml_5etree__find_id_attributes = 0;
static PyObject *__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS = 0;
static PyObject *__pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS = 0;
static int __pyx_v_4lxml_5etree__XPATH_VERSION_WARNING_REQUIRED;
static PyObject *__pyx_v_4lxml_5etree__replace_strings = 0;
static PyObject *__pyx_v_4lxml_5etree__find_namespaces = 0;
static xsltDocLoaderFunc __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER;
static PyObject *__pyx_v_4lxml_5etree_EMPTY_DICT = 0;
static PyObject *__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES = 0;
static PyObject *__pyx_v_4lxml_5etree__RE_PI_HREF = 0;
static PyObject *__pyx_v_4lxml_5etree__FIND_PI_HREF = 0;
static PyObject *__pyx_v_4lxml_5etree__REPLACE_PI_HREF = 0;
static struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_4lxml_5etree___findStylesheetByID = 0;
static struct __pyx_obj_4lxml_5etree_XPath *__pyx_v_4lxml_5etree__check_for_default_attributes = 0;
static PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int); /*proto*/
static CYTHON_INLINE struct LxmlElement *__pyx_f_4lxml_5etree_getProxy(xmlNode *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree_hasProxy(xmlNode *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__registerProxy(struct LxmlElement *, struct LxmlDocument *, xmlNode *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__unregisterProxy(struct LxmlElement *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree__releaseProxy(struct LxmlElement *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree__updateProxyDocument(xmlNode *, struct LxmlDocument *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__fakeRootDoc(xmlDoc *, xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *, xmlDoc *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct LxmlDocument *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5etree__nscache *, xmlNs *, xmlNs *); /*proto*/
static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *, __pyx_t_4lxml_5etree__nscache *, xmlNs **); /*proto*/
static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *, xmlDoc *, xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *, struct LxmlDocument *, size_t); /*proto*/
static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *, xmlDict *, xmlDict *); /*proto*/
static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *, xmlDict *, xmlDict *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(xmlAttr *, xmlDict *, xmlDict *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNameForNode(xmlNode *, xmlDict *, xmlDict *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNode *, xmlDict *, xmlDict *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *, xmlDict *, xmlDict *); /*proto*/
static void __pyx_f_4lxml_5etree_displayNode(xmlNode *, PyObject *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__documentOf(PyObject *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOf(PyObject *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *, xmlDoc *, struct LxmlDocument *, struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *, int, PyObject *, PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *, PyObject *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__initNodeNamespaces(xmlNode *, struct LxmlDocument *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *, struct LxmlDocument *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *, xmlAttr *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *, char *, char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__getAttributeValue(struct LxmlElement *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *, char *, char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__stripDeclaration(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasTail(xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree__removeText(xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__setNodeText(xmlNode *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__setTailText(xmlNode *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *); /*proto*/
static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__findChildSlice(PySliceObject *, xmlNode *, xmlNode **, Py_ssize_t *, Py_ssize_t *); /*proto*/
static int __pyx_f_4lxml_5etree__isFullSlice(PySliceObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *, Py_ssize_t); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *, Py_ssize_t); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *, Py_ssize_t); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *, char *, char *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *, char *, char *); /*proto*/
static int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *, int, int); /*proto*/
static void __pyx_f_4lxml_5etree__moveTail(xmlNode *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__copyTail(xmlNode *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *, xmlNode *, Py_ssize_t, Py_ssize_t); /*proto*/
static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *, xmlNode *, Py_ssize_t, Py_ssize_t, int, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *, struct LxmlElement *); /*proto*/
static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *, struct LxmlElement *); /*proto*/
static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *, struct LxmlElement *); /*proto*/
static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *, struct LxmlElement *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(char *); /*proto*/
static int __pyx_f_4lxml_5etree_check_string_utf8(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree_funicode(char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__isFilePath(char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__decodeFilename(char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(char *); /*proto*/
static int __pyx_f_4lxml_5etree__htmlNameIsValid(char *); /*proto*/
static int __pyx_f_4lxml_5etree__characterReferenceIsValid(char *); /*proto*/
static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(char *, char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *); /*proto*/
static void __pyx_f_4lxml_5etree__nullGenericErrorFunc(void *, char *, ...); /*proto*/
static void __pyx_f_4lxml_5etree__initThreadLogging(void); /*proto*/
static void __pyx_f_4lxml_5etree_connectErrorLog(void *); /*proto*/
static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlobalErrorLog(void); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_5etree__BaseErrorLog *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void); /*proto*/
static void __pyx_f_4lxml_5etree__forwardError(void *, xmlError *); /*proto*/
static void __pyx_f_4lxml_5etree__receiveError(void *, xmlError *); /*proto*/
static void __pyx_f_4lxml_5etree__receiveXSLTError(void *, char *, ...); /*proto*/
static void __pyx_f_4lxml_5etree___initErrorConstants(void); /*proto*/
static PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocument *, xmlNode *); /*proto*/
static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct LxmlDocument *, struct LxmlElement *); /*proto*/
static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlDocument *, struct LxmlElement *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlElement *, int); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *, PyObject *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *, char *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *, char *, char *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *, char *); /*proto*/
static struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_f_4lxml_5etree__newReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *, xmlNode *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *, struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *); /*proto*/
static struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_f_4lxml_5etree__newAppendOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *, xmlNode *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__callLookupFallback(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_lookup_function, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *, struct LxmlDocument *, xmlNode *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__find_extension(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxml_5etree__ResolverContext *, struct __pyx_obj_4lxml_5etree__ResolverRegistry *); /*proto*/
static int __pyx_f_4lxml_5etree__checkThreadDict(xmlDict *); /*proto*/
static void __pyx_f_4lxml_5etree__setupPythonUnicode(void); /*proto*/
static char *__pyx_f_4lxml_5etree__findEncodingName(char *, int); /*proto*/
static int __pyx_f_4lxml_5etree__readFilelikeParser(void *, char *, int); /*proto*/
static int __pyx_f_4lxml_5etree__readFileParser(void *, char *, int); /*proto*/
static xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(char *, char *, xmlParserCtxt *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__ResolverRegistry *, xmlParserCtxt *); /*proto*/
static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *, PyObject *, struct __pyx_obj_4lxml_5etree__ErrorLog *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5etree__ParserContext *, xmlParserCtxt *, xmlDoc *, PyObject *, int); /*proto*/
static int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *, xmlDoc *); /*proto*/
static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *, xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *, char *, int, char *, int); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *, PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *, PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *, int); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *, xmlNode *); /*proto*/
static xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *, xmlDoc *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *, PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static struct LxmlDocument *__pyx_f_4lxml_5etree__parseFilelikeDocument(PyObject *, PyObject *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxStart(void *, char *, char *, char *, int, char **, int, int, char **); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *, char *, char **); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxEnd(void *, char *, char *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxData(void *, char *, int); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxCData(void *, char *, int); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxDoctype(void *, char *, char *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxPI(void *, char *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__handleSaxComment(void *, char *); /*proto*/
static int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *, PyObject *, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *, PyObject *, PyObject *, int, int, int, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int); /*proto*/
static void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *, xmlNode *, char *, int, int, int, int, int, int); /*proto*/
static void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *, char *, char *, int); /*proto*/
static void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *, xmlDoc *, char *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *, xmlNode *, char *, int); /*proto*/
static void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *, xmlNode *, char *, int); /*proto*/
static void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *, xmlNode *, char *, int); /*proto*/
static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *, char *, int); /*proto*/
static int __pyx_f_4lxml_5etree__closeFilelikeWriter(void *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *, struct LxmlElement *, PyObject *, PyObject *, int, int, int, int, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *, struct LxmlElement *, int, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__dumpToFile(PyObject *, xmlNode *, int, int); /*proto*/
static int __pyx_f_4lxml_5etree__buildIterparseEventFilter(PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *); /*proto*/
static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *, PyObject *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *); /*proto*/
static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *, PyObject *, xmlNode *); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxStart(void *, char *, char *, char *, int, char **, int, int, char **); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxEnd(void *, char *, char *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxStartNoNs(void *, char *, char **); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxEndNoNs(void *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxComment(void *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__iterparseSaxPI(void *, char *, char *); /*proto*/
static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__iterparseFindLastNode(xmlParserCtxt *); /*proto*/
static void __pyx_f_4lxml_5etree__collectIdHashItemDict(void *, void *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__collectIdHashItemList(void *, void *, char *); /*proto*/
static void __pyx_f_4lxml_5etree__collectIdHashKeys(void *, void *, char *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *, char **, Py_ssize_t); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *, xmlNode *, char **, Py_ssize_t, int, int, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *, xmlNode *, char **, Py_ssize_t, int, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__sortedTagList(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__filterSpecialTagNames(PyObject *, int *, int *, int *); /*proto*/
static Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToCharArray(xmlDoc *, PyObject *, char **); /*proto*/
static xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *, struct LxmlDocument *, struct __pyx_obj_4lxml_5etree__BaseContext *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *, struct LxmlDocument *, struct __pyx_obj_4lxml_5etree__BaseContext *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *, xmlNode *, struct LxmlDocument *, struct __pyx_obj_4lxml_5etree__BaseContext *, int); /*proto*/
static void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *); /*proto*/
static struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xmlNode *, struct LxmlDocument *, struct __pyx_obj_4lxml_5etree__BaseContext *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *, struct LxmlElement *, int, int); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocument *, xmlNode *, struct __pyx_obj_4lxml_5etree__BaseContext *); /*proto*/
static void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, xmlXPathParserContext *, int); /*proto*/
static void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *, int); /*proto*/
static int __pyx_f_4lxml_5etree__register_xpath_function(void *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__unregister_xpath_function(void *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *, struct __pyx_obj_4lxml_5etree__BaseParser *); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(char *, void *, int, int *); /*proto*/
static void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(char *, void *, xsltLoadType); /*proto*/
static xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(char *, xmlDict *, int, void *, xsltLoadType); /*proto*/
static int __pyx_f_4lxml_5etree__register_xslt_function(void *, PyObject *, PyObject *); /*proto*/
static int __pyx_f_4lxml_5etree__unregister_xslt_function(void *, PyObject *, PyObject *); /*proto*/
static struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct __pyx_obj_4lxml_5etree_XSLT *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument *, struct __pyx_obj_4lxml_5etree_XSLT *, struct LxmlDocument *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *, PyObject *); /*proto*/
static PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformContext *, PyObject *); /*proto*/
static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *, xmlNode *, xmlNode *, void *); /*proto*/
static xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *); /*proto*/
static struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDtd *); /*proto*/
DL_EXPORT(struct LxmlElement) *deepcopyNodeToDocument(struct LxmlDocument *, xmlNode *); /*proto*/
DL_EXPORT(struct LxmlElementTree) *elementTreeFactory(struct LxmlElement *); /*proto*/
DL_EXPORT(struct LxmlElementTree) *newElementTree(struct LxmlElement *, PyObject *); /*proto*/
DL_EXPORT(struct LxmlElement) *elementFactory(struct LxmlDocument *, xmlNode *); /*proto*/
DL_EXPORT(struct LxmlElement) *makeElement(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
DL_EXPORT(struct LxmlElement) *makeSubElement(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
DL_EXPORT(void) setElementClassLookupFunction(_element_class_lookup_function, PyObject *); /*proto*/
DL_EXPORT(PyObject) *lookupDefaultElementClass(PyObject *, PyObject *, xmlNode *); /*proto*/
DL_EXPORT(PyObject) *lookupNamespaceElementClass(PyObject *, PyObject *, xmlNode *); /*proto*/
DL_EXPORT(PyObject) *callLookupFallback(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *); /*proto*/
DL_EXPORT(int) tagMatches(xmlNode *, char *, char *); /*proto*/
DL_EXPORT(struct LxmlDocument) *documentOrRaise(PyObject *); /*proto*/
DL_EXPORT(struct LxmlElement) *rootNodeOrRaise(PyObject *); /*proto*/
DL_EXPORT(int) hasText(xmlNode *); /*proto*/
DL_EXPORT(int) hasTail(xmlNode *); /*proto*/
DL_EXPORT(PyObject) *textOf(xmlNode *); /*proto*/
DL_EXPORT(PyObject) *tailOf(xmlNode *); /*proto*/
DL_EXPORT(int) setNodeText(xmlNode *, PyObject *); /*proto*/
DL_EXPORT(int) setTailText(xmlNode *, PyObject *); /*proto*/
DL_EXPORT(PyObject) *attributeValue(xmlNode *, xmlAttr *); /*proto*/
DL_EXPORT(PyObject) *attributeValueFromNsName(xmlNode *, char *, char *); /*proto*/
DL_EXPORT(PyObject) *getAttributeValue(struct LxmlElement *, PyObject *, PyObject *); /*proto*/
DL_EXPORT(PyObject) *iterattributes(struct LxmlElement *, int); /*proto*/
DL_EXPORT(PyObject) *collectAttributes(xmlNode *, int); /*proto*/
DL_EXPORT(int) setAttributeValue(struct LxmlElement *, PyObject *, PyObject *); /*proto*/
DL_EXPORT(int) delAttribute(struct LxmlElement *, PyObject *); /*proto*/
DL_EXPORT(int) delAttributeFromNsName(xmlNode *, char *, char *); /*proto*/
DL_EXPORT(int) hasChild(xmlNode *); /*proto*/
DL_EXPORT(xmlNode) *findChild(xmlNode *, Py_ssize_t); /*proto*/
DL_EXPORT(xmlNode) *findChildForwards(xmlNode *, Py_ssize_t); /*proto*/
DL_EXPORT(xmlNode) *findChildBackwards(xmlNode *, Py_ssize_t); /*proto*/
DL_EXPORT(xmlNode) *nextElement(xmlNode *); /*proto*/
DL_EXPORT(xmlNode) *previousElement(xmlNode *); /*proto*/
DL_EXPORT(void) appendChild(struct LxmlElement *, struct LxmlElement *); /*proto*/
DL_EXPORT(PyObject) *pyunicode(char *); /*proto*/
DL_EXPORT(PyObject) *utf8(PyObject *); /*proto*/
DL_EXPORT(PyObject) *getNsTag(PyObject *); /*proto*/
DL_EXPORT(PyObject) *namespacedName(xmlNode *); /*proto*/
DL_EXPORT(PyObject) *namespacedNameFromNsName(char *, char *); /*proto*/
DL_EXPORT(void) iteratorStoreNext(struct LxmlElementIterator *, struct LxmlElement *); /*proto*/
DL_EXPORT(void) initTagMatch(struct LxmlElementTagMatcher *, PyObject *); /*proto*/
DL_EXPORT(xmlNs) *findOrBuildNodeNsPrefix(struct LxmlDocument *, xmlNode *, char *, char *); /*proto*/
#define __Pyx_MODULE_NAME "lxml.etree"
int __pyx_module_is_main_lxml__etree = 0;

/* Implementation of lxml.etree */
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_Exception;
static PyObject *__pyx_builtin_SyntaxError;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_UnicodeEncodeError;
static PyObject *__pyx_builtin_UnicodeDecodeError;
static PyObject *__pyx_builtin_IndexError;
static PyObject *__pyx_builtin_id;
static PyObject *__pyx_builtin_FutureWarning;
static PyObject *__pyx_builtin_StopIteration;
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_IOError;
static PyObject *__pyx_builtin_LookupError;
static PyObject *__pyx_builtin_open;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_getattr;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_AssertionError;
static char __pyx_k_1[] = "-";
static char __pyx_k_2[] = ".";
static char __pyx_k_3[] = "double registering proxy!";
static char __pyx_k_4[] = "Tried to unregister unknown proxy";
static char __pyx_k_5[] = " ";
static char __pyx_k_6[] = "Invalid input object: %s";
static char __pyx_k_7[] = "Input object has no document: %s";
static char __pyx_k_8[] = "Input object has no element: %s";
static char __pyx_k_9[] = "Invalid attribute dictionary: %s";
static char __pyx_k_10[] = "\\g<1>";
static char __pyx_k_11[] = "<?xml";
static char __pyx_k_12[] = "?>";
static char __pyx_k_13[] = "\n\r ";
static char __pyx_k_14[] = "";
static char __pyx_k_15[] = "%s:%s";
static char __pyx_k_16[] = "attempt to assign sequence of size %d to extended slice of size %d";
static char __pyx_k_17[] = "Node must not be None";
static char __pyx_k_18[] = "Argument must be string or unicode.";
static char __pyx_k_19[] = "All strings must be XML compatible: Unicode or ASCII, no NULL bytes";
static char __pyx_k_20[] = "UTF-8";
static char __pyx_k_21[] = "Invalid tag name";
static char __pyx_k_22[] = "Empty tag name";
static char __pyx_k_23[] = "Invalid tag name %r";
static char __pyx_k_24[] = "Invalid HTML tag name %r";
static char __pyx_k_25[] = "Invalid attribute name %r";
static char __pyx_k_26[] = "Invalid namespace prefix %r";
static char __pyx_k_27[] = "{%s}%s";
static char __pyx_k_28[] = "PyUnicode_DecodeASCII";
static char __pyx_k_29[] = "<undecodable error message>";
static char __pyx_k_30[] = "<string>";
static char __pyx_k_31[] = "%s:%d:%d:%s:%s:%s: %s";
static char __pyx_k_32[] = "%s, line %d, column %d";
static char __pyx_k_33[] = "%s, line %d";
static char __pyx_k_34[] = "\n";
static char __pyx_k_35[] = "file %s";
static char __pyx_k_36[] = "string://__STRING__XSLT";
static char __pyx_k_37[] = "<xslt>";
static char __pyx_k_38[] = "line %d";
static char __pyx_k_39[] = "element %s";
static char __pyx_k_40[] = "%s, element '%s'";
static char __pyx_k_41[] = "\\s*([a-zA-Z0-9_]+)\\s*=\\s*([0-9]+)";
static char __pyx_k_42[] = "ns%d";
static char __pyx_k_43[] = "invalid node type %d, expected %d";
static char __pyx_k_44[] = "Could not find root node";
static char __pyx_k_45[] = "<!DOCTYPE %s PUBLIC \"%s\" \"%s\">";
static char __pyx_k_46[] = "<!DOCTYPE %s PUBLIC \"%s\">";
static char __pyx_k_47[] = "<!DOCTYPE %s SYSTEM \"%s\">";
static char __pyx_k_48[] = "<!DOCTYPE %s>";
static char __pyx_k_49[] = "cannot assign None";
static char __pyx_k_50[] = "list index out of range";
static char __pyx_k_51[] = "index out of range: %d";
static char __pyx_k_52[] = "Only processing instructions and comments can be siblings of the root element";
static char __pyx_k_53[] = "Element is not a child of this node.";
static char __pyx_k_54[] = "<Element %s at %x>";
static char __pyx_k_55[] = "The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.";
static char __pyx_k_56[] = "list.index(x): x not in slice";
static char __pyx_k_57[] = "list.index(x): x not in list";
static char __pyx_k_62[] = "this element does not have children or attributes";
static char __pyx_k_63[] = "<!--%s-->";
static char __pyx_k_64[] = "ProcessingInstruction";
static char __pyx_k_65[] = "<?%s %s?>";
static char __pyx_k_66[] = "<?%s?>";
static char __pyx_k_67[] = "&";
static char __pyx_k_68[] = ";";
static char __pyx_k_69[] = "Invalid entity name '%s'";
static char __pyx_k_70[] = "&%s;";
static char __pyx_k_71[] = "text_or_uri_or_element";
static char __pyx_k_72[] = "Invalid input tag of type %r";
static char __pyx_k_73[] = "ElementTree not initialized, missing root";
static char __pyx_k_74[] = "Only elements can be the root of an ElementTree";
static char __pyx_k_77[] = "US-ASCII";
static char __pyx_k_78[] = "Element is not in this tree.";
static char __pyx_k_79[] = "/";
static char __pyx_k_83[] = "pop expected at most 2 arguments, got %d";
static char __pyx_k_88[] = "Invalid character reference: '%s'";
static char __pyx_k_89[] = "Invalid entity reference: '%s'";
static char __pyx_k_94[] = "Serialisation to unicode must not request an XML declaration";
static char __pyx_k_95[] = "Type '%s' cannot be serialized.";
static char __pyx_k_98[] = "Proxy invalidated!";
static char __pyx_k__A[] = "A";
static char __pyx_k__B[] = "B";
static char __pyx_k__U[] = "U";
static char __pyx_k___[] = "_";
static char __pyx_k__f[] = "f";
static char __pyx_k__g[] = "g";
static char __pyx_k__i[] = "i";
static char __pyx_k__s[] = "s";
static char __pyx_k_100[] = "*";
static char __pyx_k_101[] = "invalid value to append()";
static char __pyx_k_102[] = "invalid element";
static char __pyx_k_103[] = "Invalid child type: %r";
static char __pyx_k_104[] = "element class must be subclass of ElementBase";
static char __pyx_k_105[] = "comment class must be subclass of CommentBase";
static char __pyx_k_106[] = "Entity class must be subclass of EntityBase";
static char __pyx_k_107[] = "PI class must be subclass of PIBase";
static char __pyx_k_108[] = "xml-stylesheet";
static char __pyx_k_109[] = "text/xsl";
static char __pyx_k_110[] = "text/xml";
static char __pyx_k_111[] = "Unknown node type: %s";
static char __pyx_k_112[] = "Name not registered.";
static char __pyx_k_113[] = "NamespaceRegistryError";
static char __pyx_k_114[] = "Registered element classes must be subtypes of ElementBase";
static char __pyx_k_115[] = "Namespace(%r)";
static char __pyx_k_116[] = "_namespace_registries";
static char __pyx_k_117[] = "Registered functions must be callable.";
static char __pyx_k_118[] = "extensions must have non empty names";
static char __pyx_k_119[] = "FunctionNamespace(%r)";
static char __pyx_k_120[] = "argument must be a byte string or unicode string";
static char __pyx_k_121[] = "Argument is not a file-like object";
static char __pyx_k_122[] = "_implied_parser_contexts";
static char __pyx_k_123[] = "_ParserDictionaryContext";
static char __pyx_k_124[] = "_findThreadParserContext";
static char __pyx_k_125[] = "<test/>";
static char __pyx_k_126[] = "UTF-16LE";
static char __pyx_k_127[] = "UTF-16BE";
static char __pyx_k_128[] = "UCS-4LE";
static char __pyx_k_129[] = "UCS-4BE";
static char __pyx_k_130[] = "_createParserInputBuffer";
static char __pyx_k_131[] = "reading from file-like objects must return byte strings or unicode strings";
static char __pyx_k_132[] = "parser locking failed";
static char __pyx_k_133[] = "Error reading file '%s': %s";
static char __pyx_k_134[] = "Error reading '%s'";
static char __pyx_k_135[] = "_buildParseException";
static char __pyx_k_136[] = "Document is not well formed";
static char __pyx_k_137[] = "line %d: %s";
static char __pyx_k_138[] = "WAR_UNDECLARED_ENTITY";
static char __pyx_k_139[] = "ERR_UNDECLARED_ENTITY";
static char __pyx_k_140[] = "_add_default_attributes";
static char __pyx_k_141[] = "inject_default_attributes";
static char __pyx_k_142[] = "This class cannot be instantiated";
static char __pyx_k_143[] = "unknown encoding: '%s'";
static char __pyx_k_144[] = "processingInstruction";
static char __pyx_k_145[] = "_push_parser_context";
static char __pyx_k_146[] = "libxml2 %d.%d.%d";
static char __pyx_k_147[] = "set_element_class_lookup";
static char __pyx_k_148[] = "_handleParseResultDoc";
static char __pyx_k_149[] = "string is too long to parse it with libxml2";
static char __pyx_k_150[] = "_getPushParserContext";
static char __pyx_k_151[] = "Unicode parsing is not supported on this platform";
static char __pyx_k_152[] = "Parsing requires string data";
static char __pyx_k_153[] = "_feed_parser_running";
static char __pyx_k_154[] = "no element found";
static char __pyx_k_188[] = "_parseDocFromFilelike";
static char __pyx_k_189[] = "cannot parse from '%s'";
static char __pyx_k_190[] = "Unicode strings with encoding declaration are not supported.";
static char __pyx_k_191[] = "can only parse strings";
static char __pyx_k_192[] = "_sax_event_propagate";
static char __pyx_k_193[] = "internal error (tail)";
static char __pyx_k_194[] = "internal error (text)";
static char __pyx_k_195[] = "missing end tags";
static char __pyx_k_196[] = "missing toplevel element";
static char __pyx_k_197[] = "end tag mismatch (expected %s, got %s)";
static char __pyx_k_198[] = "_cleanupTargetParserContext";
static char __pyx_k_199[] = "unknown output method %r";
static char __pyx_k_200[] = "Error during serialisation (out of memory?)";
static char __pyx_k_201[] = "unknown error %d";
static char __pyx_k_202[] = "1.0";
static char __pyx_k_203[] = "<?xml version='";
static char __pyx_k_204[] = "' encoding='";
static char __pyx_k_205[] = "' standalone='no'?>\n";
static char __pyx_k_206[] = "' standalone='yes'?>\n";
static char __pyx_k_207[] = "'?>\n";
static char __pyx_k_208[] = "<!DOCTYPE ";
static char __pyx_k_209[] = " PUBLIC \"";
static char __pyx_k_210[] = "\" \"";
static char __pyx_k_211[] = " SYSTEM \"";
static char __pyx_k_212[] = "\"";
static char __pyx_k_213[] = ">\n";
static char __pyx_k_214[] = " [\n";
static char __pyx_k_215[] = "]>\n";
static char __pyx_k_216[] = "Could not create I/O writer context.";
static char __pyx_k_217[] = "File is already closed";
static char __pyx_k_218[] = "File or filename expected, got '%s'";
static char __pyx_k_219[] = "C14N failed";
static char __pyx_k_220[] = "not a file";
static char __pyx_k_221[] = "start-ns";
static char __pyx_k_222[] = "end-ns";
static char __pyx_k_223[] = "invalid event name '%s'";
static char __pyx_k_237[] = "iterparse parsers cannot be copied";
static char __pyx_k_238[] = "reading file objects must return plain strings";
static char __pyx_k_240[] = "//*[string(@id)]";
static char __pyx_k_241[] = "No ID dictionary available.";
static char __pyx_k_242[] = "key not found.";
static char __pyx_k_243[] = "ID attribute not found.";
static char __pyx_k_244[] = "pushImpliedContextFromParser";
static char __pyx_k_245[] = "_buildExceptionMessage";
static char __pyx_k_246[] = "XInclude processing failed";
static char __pyx_k_247[] = "empty namespace prefix is not supported in XPath";
static char __pyx_k_248[] = "setting default namespace is not supported in XPath";
static char __pyx_k_249[] = "_build_smart_strings";
static char __pyx_k_250[] = "_register_in_context";
static char __pyx_k_251[] = "empty prefix is not supported in XPath";
static char __pyx_k_252[] = "XPath context is only usable during the evaluation";
static char __pyx_k_253[] = "no context node";
static char __pyx_k_254[] = "document-external context nodes are not supported";
static char __pyx_k_255[] = "document context is missing";
static char __pyx_k_256[] = "http://exslt.org/regular-expressions";
static char __pyx_k_257[] = "_addLocalExtensionFunction";
static char __pyx_k_258[] = "This is not a node: %r";
static char __pyx_k_259[] = "Unknown return type: %s";
static char __pyx_k_260[] = "Undefined xpath result";
static char __pyx_k_261[] = "Unknown xpath result %s";
static char __pyx_k_262[] = "Not yet implemented result node type: %d";
static char __pyx_k_263[] = "_findDocumentForNode";
static char __pyx_k_264[] = "_ElementStringResult";
static char __pyx_k_265[] = "_find_cached_function";
static char __pyx_k_266[] = "XPath function '%s' not found";
static char __pyx_k_267[] = "registerLocalNamespaces";
static char __pyx_k_268[] = "registerLocalFunctions";
static char __pyx_k_269[] = "registerGlobalNamespaces";
static char __pyx_k_270[] = "registerGlobalFunctions";
static char __pyx_k_271[] = "unregisterGlobalFunctions";
static char __pyx_k_272[] = "unregisterGlobalNamespaces";
static char __pyx_k_273[] = "This version of libxml2 has a known XPath bug. ";
static char __pyx_k_274[] = "Use it at your own risk.";
static char __pyx_k_275[] = "Error in xpath expression";
static char __pyx_k_286[] = "__xpp%02d";
static char __pyx_k_287[] = ":";
static char __pyx_k_288[] = "string://__STRING__XSLT__/";
static char __pyx_k_289[] = "Cannot resolve URI %s";
static char __pyx_k_295[] = "%s(%s)";
static char __pyx_k_296[] = ", ";
static char __pyx_k_297[] = "%s=%r";
static char __pyx_k_298[] = "extensions must not have empty namespaces";
static char __pyx_k_300[] = "string://__STRING__XSLT__/%d.xslt";
static char __pyx_k_301[] = "_xslt_resolver_context";
static char __pyx_k_302[] = "Cannot parse stylesheet";
static char __pyx_k_305[] = "Error applying stylesheet, line %d";
static char __pyx_k_306[] = "Error applying stylesheet";
static char __pyx_k_307[] = "_saveToStringAndSize";
static char __pyx_k_308[] = "//xsl:stylesheet[@xml:id = $id]";
static char __pyx_k_309[] = "http://www.w3.org/1999/XSL/Transform";
static char __pyx_k_310[] = "PI lacks content";
static char __pyx_k_311[] = "malformed PI attributes";
static char __pyx_k_312[] = "reference to non-existing embedded stylesheet";
static char __pyx_k_313[] = "ambiguous reference to embedded stylesheet";
static char __pyx_k_314[] = "only setting the 'href' attribute is supported on XSLT-PIs";
static char __pyx_k_315[] = ">";
static char __pyx_k_316[] = "Invalid URL, must not contain '\"' or '>'";
static char __pyx_k_317[] = " href=\"%s\"";
static char __pyx_k_318[] = "fake-parent";
static char __pyx_k_319[] = "_extension_element_proxy";
static char __pyx_k_320[] = "unsupported XSLT result type: %d";
static char __pyx_k_321[] = "extension element %s not found";
static char __pyx_k_322[] = "Unsupported XSLT context node type %d, extension elements require an element";
static char __pyx_k_323[] = "Error executing extension element '%s': %s";
static char __pyx_k_324[] = "Error executing extension element '%s'";
static char __pyx_k_325[] = "Document does not comply with schema";
static char __pyx_k_326[] = "file must be a filename or file-like object";
static char __pyx_k_327[] = "either filename or external ID required";
static char __pyx_k_328[] = "error parsing DTD";
static char __pyx_k_329[] = "Failed to create validation context";
static char __pyx_k_330[] = "Internal error in DTD validation";
static char __pyx_k_331[] = "http://relaxng.org/ns/structure/1.0";
static char __pyx_k_332[] = "Document is not Relax NG";
static char __pyx_k_333[] = "No tree or file given";
static char __pyx_k_334[] = "Document is not parsable as Relax NG";
static char __pyx_k_335[] = "Document is not valid Relax NG";
static char __pyx_k_336[] = "RelaxNGValidateError";
static char __pyx_k_337[] = "Internal error in Relax NG validation";
static char __pyx_k_339[] = "_has_default_attributes";
static char __pyx_k_340[] = "_add_attribute_defaults";
static char __pyx_k_341[] = "http://www.w3.org/2001/XMLSchema";
static char __pyx_k_342[] = "Document is not XML Schema";
static char __pyx_k_343[] = "Document is not valid XML Schema";
static char __pyx_k_344[] = "XMLSchemaValidateError";
static char __pyx_k_345[] = "Internal error in XML Schema validation.";
static char __pyx_k_346[] = "lxml.etree was compiled without Schematron support.";
static char __pyx_k_347[] = "SchematronParseError";
static char __pyx_k_348[] = "Document is not a valid Schematron schema";
static char __pyx_k_349[] = "SchematronValidateError";
static char __pyx_k_350[] = "Internal error in Schematron validation";
static char __pyx_k_351[] = "Element tag\n        ";
static char __pyx_k_352[] = "Element attribute dictionary. Where possible, use get(), set(),\n        keys(), values() and items() to access element attributes.\n        ";
static char __pyx_k_353[] = "Text before the first subelement. This is either a string or \n        the value None, if there was no text.\n        ";
static char __pyx_k_354[] = "Text after this element's end tag, but before the next sibling\n        element's start tag. This is either a string or the value None, if\n        there was no text.\n        ";
static char __pyx_k_355[] = "Namespace prefix or None.\n        ";
static char __pyx_k_356[] = "Original line number as found by the parser or None if unknown.\n        ";
static char __pyx_k_357[] = "Namespace prefix->URI mapping known in the context of this Element.\n        ";
static char __pyx_k_358[] = "The base URI of the Element (xml:base or HTML base URL).\n        None if the base URI is unknown.\n\n        Note that the value depends on the URL of the document that\n        holds the Element if there is no xml:base attribute on the\n        Element or its ancestors.\n\n        Setting this property will set an xml:base attribute on the\n        Element, regardless of the document type (XML or HTML).\n        ";
static char __pyx_k_359[] = "The error log of the last parser run.\n        ";
static char __pyx_k_360[] = "The custom resolver registry of this parser.";
static char __pyx_k_361[] = "The version of the underlying XML parser.";
static char __pyx_k_362[] = "Returns the name of the root node as defined by the DOCTYPE.";
static char __pyx_k_363[] = "Returns the public ID of the DOCTYPE.";
static char __pyx_k_364[] = "Returns the system ID of the DOCTYPE.";
static char __pyx_k_365[] = "Returns the XML version as declared by the document.";
static char __pyx_k_366[] = "Returns the encoding name as declared by the document.";
static char __pyx_k_367[] = "Returns the standalone flag as declared by the document.  The possible\n        values are True (``standalone='yes'``), False\n        (``standalone='no'`` or flag not provided in the declaration),\n        and None (unknown or no declaration found).  Note that a\n        normal truth test on this value will always tell if the\n        ``standalone`` flag was set to ``'yes'`` or not.\n        ";
static char __pyx_k_368[] = "The source URL of the document (or None if unknown).";
static char __pyx_k_369[] = "Returns a DOCTYPE declaration string for the document.";
static char __pyx_k_370[] = "Returns a DTD validator based on the internal subset of the document.";
static char __pyx_k_371[] = "Returns a DTD validator based on the external subset of the document.";
static char __pyx_k_372[] = "Information about the document provided by parser and DTD.  This\n        value is only defined for ElementTree objects based on the root node\n        of a parsed document (e.g.  those returned by the parse functions),\n        not for trees that were built manually.\n        ";
static char __pyx_k_373[] = "The parser that was used to parse the document in this ElementTree.\n        ";
static char __pyx_k_374[] = "Text before the first subelement. This is either a string or the\n        value None, if there was no text.\n        ";
static char __pyx_k_375[] = "Namespace prefix for extension functions.";
static char __pyx_k_376[] = "The log of validation errors and warnings.";
static char __pyx_k_377[] = "The error log of the last (or current) run of the feed parser.\n\n        Note that this is local to the feed parser and thus is\n        different from what the ``error_log`` property returns.\n        ";
static char __pyx_k_378[] = "The error log of the last (or current) parser run.\n        ";
static char __pyx_k_379[] = "The access control configuration as a map of options.";
static char __pyx_k_380[] = "The log of errors and warnings of an XSLT execution.";
static char __pyx_k_381[] = "Return an ElementTree with profiling data for the stylesheet run.\n        ";
static char __pyx_k_382[] = "The ``lxml.etree`` module implements the extended ElementTree API\nfor XML.\n";
static char __pyx_k_383[] = "restructuredtext en";
static char __pyx_k_384[] = "os.path";
static char __pyx_k_385[] = "getfilesystemencoding";
static char __pyx_k_386[] = "http://www.w3.org/1999/xhtml";
static char __pyx_k_387[] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
static char __pyx_k_388[] = "http://schemas.xmlsoap.org/wsdl/";
static char __pyx_k_389[] = "http://www.w3.org/2001/XMLSchema-instance";
static char __pyx_k_390[] = "http://purl.org/dc/elements/1.1/";
static char __pyx_k_391[] = "http://codespeak.net/lxml/objectify/pytype";
static char __pyx_k_392[] = "Main exception base class for lxml.  All other exceptions inherit from\n    this one.\n    ";
static char __pyx_k_393[] = "Base class for all syntax errors.\n    ";
static char __pyx_k_394[] = "Error during C14N serialisation.\n    ";
static char __pyx_k_395[] = "[0-9]+";
static char __pyx_k_396[] = "Unknown libxml2 version: %s";
static char __pyx_k_397[] = "LIBXML_COMPILED_VERSION";
static char __pyx_k_398[] = "^(\\s*<\\?\\s*xml[^>]+)\\s+encoding\\s*=\\s*\"[^\"]*\"\\s*";
static char __pyx_k_399[] = "Libxml2 error levels";
static char __pyx_k_400[] = "Libxml2 error domains";
static char __pyx_k_401[] = "Libxml2 error types";
static char __pyx_k_402[] = "Libxml2 RelaxNG error types";
static char __pyx_k_403[] = "NONE=0\nWARNING=1\nERROR=2\nFATAL=3\n";
static char __pyx_k_404[] = "NONE=0\nPARSER=1\nTREE=2\nNAMESPACE=3\nDTD=4\nHTML=5\nMEMORY=6\nOUTPUT=7\nIO=8\nFTP=9\nHTTP=10\nXINCLUDE=11\nXPATH=12\nXPOINTER=13\nREGEXP=14\nDATATYPE=15\nSCHEMASP=16\nSCHEMASV=17\nRELAXNGP=18\nRELAXNGV=19\nCATALOG=20\nC14N=21\nXSLT=22\nVALID=23\nCHECK=24\nWRITER=25\nMODULE=26\nI18N=27\nSCHEMATRONV=28\n";
static char __pyx_k_405[] = "ERR_OK=0\nERR_INTERNAL_ERROR=1\nERR_NO_MEMORY=2\nERR_DOCUMENT_START=3\nERR_DOCUMENT_EMPTY=4\nERR_DOCUMENT_END=5\nERR_INVALID_HEX_CHARREF=6\nERR_INVALID_DEC_CHARREF=7\nERR_INVALID_CHARREF=8\nERR_INVALID_CHAR=9\nERR_CHARREF_AT_EOF=10\nERR_CHARREF_IN_PROLOG=11\nERR_CHARREF_IN_EPILOG=12\nERR_CHARREF_IN_DTD=13\nERR_ENTITYREF_AT_EOF=14\nERR_ENTITYREF_IN_PROLOG=15\nERR_ENTITYREF_IN_EPILOG=16\nERR_ENTITYREF_IN_DTD=17\nERR_PEREF_AT_EOF=18\nERR_PEREF_IN_PROLOG=19\nERR_PEREF_IN_EPILOG=20\nERR_PEREF_IN_INT_SUBSET=21\nERR_ENTITYREF_NO_NAME=22\nERR_ENTITYREF_SEMICOL_MISSING=23\nERR_PEREF_NO_NAME=24\nERR_PEREF_SEMICOL_MISSING=25\nERR_UNDECLARED_ENTITY=26\nWAR_UNDECLARED_ENTITY=27\nERR_UNPARSED_ENTITY=28\nERR_ENTITY_IS_EXTERNAL=29\nERR_ENTITY_IS_PARAMETER=30\nERR_UNKNOWN_ENCODING=31\nERR_UNSUPPORTED_ENCODING=32\nERR_STRING_NOT_STARTED=33\nERR_STRING_NOT_CLOSED=34\nERR_NS_DECL_ERROR=35\nERR_ENTITY_NOT_STARTED=36\nERR_ENTITY_NOT_FINISHED=37\nERR_LT_IN_ATTRIBUTE=38\nERR_ATTRIBUTE_NOT_STARTED=39\nERR_ATTRIBUTE_NOT_FINISHED=40\nERR_ATTRIBUTE_WITHOUT_VALUE=41\nERR_ATTRIBUTE_REDEFINED=42\nERR_LITERAL_NOT_STARTED=43\nERR_LITERAL_NOT_FINISHED=44\nERR_COMMENT_NOT_FINISHED=45\nERR_PI_NOT_STARTED=46\nERR_PI_NOT_FINISHED=47\nERR_NOTATION_NOT_STARTED=48\nERR_NOTATION_NOT_FINISHED=49\nERR_ATTLIST_NOT_STARTED=50\nERR_ATTLIST_NOT_FINISHED=51\nERR_MIXED_NOT_STARTED=52\nERR_MIXED_NOT_FINISHED=53\nERR_ELEMCONTENT_NOT_STARTED=54\nERR_ELEMCONTENT_NOT_FINISHED=55\nERR_XMLDECL_NOT_STARTED=56\nERR_XMLDECL_NOT_FINISHED=57\nERR_CONDSEC_NOT_STARTED=58\nERR_CONDSEC_NOT_FINISHED=59\nERR_EXT_SUBSET_NOT_FINISHED=60\nERR_DOCTYPE_NOT_FINISHED=61\nERR_MISPLACED_CDATA_END=62\nERR_CDATA_NOT_FINISHED=63\nERR_RESERVED_XML_NAME=64\nERR_SPACE_REQUIRED=65\nERR_SEPARATOR_REQUIRED=66\nERR_NMTOKEN_REQUIRED=67\nERR_NAME_REQUIRED=68\nERR_PCDATA_REQUIRED=69\nERR_URI_REQUIRED=70\nERR_PUBID_REQUIRED=71\nERR_LT_REQUIRED=72\nERR_GT_REQUIRED=73\nERR_LTSLASH_REQUIRED=74\nERR_EQUAL_REQUIRED=75\nERR_TAG_NAME_MISMATCH=76\nERR_TAG_NOT_FINISHED=77\nERR_STANDALONE_VALUE=78\n";
static char __pyx_k_406[] = "ERR_ENCODING_NAME=79\nERR_HYPHEN_IN_COMMENT=80\nERR_INVALID_ENCODING=81\nERR_EXT_ENTITY_STANDALONE=82\nERR_CONDSEC_INVALID=83\nERR_VALUE_REQUIRED=84\nERR_NOT_WELL_BALANCED=85\nERR_EXTRA_CONTENT=86\nERR_ENTITY_CHAR_ERROR=87\nERR_ENTITY_PE_INTERNAL=88\nERR_ENTITY_LOOP=89\nERR_ENTITY_BOUNDARY=90\nERR_INVALID_URI=91\nERR_URI_FRAGMENT=92\nWAR_CATALOG_PI=93\nERR_NO_DTD=94\nERR_CONDSEC_INVALID_KEYWORD=95\nERR_VERSION_MISSING=96\nWAR_UNKNOWN_VERSION=97\nWAR_LANG_VALUE=98\nWAR_NS_URI=99\nWAR_NS_URI_RELATIVE=100\nERR_MISSING_ENCODING=101\nWAR_SPACE_VALUE=102\nERR_NOT_STANDALONE=103\nERR_ENTITY_PROCESSING=104\nERR_NOTATION_PROCESSING=105\nWAR_NS_COLUMN=106\nWAR_ENTITY_REDEFINED=107\nERR_UNKNOWN_VERSION=108\nERR_VERSION_MISMATCH=109\nNS_ERR_XML_NAMESPACE=200\nNS_ERR_UNDEFINED_NAMESPACE=201\nNS_ERR_QNAME=202\nNS_ERR_ATTRIBUTE_REDEFINED=203\nNS_ERR_EMPTY=204\nNS_ERR_COLON=205\nDTD_ATTRIBUTE_DEFAULT=500\nDTD_ATTRIBUTE_REDEFINED=501\nDTD_ATTRIBUTE_VALUE=502\nDTD_CONTENT_ERROR=503\nDTD_CONTENT_MODEL=504\nDTD_CONTENT_NOT_DETERMINIST=505\nDTD_DIFFERENT_PREFIX=506\nDTD_ELEM_DEFAULT_NAMESPACE=507\nDTD_ELEM_NAMESPACE=508\nDTD_ELEM_REDEFINED=509\nDTD_EMPTY_NOTATION=510\nDTD_ENTITY_TYPE=511\nDTD_ID_FIXED=512\nDTD_ID_REDEFINED=513\nDTD_ID_SUBSET=514\nDTD_INVALID_CHILD=515\nDTD_INVALID_DEFAULT=516\nDTD_LOAD_ERROR=517\nDTD_MISSING_ATTRIBUTE=518\nDTD_MIXED_CORRUPT=519\nDTD_MULTIPLE_ID=520\nDTD_NO_DOC=521\nDTD_NO_DTD=522\nDTD_NO_ELEM_NAME=523\nDTD_NO_PREFIX=524\nDTD_NO_ROOT=525\nDTD_NOTATION_REDEFINED=526\nDTD_NOTATION_VALUE=527\nDTD_NOT_EMPTY=528\nDTD_NOT_PCDATA=529\nDTD_NOT_STANDALONE=530\nDTD_ROOT_NAME=531\nDTD_STANDALONE_WHITE_SPACE=532\nDTD_UNKNOWN_ATTRIBUTE=533\nDTD_UNKNOWN_ELEM=534\nDTD_UNKNOWN_ENTITY=535\nDTD_UNKNOWN_ID=536\nDTD_UNKNOWN_NOTATION=537\nDTD_STANDALONE_DEFAULTED=538\nDTD_XMLID_VALUE=539\nDTD_XMLID_TYPE=540\nDTD_DUP_TOKEN=541\nHTML_STRUCURE_ERROR=800\nHTML_UNKNOWN_TAG=801\nRNGP_ANYNAME_ATTR_ANCESTOR=1000\nRNGP_ATTR_CONFLICT=1001\nRNGP_ATTRIBUTE_CHILDREN=1002\nRNGP_ATTRIBUTE_CONTENT=1003\n";
static char __pyx_k_407[] = "RNGP_ATTRIBUTE_EMPTY=1004\nRNGP_ATTRIBUTE_NOOP=1005\nRNGP_CHOICE_CONTENT=1006\nRNGP_CHOICE_EMPTY=1007\nRNGP_CREATE_FAILURE=1008\nRNGP_DATA_CONTENT=1009\nRNGP_DEF_CHOICE_AND_INTERLEAVE=1010\nRNGP_DEFINE_CREATE_FAILED=1011\nRNGP_DEFINE_EMPTY=1012\nRNGP_DEFINE_MISSING=1013\nRNGP_DEFINE_NAME_MISSING=1014\nRNGP_ELEM_CONTENT_EMPTY=1015\nRNGP_ELEM_CONTENT_ERROR=1016\nRNGP_ELEMENT_EMPTY=1017\nRNGP_ELEMENT_CONTENT=1018\nRNGP_ELEMENT_NAME=1019\nRNGP_ELEMENT_NO_CONTENT=1020\nRNGP_ELEM_TEXT_CONFLICT=1021\nRNGP_EMPTY=1022\nRNGP_EMPTY_CONSTRUCT=1023\nRNGP_EMPTY_CONTENT=1024\nRNGP_EMPTY_NOT_EMPTY=1025\nRNGP_ERROR_TYPE_LIB=1026\nRNGP_EXCEPT_EMPTY=1027\nRNGP_EXCEPT_MISSING=1028\nRNGP_EXCEPT_MULTIPLE=1029\nRNGP_EXCEPT_NO_CONTENT=1030\nRNGP_EXTERNALREF_EMTPY=1031\nRNGP_EXTERNAL_REF_FAILURE=1032\nRNGP_EXTERNALREF_RECURSE=1033\nRNGP_FORBIDDEN_ATTRIBUTE=1034\nRNGP_FOREIGN_ELEMENT=1035\nRNGP_GRAMMAR_CONTENT=1036\nRNGP_GRAMMAR_EMPTY=1037\nRNGP_GRAMMAR_MISSING=1038\nRNGP_GRAMMAR_NO_START=1039\nRNGP_GROUP_ATTR_CONFLICT=1040\nRNGP_HREF_ERROR=1041\nRNGP_INCLUDE_EMPTY=1042\nRNGP_INCLUDE_FAILURE=1043\nRNGP_INCLUDE_RECURSE=1044\nRNGP_INTERLEAVE_ADD=1045\nRNGP_INTERLEAVE_CREATE_FAILED=1046\nRNGP_INTERLEAVE_EMPTY=1047\nRNGP_INTERLEAVE_NO_CONTENT=1048\nRNGP_INVALID_DEFINE_NAME=1049\nRNGP_INVALID_URI=1050\nRNGP_INVALID_VALUE=1051\nRNGP_MISSING_HREF=1052\nRNGP_NAME_MISSING=1053\nRNGP_NEED_COMBINE=1054\nRNGP_NOTALLOWED_NOT_EMPTY=1055\nRNGP_NSNAME_ATTR_ANCESTOR=1056\nRNGP_NSNAME_NO_NS=1057\nRNGP_PARAM_FORBIDDEN=1058\nRNGP_PARAM_NAME_MISSING=1059\nRNGP_PARENTREF_CREATE_FAILED=1060\nRNGP_PARENTREF_NAME_INVALID=1061\nRNGP_PARENTREF_NO_NAME=1062\nRNGP_PARENTREF_NO_PARENT=1063\nRNGP_PARENTREF_NOT_EMPTY=1064\nRNGP_PARSE_ERROR=1065\nRNGP_PAT_ANYNAME_EXCEPT_ANYNAME=1066\nRNGP_PAT_ATTR_ATTR=1067\nRNGP_PAT_ATTR_ELEM=1068\nRNGP_PAT_DATA_EXCEPT_ATTR=1069\nRNGP_PAT_DATA_EXCEPT_ELEM=1070\nRNGP_PAT_DATA_EXCEPT_EMPTY=1071\nRNGP_PAT_DATA_EXCEPT_GROUP=1072\nRNGP_PAT_DATA_EXCEPT_INTERLEAVE=1073\nRNGP_PAT_DATA_EXCEPT_LIST=1074\n";
static char __pyx_k_408[] = "RNGP_PAT_DATA_EXCEPT_ONEMORE=1075\nRNGP_PAT_DATA_EXCEPT_REF=1076\nRNGP_PAT_DATA_EXCEPT_TEXT=1077\nRNGP_PAT_LIST_ATTR=1078\nRNGP_PAT_LIST_ELEM=1079\nRNGP_PAT_LIST_INTERLEAVE=1080\nRNGP_PAT_LIST_LIST=1081\nRNGP_PAT_LIST_REF=1082\nRNGP_PAT_LIST_TEXT=1083\nRNGP_PAT_NSNAME_EXCEPT_ANYNAME=1084\nRNGP_PAT_NSNAME_EXCEPT_NSNAME=1085\nRNGP_PAT_ONEMORE_GROUP_ATTR=1086\nRNGP_PAT_ONEMORE_INTERLEAVE_ATTR=1087\nRNGP_PAT_START_ATTR=1088\nRNGP_PAT_START_DATA=1089\nRNGP_PAT_START_EMPTY=1090\nRNGP_PAT_START_GROUP=1091\nRNGP_PAT_START_INTERLEAVE=1092\nRNGP_PAT_START_LIST=1093\nRNGP_PAT_START_ONEMORE=1094\nRNGP_PAT_START_TEXT=1095\nRNGP_PAT_START_VALUE=1096\nRNGP_PREFIX_UNDEFINED=1097\nRNGP_REF_CREATE_FAILED=1098\nRNGP_REF_CYCLE=1099\nRNGP_REF_NAME_INVALID=1100\nRNGP_REF_NO_DEF=1101\nRNGP_REF_NO_NAME=1102\nRNGP_REF_NOT_EMPTY=1103\nRNGP_START_CHOICE_AND_INTERLEAVE=1104\nRNGP_START_CONTENT=1105\nRNGP_START_EMPTY=1106\nRNGP_START_MISSING=1107\nRNGP_TEXT_EXPECTED=1108\nRNGP_TEXT_HAS_CHILD=1109\nRNGP_TYPE_MISSING=1110\nRNGP_TYPE_NOT_FOUND=1111\nRNGP_TYPE_VALUE=1112\nRNGP_UNKNOWN_ATTRIBUTE=1113\nRNGP_UNKNOWN_COMBINE=1114\nRNGP_UNKNOWN_CONSTRUCT=1115\nRNGP_UNKNOWN_TYPE_LIB=1116\nRNGP_URI_FRAGMENT=1117\nRNGP_URI_NOT_ABSOLUTE=1118\nRNGP_VALUE_EMPTY=1119\nRNGP_VALUE_NO_CONTENT=1120\nRNGP_XMLNS_NAME=1121\nRNGP_XML_NS=1122\nXPATH_EXPRESSION_OK=1200\nXPATH_NUMBER_ERROR=1201\nXPATH_UNFINISHED_LITERAL_ERROR=1202\nXPATH_START_LITERAL_ERROR=1203\nXPATH_VARIABLE_REF_ERROR=1204\nXPATH_UNDEF_VARIABLE_ERROR=1205\nXPATH_INVALID_PREDICATE_ERROR=1206\nXPATH_EXPR_ERROR=1207\nXPATH_UNCLOSED_ERROR=1208\nXPATH_UNKNOWN_FUNC_ERROR=1209\nXPATH_INVALID_OPERAND=1210\nXPATH_INVALID_TYPE=1211\nXPATH_INVALID_ARITY=1212\nXPATH_INVALID_CTXT_SIZE=1213\nXPATH_INVALID_CTXT_POSITION=1214\nXPATH_MEMORY_ERROR=1215\nXPTR_SYNTAX_ERROR=1216\nXPTR_RESOURCE_ERROR=1217\nXPTR_SUB_RESOURCE_ERROR=1218\nXPATH_UNDEF_PREFIX_ERROR=1219\nXPATH_ENCODING_ERROR=1220\nXPATH_INVALID_CHAR_ERROR=1221\nTREE_INVALID_HEX=1300\nTREE_INVALID_DEC=1301\nTREE_UNTERMINATED_ENTITY=1302\n";
static char __pyx_k_409[] = "TREE_NOT_UTF8=1303\nSAVE_NOT_UTF8=1400\nSAVE_CHAR_INVALID=1401\nSAVE_NO_DOCTYPE=1402\nSAVE_UNKNOWN_ENCODING=1403\nREGEXP_COMPILE_ERROR=1450\nIO_UNKNOWN=1500\nIO_EACCES=1501\nIO_EAGAIN=1502\nIO_EBADF=1503\nIO_EBADMSG=1504\nIO_EBUSY=1505\nIO_ECANCELED=1506\nIO_ECHILD=1507\nIO_EDEADLK=1508\nIO_EDOM=1509\nIO_EEXIST=1510\nIO_EFAULT=1511\nIO_EFBIG=1512\nIO_EINPROGRESS=1513\nIO_EINTR=1514\nIO_EINVAL=1515\nIO_EIO=1516\nIO_EISDIR=1517\nIO_EMFILE=1518\nIO_EMLINK=1519\nIO_EMSGSIZE=1520\nIO_ENAMETOOLONG=1521\nIO_ENFILE=1522\nIO_ENODEV=1523\nIO_ENOENT=1524\nIO_ENOEXEC=1525\nIO_ENOLCK=1526\nIO_ENOMEM=1527\nIO_ENOSPC=1528\nIO_ENOSYS=1529\nIO_ENOTDIR=1530\nIO_ENOTEMPTY=1531\nIO_ENOTSUP=1532\nIO_ENOTTY=1533\nIO_ENXIO=1534\nIO_EPERM=1535\nIO_EPIPE=1536\nIO_ERANGE=1537\nIO_EROFS=1538\nIO_ESPIPE=1539\nIO_ESRCH=1540\nIO_ETIMEDOUT=1541\nIO_EXDEV=1542\nIO_NETWORK_ATTEMPT=1543\nIO_ENCODER=1544\nIO_FLUSH=1545\nIO_WRITE=1546\nIO_NO_INPUT=1547\nIO_BUFFER_FULL=1548\nIO_LOAD_ERROR=1549\nIO_ENOTSOCK=1550\nIO_EISCONN=1551\nIO_ECONNREFUSED=1552\nIO_ENETUNREACH=1553\nIO_EADDRINUSE=1554\nIO_EALREADY=1555\nIO_EAFNOSUPPORT=1556\nXINCLUDE_RECURSION=1600\nXINCLUDE_PARSE_VALUE=1601\nXINCLUDE_ENTITY_DEF_MISMATCH=1602\nXINCLUDE_NO_HREF=1603\nXINCLUDE_NO_FALLBACK=1604\nXINCLUDE_HREF_URI=1605\nXINCLUDE_TEXT_FRAGMENT=1606\nXINCLUDE_TEXT_DOCUMENT=1607\nXINCLUDE_INVALID_CHAR=1608\nXINCLUDE_BUILD_FAILED=1609\nXINCLUDE_UNKNOWN_ENCODING=1610\nXINCLUDE_MULTIPLE_ROOT=1611\nXINCLUDE_XPTR_FAILED=1612\nXINCLUDE_XPTR_RESULT=1613\nXINCLUDE_INCLUDE_IN_INCLUDE=1614\nXINCLUDE_FALLBACKS_IN_INCLUDE=1615\nXINCLUDE_FALLBACK_NOT_IN_INCLUDE=1616\nXINCLUDE_DEPRECATED_NS=1617\nXINCLUDE_FRAGMENT_ID=1618\nCATALOG_MISSING_ATTR=1650\nCATALOG_ENTRY_BROKEN=1651\nCATALOG_PREFER_VALUE=1652\nCATALOG_NOT_CATALOG=1653\nCATALOG_RECURSION=1654\nSCHEMAP_PREFIX_UNDEFINED=1700\nSCHEMAP_ATTRFORMDEFAULT_VALUE=1701\nSCHEMAP_ATTRGRP_NONAME_NOREF=1702\nSCHEMAP_ATTR_NONAME_NOREF=1703\nSCHEMAP_COMPLEXTYPE_NONAME_NOREF=1704\nSCHEMAP_ELEMFORMDEFAULT_VALUE=1705\nSCHEMAP_ELEM_NONAME_NOREF=1706\n";
static char __pyx_k_410[] = "SCHEMAP_EXTENSION_NO_BASE=1707\nSCHEMAP_FACET_NO_VALUE=1708\nSCHEMAP_FAILED_BUILD_IMPORT=1709\nSCHEMAP_GROUP_NONAME_NOREF=1710\nSCHEMAP_IMPORT_NAMESPACE_NOT_URI=1711\nSCHEMAP_IMPORT_REDEFINE_NSNAME=1712\nSCHEMAP_IMPORT_SCHEMA_NOT_URI=1713\nSCHEMAP_INVALID_BOOLEAN=1714\nSCHEMAP_INVALID_ENUM=1715\nSCHEMAP_INVALID_FACET=1716\nSCHEMAP_INVALID_FACET_VALUE=1717\nSCHEMAP_INVALID_MAXOCCURS=1718\nSCHEMAP_INVALID_MINOCCURS=1719\nSCHEMAP_INVALID_REF_AND_SUBTYPE=1720\nSCHEMAP_INVALID_WHITE_SPACE=1721\nSCHEMAP_NOATTR_NOREF=1722\nSCHEMAP_NOTATION_NO_NAME=1723\nSCHEMAP_NOTYPE_NOREF=1724\nSCHEMAP_REF_AND_SUBTYPE=1725\nSCHEMAP_RESTRICTION_NONAME_NOREF=1726\nSCHEMAP_SIMPLETYPE_NONAME=1727\nSCHEMAP_TYPE_AND_SUBTYPE=1728\nSCHEMAP_UNKNOWN_ALL_CHILD=1729\nSCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD=1730\nSCHEMAP_UNKNOWN_ATTR_CHILD=1731\nSCHEMAP_UNKNOWN_ATTRGRP_CHILD=1732\nSCHEMAP_UNKNOWN_ATTRIBUTE_GROUP=1733\nSCHEMAP_UNKNOWN_BASE_TYPE=1734\nSCHEMAP_UNKNOWN_CHOICE_CHILD=1735\nSCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD=1736\nSCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD=1737\nSCHEMAP_UNKNOWN_ELEM_CHILD=1738\nSCHEMAP_UNKNOWN_EXTENSION_CHILD=1739\nSCHEMAP_UNKNOWN_FACET_CHILD=1740\nSCHEMAP_UNKNOWN_FACET_TYPE=1741\nSCHEMAP_UNKNOWN_GROUP_CHILD=1742\nSCHEMAP_UNKNOWN_IMPORT_CHILD=1743\nSCHEMAP_UNKNOWN_LIST_CHILD=1744\nSCHEMAP_UNKNOWN_NOTATION_CHILD=1745\nSCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD=1746\nSCHEMAP_UNKNOWN_REF=1747\nSCHEMAP_UNKNOWN_RESTRICTION_CHILD=1748\nSCHEMAP_UNKNOWN_SCHEMAS_CHILD=1749\nSCHEMAP_UNKNOWN_SEQUENCE_CHILD=1750\nSCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD=1751\nSCHEMAP_UNKNOWN_SIMPLETYPE_CHILD=1752\nSCHEMAP_UNKNOWN_TYPE=1753\nSCHEMAP_UNKNOWN_UNION_CHILD=1754\nSCHEMAP_ELEM_DEFAULT_FIXED=1755\nSCHEMAP_REGEXP_INVALID=1756\nSCHEMAP_FAILED_LOAD=1757\nSCHEMAP_NOTHING_TO_PARSE=1758\nSCHEMAP_NOROOT=1759\nSCHEMAP_REDEFINED_GROUP=1760\nSCHEMAP_REDEFINED_TYPE=1761\nSCHEMAP_REDEFINED_ELEMENT=1762\nSCHEMAP_REDEFINED_ATTRGROUP=1763\nSCHEMAP_REDEFINED_ATTR=1764\nSCHEMAP_REDEFINED_NOTATION=1765\nSCHEMAP_FAILED_PARSE=1766\nSCHEMAP_UNKNOWN_PREFIX=1767\n";
static char __pyx_k_411[] = "SCHEMAP_DEF_AND_PREFIX=1768\nSCHEMAP_UNKNOWN_INCLUDE_CHILD=1769\nSCHEMAP_INCLUDE_SCHEMA_NOT_URI=1770\nSCHEMAP_INCLUDE_SCHEMA_NO_URI=1771\nSCHEMAP_NOT_SCHEMA=1772\nSCHEMAP_UNKNOWN_MEMBER_TYPE=1773\nSCHEMAP_INVALID_ATTR_USE=1774\nSCHEMAP_RECURSIVE=1775\nSCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE=1776\nSCHEMAP_INVALID_ATTR_COMBINATION=1777\nSCHEMAP_INVALID_ATTR_INLINE_COMBINATION=1778\nSCHEMAP_MISSING_SIMPLETYPE_CHILD=1779\nSCHEMAP_INVALID_ATTR_NAME=1780\nSCHEMAP_REF_AND_CONTENT=1781\nSCHEMAP_CT_PROPS_CORRECT_1=1782\nSCHEMAP_CT_PROPS_CORRECT_2=1783\nSCHEMAP_CT_PROPS_CORRECT_3=1784\nSCHEMAP_CT_PROPS_CORRECT_4=1785\nSCHEMAP_CT_PROPS_CORRECT_5=1786\nSCHEMAP_DERIVATION_OK_RESTRICTION_1=1787\nSCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1=1788\nSCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2=1789\nSCHEMAP_DERIVATION_OK_RESTRICTION_2_2=1790\nSCHEMAP_DERIVATION_OK_RESTRICTION_3=1791\nSCHEMAP_WILDCARD_INVALID_NS_MEMBER=1792\nSCHEMAP_INTERSECTION_NOT_EXPRESSIBLE=1793\nSCHEMAP_UNION_NOT_EXPRESSIBLE=1794\nSCHEMAP_SRC_IMPORT_3_1=1795\nSCHEMAP_SRC_IMPORT_3_2=1796\nSCHEMAP_DERIVATION_OK_RESTRICTION_4_1=1797\nSCHEMAP_DERIVATION_OK_RESTRICTION_4_2=1798\nSCHEMAP_DERIVATION_OK_RESTRICTION_4_3=1799\nSCHEMAP_COS_CT_EXTENDS_1_3=1800\nSCHEMAV_NOROOT=1801\nSCHEMAV_UNDECLAREDELEM=1802\nSCHEMAV_NOTTOPLEVEL=1803\nSCHEMAV_MISSING=1804\nSCHEMAV_WRONGELEM=1805\nSCHEMAV_NOTYPE=1806\nSCHEMAV_NOROLLBACK=1807\nSCHEMAV_ISABSTRACT=1808\nSCHEMAV_NOTEMPTY=1809\nSCHEMAV_ELEMCONT=1810\nSCHEMAV_HAVEDEFAULT=1811\nSCHEMAV_NOTNILLABLE=1812\nSCHEMAV_EXTRACONTENT=1813\nSCHEMAV_INVALIDATTR=1814\nSCHEMAV_INVALIDELEM=1815\nSCHEMAV_NOTDETERMINIST=1816\nSCHEMAV_CONSTRUCT=1817\nSCHEMAV_INTERNAL=1818\nSCHEMAV_NOTSIMPLE=1819\nSCHEMAV_ATTRUNKNOWN=1820\nSCHEMAV_ATTRINVALID=1821\nSCHEMAV_VALUE=1822\nSCHEMAV_FACET=1823\nSCHEMAV_CVC_DATATYPE_VALID_1_2_1=1824\nSCHEMAV_CVC_DATATYPE_VALID_1_2_2=1825\nSCHEMAV_CVC_DATATYPE_VALID_1_2_3=1826\nSCHEMAV_CVC_TYPE_3_1_1=1827\nSCHEMAV_CVC_TYPE_3_1_2=1828\nSCHEMAV_CVC_FACET_VALID=1829\nSCHEMAV_CVC_LENGTH_VALID=1830\n";
static char __pyx_k_412[] = "SCHEMAV_CVC_MINLENGTH_VALID=1831\nSCHEMAV_CVC_MAXLENGTH_VALID=1832\nSCHEMAV_CVC_MININCLUSIVE_VALID=1833\nSCHEMAV_CVC_MAXINCLUSIVE_VALID=1834\nSCHEMAV_CVC_MINEXCLUSIVE_VALID=1835\nSCHEMAV_CVC_MAXEXCLUSIVE_VALID=1836\nSCHEMAV_CVC_TOTALDIGITS_VALID=1837\nSCHEMAV_CVC_FRACTIONDIGITS_VALID=1838\nSCHEMAV_CVC_PATTERN_VALID=1839\nSCHEMAV_CVC_ENUMERATION_VALID=1840\nSCHEMAV_CVC_COMPLEX_TYPE_2_1=1841\nSCHEMAV_CVC_COMPLEX_TYPE_2_2=1842\nSCHEMAV_CVC_COMPLEX_TYPE_2_3=1843\nSCHEMAV_CVC_COMPLEX_TYPE_2_4=1844\nSCHEMAV_CVC_ELT_1=1845\nSCHEMAV_CVC_ELT_2=1846\nSCHEMAV_CVC_ELT_3_1=1847\nSCHEMAV_CVC_ELT_3_2_1=1848\nSCHEMAV_CVC_ELT_3_2_2=1849\nSCHEMAV_CVC_ELT_4_1=1850\nSCHEMAV_CVC_ELT_4_2=1851\nSCHEMAV_CVC_ELT_4_3=1852\nSCHEMAV_CVC_ELT_5_1_1=1853\nSCHEMAV_CVC_ELT_5_1_2=1854\nSCHEMAV_CVC_ELT_5_2_1=1855\nSCHEMAV_CVC_ELT_5_2_2_1=1856\nSCHEMAV_CVC_ELT_5_2_2_2_1=1857\nSCHEMAV_CVC_ELT_5_2_2_2_2=1858\nSCHEMAV_CVC_ELT_6=1859\nSCHEMAV_CVC_ELT_7=1860\nSCHEMAV_CVC_ATTRIBUTE_1=1861\nSCHEMAV_CVC_ATTRIBUTE_2=1862\nSCHEMAV_CVC_ATTRIBUTE_3=1863\nSCHEMAV_CVC_ATTRIBUTE_4=1864\nSCHEMAV_CVC_COMPLEX_TYPE_3_1=1865\nSCHEMAV_CVC_COMPLEX_TYPE_3_2_1=1866\nSCHEMAV_CVC_COMPLEX_TYPE_3_2_2=1867\nSCHEMAV_CVC_COMPLEX_TYPE_4=1868\nSCHEMAV_CVC_COMPLEX_TYPE_5_1=1869\nSCHEMAV_CVC_COMPLEX_TYPE_5_2=1870\nSCHEMAV_ELEMENT_CONTENT=1871\nSCHEMAV_DOCUMENT_ELEMENT_MISSING=1872\nSCHEMAV_CVC_COMPLEX_TYPE_1=1873\nSCHEMAV_CVC_AU=1874\nSCHEMAV_CVC_TYPE_1=1875\nSCHEMAV_CVC_TYPE_2=1876\nSCHEMAV_CVC_IDC=1877\nSCHEMAV_CVC_WILDCARD=1878\nSCHEMAV_MISC=1879\nXPTR_UNKNOWN_SCHEME=1900\nXPTR_CHILDSEQ_START=1901\nXPTR_EVAL_FAILED=1902\nXPTR_EXTRA_OBJECTS=1903\nC14N_CREATE_CTXT=1950\nC14N_REQUIRES_UTF8=1951\nC14N_CREATE_STACK=1952\nC14N_INVALID_NODE=1953\nC14N_UNKNOW_NODE=1954\nC14N_RELATIVE_NAMESPACE=1955\nFTP_PASV_ANSWER=2000\nFTP_EPSV_ANSWER=2001\nFTP_ACCNT=2002\nFTP_URL_SYNTAX=2003\nHTTP_URL_SYNTAX=2020\nHTTP_USE_IP=2021\nHTTP_UNKNOWN_HOST=2022\nSCHEMAP_SRC_SIMPLE_TYPE_1=3000\nSCHEMAP_SRC_SIMPLE_TYPE_2=3001\nSCHEMAP_SRC_SIMPLE_TYPE_3=3002\nSCHEMAP_SRC_SIMPLE_TYPE_4=3003\n";
static char __pyx_k_413[] = "SCHEMAP_SRC_RESOLVE=3004\nSCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE=3005\nSCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE=3006\nSCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES=3007\nSCHEMAP_ST_PROPS_CORRECT_1=3008\nSCHEMAP_ST_PROPS_CORRECT_2=3009\nSCHEMAP_ST_PROPS_CORRECT_3=3010\nSCHEMAP_COS_ST_RESTRICTS_1_1=3011\nSCHEMAP_COS_ST_RESTRICTS_1_2=3012\nSCHEMAP_COS_ST_RESTRICTS_1_3_1=3013\nSCHEMAP_COS_ST_RESTRICTS_1_3_2=3014\nSCHEMAP_COS_ST_RESTRICTS_2_1=3015\nSCHEMAP_COS_ST_RESTRICTS_2_3_1_1=3016\nSCHEMAP_COS_ST_RESTRICTS_2_3_1_2=3017\nSCHEMAP_COS_ST_RESTRICTS_2_3_2_1=3018\nSCHEMAP_COS_ST_RESTRICTS_2_3_2_2=3019\nSCHEMAP_COS_ST_RESTRICTS_2_3_2_3=3020\nSCHEMAP_COS_ST_RESTRICTS_2_3_2_4=3021\nSCHEMAP_COS_ST_RESTRICTS_2_3_2_5=3022\nSCHEMAP_COS_ST_RESTRICTS_3_1=3023\nSCHEMAP_COS_ST_RESTRICTS_3_3_1=3024\nSCHEMAP_COS_ST_RESTRICTS_3_3_1_2=3025\nSCHEMAP_COS_ST_RESTRICTS_3_3_2_2=3026\nSCHEMAP_COS_ST_RESTRICTS_3_3_2_1=3027\nSCHEMAP_COS_ST_RESTRICTS_3_3_2_3=3028\nSCHEMAP_COS_ST_RESTRICTS_3_3_2_4=3029\nSCHEMAP_COS_ST_RESTRICTS_3_3_2_5=3030\nSCHEMAP_COS_ST_DERIVED_OK_2_1=3031\nSCHEMAP_COS_ST_DERIVED_OK_2_2=3032\nSCHEMAP_S4S_ELEM_NOT_ALLOWED=3033\nSCHEMAP_S4S_ELEM_MISSING=3034\nSCHEMAP_S4S_ATTR_NOT_ALLOWED=3035\nSCHEMAP_S4S_ATTR_MISSING=3036\nSCHEMAP_S4S_ATTR_INVALID_VALUE=3037\nSCHEMAP_SRC_ELEMENT_1=3038\nSCHEMAP_SRC_ELEMENT_2_1=3039\nSCHEMAP_SRC_ELEMENT_2_2=3040\nSCHEMAP_SRC_ELEMENT_3=3041\nSCHEMAP_P_PROPS_CORRECT_1=3042\nSCHEMAP_P_PROPS_CORRECT_2_1=3043\nSCHEMAP_P_PROPS_CORRECT_2_2=3044\nSCHEMAP_E_PROPS_CORRECT_2=3045\nSCHEMAP_E_PROPS_CORRECT_3=3046\nSCHEMAP_E_PROPS_CORRECT_4=3047\nSCHEMAP_E_PROPS_CORRECT_5=3048\nSCHEMAP_E_PROPS_CORRECT_6=3049\nSCHEMAP_SRC_INCLUDE=3050\nSCHEMAP_SRC_ATTRIBUTE_1=3051\nSCHEMAP_SRC_ATTRIBUTE_2=3052\nSCHEMAP_SRC_ATTRIBUTE_3_1=3053\nSCHEMAP_SRC_ATTRIBUTE_3_2=3054\nSCHEMAP_SRC_ATTRIBUTE_4=3055\nSCHEMAP_NO_XMLNS=3056\nSCHEMAP_NO_XSI=3057\nSCHEMAP_COS_VALID_DEFAULT_1=3058\nSCHEMAP_COS_VALID_DEFAULT_2_1=3059\nSCHEMAP_COS_VALID_DEFAULT_2_2_1=3060\nSCHEMAP_COS_VALID_DEFAULT_2_2_2=3061\n";
static char __pyx_k_414[] = "SCHEMAP_CVC_SIMPLE_TYPE=3062\nSCHEMAP_COS_CT_EXTENDS_1_1=3063\nSCHEMAP_SRC_IMPORT_1_1=3064\nSCHEMAP_SRC_IMPORT_1_2=3065\nSCHEMAP_SRC_IMPORT_2=3066\nSCHEMAP_SRC_IMPORT_2_1=3067\nSCHEMAP_SRC_IMPORT_2_2=3068\nSCHEMAP_INTERNAL=3069\nSCHEMAP_NOT_DETERMINISTIC=3070\nSCHEMAP_SRC_ATTRIBUTE_GROUP_1=3071\nSCHEMAP_SRC_ATTRIBUTE_GROUP_2=3072\nSCHEMAP_SRC_ATTRIBUTE_GROUP_3=3073\nSCHEMAP_MG_PROPS_CORRECT_1=3074\nSCHEMAP_MG_PROPS_CORRECT_2=3075\nSCHEMAP_SRC_CT_1=3076\nSCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3=3077\nSCHEMAP_AU_PROPS_CORRECT_2=3078\nSCHEMAP_A_PROPS_CORRECT_2=3079\nSCHEMAP_C_PROPS_CORRECT=3080\nSCHEMAP_SRC_REDEFINE=3081\nSCHEMAP_SRC_IMPORT=3082\nSCHEMAP_WARN_SKIP_SCHEMA=3083\nSCHEMAP_WARN_UNLOCATED_SCHEMA=3084\nSCHEMAP_WARN_ATTR_REDECL_PROH=3085\nSCHEMAP_WARN_ATTR_POINTLESS_PROH=3086\nSCHEMAP_AG_PROPS_CORRECT=3087\nSCHEMAP_COS_CT_EXTENDS_1_2=3088\nSCHEMAP_AU_PROPS_CORRECT=3089\nSCHEMAP_A_PROPS_CORRECT_3=3090\nSCHEMAP_COS_ALL_LIMITED=3091\nSCHEMATRONV_ASSERT=4000\nSCHEMATRONV_REPORT=4001\nMODULE_OPEN=4900\nMODULE_CLOSE=4901\nCHECK_FOUND_ELEMENT=5000\nCHECK_FOUND_ATTRIBUTE=5001\nCHECK_FOUND_TEXT=5002\nCHECK_FOUND_CDATA=5003\nCHECK_FOUND_ENTITYREF=5004\nCHECK_FOUND_ENTITY=5005\nCHECK_FOUND_PI=5006\nCHECK_FOUND_COMMENT=5007\nCHECK_FOUND_DOCTYPE=5008\nCHECK_FOUND_FRAGMENT=5009\nCHECK_FOUND_NOTATION=5010\nCHECK_UNKNOWN_NODE=5011\nCHECK_ENTITY_TYPE=5012\nCHECK_NO_PARENT=5013\nCHECK_NO_DOC=5014\nCHECK_NO_NAME=5015\nCHECK_NO_ELEM=5016\nCHECK_WRONG_DOC=5017\nCHECK_NO_PREV=5018\nCHECK_WRONG_PREV=5019\nCHECK_NO_NEXT=5020\nCHECK_WRONG_NEXT=5021\nCHECK_NOT_DTD=5022\nCHECK_NOT_ATTR=5023\nCHECK_NOT_ATTR_DECL=5024\nCHECK_NOT_ELEM_DECL=5025\nCHECK_NOT_ENTITY_DECL=5026\nCHECK_NOT_NS_DECL=5027\nCHECK_NO_HREF=5028\nCHECK_WRONG_PARENT=5029\nCHECK_NS_SCOPE=5030\nCHECK_NS_ANCESTOR=5031\nCHECK_NOT_UTF8=5032\nCHECK_NO_DICT=5033\nCHECK_NOT_NCNAME=5034\nCHECK_OUTSIDE_DICT=5035\nCHECK_WRONG_NAME=5036\nCHECK_NAME_NOT_NULL=5037\nI18N_NO_NAME=6000\nI18N_NO_HANDLER=6001\nI18N_EXCESS_HANDLER=6002\nI18N_CONV_FAILED=6003\n";
static char __pyx_k_415[] = "I18N_NO_OUTPUT=6004\nCHECK_=6005\nCHECK_X=6006\n";
static char __pyx_k_416[] = "RELAXNG_OK=0\nRELAXNG_ERR_MEMORY=1\nRELAXNG_ERR_TYPE=2\nRELAXNG_ERR_TYPEVAL=3\nRELAXNG_ERR_DUPID=4\nRELAXNG_ERR_TYPECMP=5\nRELAXNG_ERR_NOSTATE=6\nRELAXNG_ERR_NODEFINE=7\nRELAXNG_ERR_LISTEXTRA=8\nRELAXNG_ERR_LISTEMPTY=9\nRELAXNG_ERR_INTERNODATA=10\nRELAXNG_ERR_INTERSEQ=11\nRELAXNG_ERR_INTEREXTRA=12\nRELAXNG_ERR_ELEMNAME=13\nRELAXNG_ERR_ATTRNAME=14\nRELAXNG_ERR_ELEMNONS=15\nRELAXNG_ERR_ATTRNONS=16\nRELAXNG_ERR_ELEMWRONGNS=17\nRELAXNG_ERR_ATTRWRONGNS=18\nRELAXNG_ERR_ELEMEXTRANS=19\nRELAXNG_ERR_ATTREXTRANS=20\nRELAXNG_ERR_ELEMNOTEMPTY=21\nRELAXNG_ERR_NOELEM=22\nRELAXNG_ERR_NOTELEM=23\nRELAXNG_ERR_ATTRVALID=24\nRELAXNG_ERR_CONTENTVALID=25\nRELAXNG_ERR_EXTRACONTENT=26\nRELAXNG_ERR_INVALIDATTR=27\nRELAXNG_ERR_DATAELEM=28\nRELAXNG_ERR_VALELEM=29\nRELAXNG_ERR_LISTELEM=30\nRELAXNG_ERR_DATATYPE=31\nRELAXNG_ERR_VALUE=32\nRELAXNG_ERR_LIST=33\nRELAXNG_ERR_NOGRAMMAR=34\nRELAXNG_ERR_EXTRADATA=35\nRELAXNG_ERR_LACKDATA=36\nRELAXNG_ERR_INTERNAL=37\nRELAXNG_ERR_ELEMWRONG=38\nRELAXNG_ERR_TEXTWRONG=39\n";
static char __pyx_k_417[] = "Base class of lxml registry errors.\n    ";
static char __pyx_k_418[] = "Error registering a namespace extension.\n    ";
static char __pyx_k_419[] = "Syntax error while parsing an XML document.\n\n    For compatibility with ElementTree 1.3 and later.\n    ";
static char __pyx_k_420[] = "Syntax error while parsing an XML document.\n    ";
static char __pyx_k_421[] = "Internal lxml parser error.\n    ";
static char __pyx_k_422[] = "initMainParserContext";
static char __pyx_k_423[] = "A libxml2 error that occurred during serialisation.\n    ";
static char __pyx_k_424[] = "Error during XInclude processing.\n    ";
static char __pyx_k_425[] = "Base class of all XPath errors.\n    ";
static char __pyx_k_426[] = "Error during XPath evaluation.\n    ";
static char __pyx_k_427[] = "Internal error looking up an XPath extension function.\n    ";
static char __pyx_k_428[] = "Error handling an XPath result.\n    ";
static char __pyx_k_429[] = "(\"[^\"]*\")|('[^']*')";
static char __pyx_k_430[] = "({[^}]+})";
static char __pyx_k_431[] = "Base class of all XSLT errors.\n    ";
static char __pyx_k_432[] = "Error parsing a stylesheet document.\n    ";
static char __pyx_k_433[] = "Error running an XSL transformation.\n    ";
static char __pyx_k_434[] = "Error serialising an XSLT result.\n    ";
static char __pyx_k_435[] = "Error registering an XSLT extension.\n    ";
static char __pyx_k_436[] = "LIBXSLT_COMPILED_VERSION";
static char __pyx_k_437[] = "\\s+(\\w+)\\s*=\\s*[\"']([^\"']+)[\"']";
static char __pyx_k_438[] = "\\s+href\\s*=\\s*[\"']([^\"']+)[\"']";
static char __pyx_k_439[] = "Validation error.\n\n    Raised by all document validators when their ``assertValid(tree)``\n    method fails.\n    ";
static char __pyx_k_440[] = "Base class for DTD errors.\n    ";
static char __pyx_k_441[] = "Error while parsing a DTD.\n    ";
static char __pyx_k_442[] = "Error while validating an XML document with a DTD.\n    ";
static char __pyx_k_443[] = "Base class for RelaxNG errors.\n    ";
static char __pyx_k_444[] = "Error while parsing an XML document as RelaxNG.\n    ";
static char __pyx_k_445[] = "Error while validating an XML document with a RelaxNG schema.\n    ";
static char __pyx_k_446[] = "Base class of all XML Schema errors\n    ";
static char __pyx_k_447[] = "Error while parsing an XML document as XML Schema.\n    ";
static char __pyx_k_448[] = "Error while validating an XML document with an XML Schema.\n    ";
static char __pyx_k_449[] = "boolean(//xs:attribute[@default or @fixed][1])";
static char __pyx_k_450[] = "Base class of all Schematron errors.\n    ";
static char __pyx_k_451[] = "Error while parsing an XML document as Schematron schema.\n    ";
static char __pyx_k_452[] = "Error while validating an XML document with a Schematron schema.\n    ";
static char __pyx_k_453[] = "clear_error_log (line 7)";
static char __pyx_k_454[] = "_ListErrorLog.copy (line 204)";
static char __pyx_k_455[] = "_ListErrorLog.filter_domains (line 236)";
static char __pyx_k_456[] = "_ListErrorLog.filter_types (line 249)";
static char __pyx_k_457[] = "_ListErrorLog.filter_levels (line 264)";
static char __pyx_k_458[] = "_ListErrorLog.filter_from_level (line 279)";
static char __pyx_k_459[] = "_ListErrorLog.filter_from_fatals (line 291)";
static char __pyx_k_460[] = "_ListErrorLog.filter_from_errors (line 298)";
static char __pyx_k_461[] = "_ListErrorLog.filter_from_warnings (line 305)";
static char __pyx_k_462[] = "filter_from_warnings";
static char __pyx_k_463[] = "_ErrorLog.copy (line 328)";
static char __pyx_k_464[] = "PyErrorLog.copy (line 399)";
static char __pyx_k_465[] = "PyErrorLog.log (line 404)";
static char __pyx_k_466[] = "PyErrorLog.receive (line 421)";
static char __pyx_k_467[] = "use_global_python_log (line 467)";
static char __pyx_k_468[] = "use_global_python_log";
static char __pyx_k_469[] = "DocInfo.__init__ (line 413)";
static char __pyx_k_470[] = "_Element._init (line 522)";
static char __pyx_k_471[] = "_Element.__setitem__ (line 539)";
static char __pyx_k_472[] = "_Element.__delitem__ (line 577)";
static char __pyx_k_473[] = "_Element.__deepcopy__ (line 607)";
static char __pyx_k_474[] = "_Element.__copy__ (line 611)";
static char __pyx_k_475[] = "_Element.set (line 629)";
static char __pyx_k_476[] = "_Element.append (line 636)";
static char __pyx_k_477[] = "_Element.addnext (line 643)";
static char __pyx_k_478[] = "_Element.addprevious (line 660)";
static char __pyx_k_479[] = "_Element.extend (line 677)";
static char __pyx_k_480[] = "_Element.clear (line 685)";
static char __pyx_k_481[] = "_Element.insert (line 715)";
static char __pyx_k_482[] = "_Element.remove (line 733)";
static char __pyx_k_483[] = "_Element.replace (line 751)";
static char __pyx_k_484[] = "_Element.__repr__ (line 924)";
static char __pyx_k_485[] = "_Element.__getitem__ (line 928)";
static char __pyx_k_486[] = "_Element.__len__ (line 964)";
static char __pyx_k_487[] = "_Element.__contains__ (line 982)";
static char __pyx_k_488[] = "_Element.__iter__ (line 990)";
static char __pyx_k_489[] = "_Element.__reversed__ (line 994)";
static char __pyx_k_490[] = "_Element.index (line 998)";
static char __pyx_k_491[] = "_Element.get (line 1083)";
static char __pyx_k_492[] = "_Element.keys (line 1090)";
static char __pyx_k_493[] = "_Element.values (line 1098)";
static char __pyx_k_494[] = "_Element.items (line 1106)";
static char __pyx_k_495[] = "_Element.getchildren (line 1114)";
static char __pyx_k_496[] = "_Element.getparent (line 1126)";
static char __pyx_k_497[] = "_Element.getnext (line 1137)";
static char __pyx_k_498[] = "_Element.getprevious (line 1148)";
static char __pyx_k_499[] = "_Element.itersiblings (line 1159)";
static char __pyx_k_500[] = "_Element.iterancestors (line 1171)";
static char __pyx_k_501[] = "_Element.iterdescendants (line 1181)";
static char __pyx_k_502[] = "_Element.iterchildren (line 1192)";
static char __pyx_k_503[] = "_Element.getroottree (line 1203)";
static char __pyx_k_504[] = "_Element.getiterator (line 1214)";
static char __pyx_k_505[] = "_Element.iter (line 1237)";
static char __pyx_k_506[] = "_Element.itertext (line 1251)";
static char __pyx_k_507[] = "_Element.makeelement (line 1264)";
static char __pyx_k_508[] = "_Element.find (line 1272)";
static char __pyx_k_509[] = "_Element.findtext (line 1281)";
static char __pyx_k_510[] = "_Element.findall (line 1290)";
static char __pyx_k_511[] = "_Element.iterfind (line 1299)";
static char __pyx_k_512[] = "_Element.xpath (line 1308)";
static char __pyx_k_513[] = "__ContentOnlyElement.set (line 1353)";
static char __pyx_k_514[] = "__ContentOnlyElement";
static char __pyx_k_515[] = "__ContentOnlyElement.append (line 1357)";
static char __pyx_k_516[] = "__ContentOnlyElement.insert (line 1361)";
static char __pyx_k_517[] = "__ContentOnlyElement.__setitem__ (line 1365)";
static char __pyx_k_518[] = "__ContentOnlyElement.__getitem__ (line 1391)";
static char __pyx_k_519[] = "__ContentOnlyElement.__len__ (line 1398)";
static char __pyx_k_520[] = "__ContentOnlyElement.get (line 1402)";
static char __pyx_k_521[] = "__ContentOnlyElement.keys (line 1406)";
static char __pyx_k_522[] = "__ContentOnlyElement.items (line 1410)";
static char __pyx_k_523[] = "__ContentOnlyElement.values (line 1414)";
static char __pyx_k_524[] = "_ElementTree.parse (line 1553)";
static char __pyx_k_525[] = "_ElementTree._setroot (line 1569)";
static char __pyx_k_526[] = "_ElementTree.getroot (line 1579)";
static char __pyx_k_527[] = "_ElementTree.write (line 1640)";
static char __pyx_k_528[] = "_ElementTree.getpath (line 1689)";
static char __pyx_k_529[] = "_ElementTree.getiterator (line 1709)";
static char __pyx_k_530[] = "_ElementTree.iter (line 1735)";
static char __pyx_k_531[] = "_ElementTree.find (line 1746)";
static char __pyx_k_532[] = "_ElementTree.findtext (line 1762)";
static char __pyx_k_533[] = "_ElementTree.findall (line 1778)";
static char __pyx_k_534[] = "_ElementTree.iterfind (line 1794)";
static char __pyx_k_535[] = "_ElementTree.xpath (line 1810)";
static char __pyx_k_536[] = "_ElementTree.xslt (line 1835)";
static char __pyx_k_537[] = "_ElementTree.relaxng (line 1854)";
static char __pyx_k_538[] = "_ElementTree.xmlschema (line 1872)";
static char __pyx_k_539[] = "_ElementTree.xinclude (line 1890)";
static char __pyx_k_540[] = "_ElementTree.write_c14n (line 1906)";
static char __pyx_k_541[] = "Element (line 2336)";
static char __pyx_k_542[] = "Comment (line 2349)";
static char __pyx_k_543[] = "ProcessingInstruction (line 2368)";
static char __pyx_k_544[] = "Entity (line 2404)";
static char __pyx_k_545[] = "SubElement (line 2430)";
static char __pyx_k_546[] = "ElementTree (line 2439)";
static char __pyx_k_547[] = "HTML (line 2464)";
static char __pyx_k_548[] = "XML (line 2489)";
static char __pyx_k_549[] = "fromstring (line 2517)";
static char __pyx_k_550[] = "fromstringlist (line 2537)";
static char __pyx_k_551[] = "iselement (line 2554)";
static char __pyx_k_552[] = "dump (line 2561)";
static char __pyx_k_553[] = "tostring (line 2569)";
static char __pyx_k_554[] = "tostringlist (line 2635)";
static char __pyx_k_555[] = "tounicode (line 2646)";
static char __pyx_k_556[] = "parse (line 2680)";
static char __pyx_k_557[] = "_ReadOnlyElementProxy.__getitem__ (line 75)";
static char __pyx_k_558[] = "_ReadOnlyElementProxy";
static char __pyx_k_559[] = "_ReadOnlyElementProxy.__len__ (line 112)";
static char __pyx_k_560[] = "_ReadOnlyElementProxy.__deepcopy__ (line 132)";
static char __pyx_k_561[] = "_ReadOnlyElementProxy.__copy__ (line 136)";
static char __pyx_k_562[] = "_ReadOnlyElementProxy.iterchildren (line 157)";
static char __pyx_k_563[] = "_ReadOnlyElementProxy.get (line 169)";
static char __pyx_k_564[] = "_ReadOnlyElementProxy.keys (line 175)";
static char __pyx_k_565[] = "_ReadOnlyElementProxy.values (line 182)";
static char __pyx_k_566[] = "_ReadOnlyElementProxy.items (line 189)";
static char __pyx_k_567[] = "_ReadOnlyElementProxy.getchildren (line 196)";
static char __pyx_k_568[] = "_ReadOnlyElementProxy.getparent (line 211)";
static char __pyx_k_569[] = "_ReadOnlyElementProxy.getnext (line 222)";
static char __pyx_k_570[] = "_ReadOnlyElementProxy.getprevious (line 232)";
static char __pyx_k_571[] = "_AppendOnlyElementProxy.append (line 283)";
static char __pyx_k_572[] = "_AppendOnlyElementProxy";
static char __pyx_k_573[] = "_AppendOnlyElementProxy.extend (line 295)";
static char __pyx_k_574[] = "ElementBase.__init__ (line 42)";
static char __pyx_k_575[] = "FallbackElementClassLookup.set_fallback (line 186)";
static char __pyx_k_576[] = "FallbackElementClassLookup";
static char __pyx_k_577[] = "CustomElementClassLookup.lookup (line 368)";
static char __pyx_k_578[] = "CustomElementClassLookup";
static char __pyx_k_579[] = "PythonElementClassLookup.lookup (line 453)";
static char __pyx_k_580[] = "PythonElementClassLookup";
static char __pyx_k_581[] = "set_element_class_lookup (line 489)";
static char __pyx_k_582[] = "_NamespaceRegistry.update (line 30)";
static char __pyx_k_583[] = "ElementNamespaceClassLookup.get_namespace (line 107)";
static char __pyx_k_584[] = "ElementNamespaceClassLookup";
static char __pyx_k_585[] = "FunctionNamespace (line 167)";
static char __pyx_k_586[] = "Resolver.resolve (line 17)";
static char __pyx_k_587[] = "Resolver.resolve_empty (line 28)";
static char __pyx_k_588[] = "Resolver.resolve_string (line 40)";
static char __pyx_k_589[] = "Resolver.resolve_filename (line 61)";
static char __pyx_k_590[] = "Resolver.resolve_file (line 75)";
static char __pyx_k_591[] = "_ResolverRegistry.add (line 108)";
static char __pyx_k_592[] = "_ResolverRegistry.remove (line 121)";
static char __pyx_k_593[] = "_ResolverRegistry.copy (line 131)";
static char __pyx_k_594[] = "_ResolverRegistry.resolve (line 135)";
static char __pyx_k_595[] = "_BaseParser.setElementClassLookup (line 816)";
static char __pyx_k_596[] = "setElementClassLookup";
static char __pyx_k_597[] = "_BaseParser.set_element_class_lookup (line 820)";
static char __pyx_k_598[] = "_BaseParser.copy (line 844)";
static char __pyx_k_599[] = "_BaseParser.makeelement (line 851)";
static char __pyx_k_600[] = "_FeedParser.feed (line 1020)";
static char __pyx_k_601[] = "_FeedParser.close (line 1113)";
static char __pyx_k_602[] = "set_default_parser (line 1312)";
static char __pyx_k_603[] = "get_default_parser (line 1328)";
static char __pyx_k_604[] = "TreeBuilder.close (line 373)";
static char __pyx_k_605[] = "TreeBuilder.data (line 383)";
static char __pyx_k_606[] = "TreeBuilder.start (line 391)";
static char __pyx_k_607[] = "TreeBuilder.end (line 400)";
static char __pyx_k_608[] = "TreeBuilder.pi (line 411)";
static char __pyx_k_609[] = "TreeBuilder.comment (line 416)";
static char __pyx_k_610[] = "XMLID (line 3)";
static char __pyx_k_611[] = "XMLDTDID (line 24)";
static char __pyx_k_612[] = "parseid (line 44)";
static char __pyx_k_613[] = "XInclude.__call__ (line 25)";
static char __pyx_k_614[] = "cleanup_namespaces (line 3)";
static char __pyx_k_615[] = "strip_attributes (line 13)";
static char __pyx_k_616[] = "strip_elements (line 80)";
static char __pyx_k_617[] = "strip_tags (line 172)";
static char __pyx_k_618[] = "Extension (line 347)";
static char __pyx_k_619[] = "_XPathEvaluatorBase.evaluate (line 139)";
static char __pyx_k_620[] = "XPathElementEvaluator.register_namespace (line 251)";
static char __pyx_k_621[] = "XPathElementEvaluator";
static char __pyx_k_622[] = "XPathElementEvaluator.register_namespaces (line 256)";
static char __pyx_k_623[] = "XPathElementEvaluator.__call__ (line 262)";
static char __pyx_k_624[] = "XPathDocumentEvaluator.__call__ (line 314)";
static char __pyx_k_625[] = "XPathDocumentEvaluator";
static char __pyx_k_626[] = "XPathEvaluator (line 353)";
static char __pyx_k_627[] = "XPath.__call__ (line 410)";
static char __pyx_k_628[] = "XSLT.strparam (line 424)";
static char __pyx_k_629[] = "XSLT.apply (line 437)";
static char __pyx_k_630[] = "XSLT.tostring (line 443)";
static char __pyx_k_631[] = "XSLT.__call__ (line 458)";
static char __pyx_k_632[] = "_XSLTProcessingInstruction.parseXSL (line 815)";
static char __pyx_k_633[] = "_XSLTProcessingInstruction";
static char __pyx_k_634[] = "XSLTExtension.execute (line 6)";
static char __pyx_k_635[] = "XSLTExtension.apply_templates (line 18)";
static char __pyx_k_636[] = "_Validator.__init__ (line 2752)";
static char __pyx_k_637[] = "_Validator.validate (line 2756)";
static char __pyx_k_638[] = "_Validator.assertValid (line 2765)";
static char __pyx_k_639[] = "_Validator.assert_ (line 2775)";
static char __pyx_k_640[] = "DTD.__call__ (line 59)";
static char __pyx_k_641[] = "RelaxNG.__call__ (line 94)";
static char __pyx_k_642[] = "XMLSchema.__call__ (line 116)";
static char __pyx_k_643[] = "Schematron.__call__ (line 128)";
static char __pyx_k__PI[] = "PI";
static char __pyx_k__dc[] = "dc";
static char __pyx_k__id[] = "id";
static char __pyx_k__io[] = "io";
static char __pyx_k__ns[] = "ns";
static char __pyx_k__pi[] = "pi";
static char __pyx_k__py[] = "py";
static char __pyx_k__rb[] = "rb";
static char __pyx_k__re[] = "re";
static char __pyx_k__wb[] = "wb";
static char __pyx_k__xs[] = "xs";
static char __pyx_k__DTD[] = "DTD";
static char __pyx_k__TAG[] = "TAG";
static char __pyx_k__URL[] = "URL";
static char __pyx_k__XML[] = "XML";
static char __pyx_k__add[] = "add";
static char __pyx_k__buf[] = "buf";
static char __pyx_k__cur[] = "cur";
static char __pyx_k__dev[] = "dev";
static char __pyx_k__doc[] = "doc";
static char __pyx_k__end[] = "end";
static char __pyx_k__get[] = "get";
static char __pyx_k__ids[] = "ids";
static char __pyx_k__key[] = "key";
static char __pyx_k__len[] = "len";
static char __pyx_k__log[] = "log";
static char __pyx_k__new[] = "new";
static char __pyx_k__old[] = "old";
static char __pyx_k__pop[] = "pop";
static char __pyx_k__rdf[] = "rdf";
static char __pyx_k__sax[] = "sax";
static char __pyx_k__set[] = "set";
static char __pyx_k__str[] = "str";
static char __pyx_k__sub[] = "sub";
static char __pyx_k__sys[] = "sys";
static char __pyx_k__tag[] = "tag";
static char __pyx_k__uri[] = "uri";
static char __pyx_k__url[] = "url";
static char __pyx_k__xml[] = "xml";
static char __pyx_k__xsi[] = "xsi";
static char __pyx_k__xsl[] = "xsl";
static char __pyx_k__HTML[] = "HTML";
static char __pyx_k__UTF8[] = "UTF8";
static char __pyx_k__XSLT[] = "XSLT";
static char __pyx_k___doc[] = "_doc";
static char __pyx_k___exc[] = "_exc";
static char __pyx_k___get[] = "_get";
static char __pyx_k___log[] = "_log";
static char __pyx_k___tag[] = "_tag";
static char __pyx_k___url[] = "_url";
static char __pyx_k__attr[] = "attr";
static char __pyx_k__base[] = "base";
static char __pyx_k__beta[] = "beta";
static char __pyx_k__code[] = "code";
static char __pyx_k__conv[] = "conv";
static char __pyx_k__copy[] = "copy";
static char __pyx_k__ctxt[] = "ctxt";
static char __pyx_k__data[] = "data";
static char __pyx_k__dict[] = "dict";
static char __pyx_k__dump[] = "dump";
static char __pyx_k__elem[] = "elem";
static char __pyx_k__feed[] = "feed";
static char __pyx_k__file[] = "file";
static char __pyx_k__find[] = "find";
static char __pyx_k__gzip[] = "gzip";
static char __pyx_k__href[] = "href";
static char __pyx_k__html[] = "html";
static char __pyx_k__int2[] = "int2";
static char __pyx_k__iter[] = "iter";
static char __pyx_k__join[] = "join";
static char __pyx_k__keys[] = "keys";
static char __pyx_k__last[] = "last";
static char __pyx_k__line[] = "line";
static char __pyx_k__mode[] = "mode";
static char __pyx_k__name[] = "name";
static char __pyx_k__ndim[] = "ndim";
static char __pyx_k__next[] = "next";
static char __pyx_k__node[] = "node";
static char __pyx_k__open[] = "open";
static char __pyx_k__path[] = "path";
static char __pyx_k__prev[] = "prev";
static char __pyx_k__read[] = "read";
static char __pyx_k__rexp[] = "rexp";
static char __pyx_k__root[] = "root";
static char __pyx_k__self[] = "self";
static char __pyx_k__size[] = "size";
static char __pyx_k__sort[] = "sort";
static char __pyx_k__step[] = "step";
static char __pyx_k__stop[] = "stop";
static char __pyx_k__tail[] = "tail";
static char __pyx_k__tell[] = "tell";
static char __pyx_k__test[] = "test";
static char __pyx_k__text[] = "text";
static char __pyx_k__tree[] = "tree";
static char __pyx_k__type[] = "type";
static char __pyx_k__warn[] = "warn";
static char __pyx_k__wsdl[] = "wsdl";
static char __pyx_k__xslt[] = "xslt";
static char __pyx_k__ASCII[] = "ASCII";
static char __pyx_k__DEBUG[] = "DEBUG";
static char __pyx_k__ERROR[] = "ERROR";
static char __pyx_k__Error[] = "Error";
static char __pyx_k__FATAL[] = "FATAL";
static char __pyx_k__XMLID[] = "XMLID";
static char __pyx_k__XPath[] = "XPath";
static char __pyx_k___c_ns[] = "_c_ns";
static char __pyx_k___copy[] = "_copy";
static char __pyx_k___data[] = "_data";
static char __pyx_k___file[] = "_file";
static char __pyx_k___hold[] = "_hold";
static char __pyx_k___href[] = "_href";
static char __pyx_k___init[] = "_init";
static char __pyx_k___keys[] = "_keys";
static char __pyx_k___last[] = "_last";
static char __pyx_k___lock[] = "_lock";
static char __pyx_k___name[] = "_name";
static char __pyx_k___node[] = "_node";
static char __pyx_k___path[] = "_path";
static char __pyx_k___root[] = "_root";
static char __pyx_k___type[] = "_type";
static char __pyx_k___xslt[] = "_xslt";
static char __pyx_k__alpha[] = "alpha";
static char __pyx_k__apply[] = "apply";
static char __pyx_k__ascii[] = "ascii";
static char __pyx_k__attrs[] = "attrs";
static char __pyx_k__child[] = "child";
static char __pyx_k__clear[] = "clear";
static char __pyx_k__close[] = "close";
static char __pyx_k__dummy[] = "dummy";
static char __pyx_k__errNo[] = "errNo";
static char __pyx_k__error[] = "error";
static char __pyx_k__etree[] = "etree";
static char __pyx_k__flags[] = "flags";
static char __pyx_k__group[] = "group";
static char __pyx_k__index[] = "index";
static char __pyx_k__input[] = "input";
static char __pyx_k__items[] = "items";
static char __pyx_k__level[] = "level";
static char __pyx_k__lower[] = "lower";
static char __pyx_k__match[] = "match";
static char __pyx_k__myDoc[] = "myDoc";
static char __pyx_k__nsDef[] = "nsDef";
static char __pyx_k__nsmap[] = "nsmap";
static char __pyx_k__parse[] = "parse";
static char __pyx_k__range[] = "range";
static char __pyx_k__shape[] = "shape";
static char __pyx_k__split[] = "split";
static char __pyx_k__start[] = "start";
static char __pyx_k__state[] = "state";
static char __pyx_k__strip[] = "strip";
static char __pyx_k__super[] = "super";
static char __pyx_k__upper[] = "upper";
static char __pyx_k__value[] = "value";
static char __pyx_k__write[] = "write";
static char __pyx_k__xpath[] = "xpath";
static char __pyx_k__Entity[] = "Entity";
static char __pyx_k__PARSER[] = "PARSER";
static char __pyx_k___bytes[] = "_bytes";
static char __pyx_k___c_doc[] = "_c_doc";
static char __pyx_k___c_dtd[] = "_c_dtd";
static char __pyx_k___c_url[] = "_c_url";
static char __pyx_k___flush[] = "_flush";
static char __pyx_k___index[] = "_index";
static char __pyx_k___input[] = "_input";
static char __pyx_k___items[] = "_items";
static char __pyx_k___names[] = "_names";
static char __pyx_k___prefs[] = "_prefs";
static char __pyx_k___pytag[] = "_pytag";
static char __pyx_k___xpath[] = "_xpath";
static char __pyx_k__append[] = "append";
static char __pyx_k__attrib[] = "attrib";
static char __pyx_k__buffer[] = "buffer";
static char __pyx_k__column[] = "column";
static char __pyx_k__decode[] = "decode";
static char __pyx_k__domain[] = "domain";
static char __pyx_k__encode[] = "encode";
static char __pyx_k__entity[] = "entity";
static char __pyx_k__events[] = "events";
static char __pyx_k__extend[] = "extend";
static char __pyx_k__format[] = "format";
static char __pyx_k__geturl[] = "geturl";
static char __pyx_k__groups[] = "groups";
static char __pyx_k__insert[] = "insert";
static char __pyx_k__length[] = "length";
static char __pyx_k__lookup[] = "lookup";
static char __pyx_k__method[] = "method";
static char __pyx_k__module[] = "module";
static char __pyx_k__nodeNr[] = "nodeNr";
static char __pyx_k__ns_uri[] = "ns_uri";
static char __pyx_k__object[] = "object";
static char __pyx_k__output[] = "output";
static char __pyx_k__parent[] = "parent";
static char __pyx_k__parser[] = "parser";
static char __pyx_k__prefix[] = "prefix";
static char __pyx_k__python[] = "python";
static char __pyx_k__regexp[] = "regexp";
static char __pyx_k__remove[] = "remove";
static char __pyx_k__result[] = "result";
static char __pyx_k__schema[] = "schema";
static char __pyx_k__search[] = "search";
static char __pyx_k__source[] = "source";
static char __pyx_k__stdout[] = "stdout";
static char __pyx_k__strict[] = "strict";
static char __pyx_k__string[] = "string";
static char __pyx_k__strval[] = "strval";
static char __pyx_k__target[] = "target";
static char __pyx_k__update[] = "update";
static char __pyx_k__values[] = "values";
static char __pyx_k__BytesIO[] = "BytesIO";
static char __pyx_k__Comment[] = "Comment";
static char __pyx_k__DocInfo[] = "DocInfo";
static char __pyx_k__Element[] = "Element";
static char __pyx_k__IOError[] = "IOError";
static char __pyx_k__RelaxNG[] = "RelaxNG";
static char __pyx_k__UNICODE[] = "UNICODE";
static char __pyx_k__WARNING[] = "WARNING";
static char __pyx_k____len__[] = "__len__";
static char __pyx_k___attrib[] = "_attrib";
static char __pyx_k___buffer[] = "_buffer";
static char __pyx_k___c_attr[] = "_c_attr";
static char __pyx_k___c_ctxt[] = "_c_ctxt";
static char __pyx_k___c_dict[] = "_c_dict";
static char __pyx_k___c_name[] = "_c_name";
static char __pyx_k___c_node[] = "_c_node";
static char __pyx_k___events[] = "_events";
static char __pyx_k___gc_doc[] = "_gc_doc";
static char __pyx_k___ns_uri[] = "_ns_uri";
static char __pyx_k___optval[] = "_optval";
static char __pyx_k___parent[] = "_parent";
static char __pyx_k___parser[] = "_parser";
static char __pyx_k___pop_ns[] = "_pop_ns";
static char __pyx_k___prefix[] = "_prefix";
static char __pyx_k___schema[] = "_schema";
static char __pyx_k___source[] = "_source";
static char __pyx_k___target[] = "_target";
static char __pyx_k___to_utf[] = "_to_utf";
static char __pyx_k___unlock[] = "_unlock";
static char __pyx_k__abspath[] = "abspath";
static char __pyx_k__addnext[] = "addnext";
static char __pyx_k__assert_[] = "assert_";
static char __pyx_k__boolval[] = "boolval";
static char __pyx_k__cleanup[] = "cleanup";
static char __pyx_k__comment[] = "comment";
static char __pyx_k__compact[] = "compact";
static char __pyx_k__compile[] = "compile";
static char __pyx_k__connect[] = "connect";
static char __pyx_k__content[] = "content";
static char __pyx_k__context[] = "context";
static char __pyx_k__default[] = "default";
static char __pyx_k__discard[] = "discard";
static char __pyx_k__doctype[] = "doctype";
static char __pyx_k__domains[] = "domains";
static char __pyx_k__element[] = "element";
static char __pyx_k__endNode[] = "endNode";
static char __pyx_k__entries[] = "entries";
static char __pyx_k__execute[] = "execute";
static char __pyx_k__fileobj[] = "fileobj";
static char __pyx_k__findall[] = "findall";
static char __pyx_k__getattr[] = "getattr";
static char __pyx_k__getnext[] = "getnext";
static char __pyx_k__getpath[] = "getpath";
static char __pyx_k__getroot[] = "getroot";
static char __pyx_k__inspect[] = "inspect";
static char __pyx_k__is_tail[] = "is_tail";
static char __pyx_k__is_text[] = "is_text";
static char __pyx_k__isvalid[] = "isvalid";
static char __pyx_k__logging[] = "logging";
static char __pyx_k__matches[] = "matches";
static char __pyx_k__max_len[] = "max_len";
static char __pyx_k__message[] = "message";
static char __pyx_k__nodeTab[] = "nodeTab";
static char __pyx_k__options[] = "options";
static char __pyx_k__parseid[] = "parseid";
static char __pyx_k__prepare[] = "prepare";
static char __pyx_k__profile[] = "profile";
static char __pyx_k__receive[] = "receive";
static char __pyx_k__recover[] = "recover";
static char __pyx_k__relaxng[] = "relaxng";
static char __pyx_k__replace[] = "replace";
static char __pyx_k__resolve[] = "resolve";
static char __pyx_k__strides[] = "strides";
static char __pyx_k__strings[] = "strings";
static char __pyx_k__unicode[] = "unicode";
static char __pyx_k__unknown[] = "unknown";
static char __pyx_k__version[] = "version";
static char __pyx_k__CRITICAL[] = "CRITICAL";
static char __pyx_k__DENY_ALL[] = "DENY_ALL";
static char __pyx_k__DTDError[] = "DTDError";
static char __pyx_k__GzipFile[] = "GzipFile";
static char __pyx_k__KeyError[] = "KeyError";
static char __pyx_k__RELAXNGV[] = "RELAXNGV";
static char __pyx_k__Resolver[] = "Resolver";
static char __pyx_k__StringIO[] = "StringIO";
static char __pyx_k__SystemID[] = "SystemID";
static char __pyx_k__XInclude[] = "XInclude";
static char __pyx_k__XMLDTDID[] = "XMLDTDID";
static char __pyx_k___Element[] = "_Element";
static char __pyx_k____call__[] = "__call__";
static char __pyx_k____copy__[] = "__copy__";
static char __pyx_k____dict__[] = "__dict__";
static char __pyx_k____hash__[] = "__hash__";
static char __pyx_k____init__[] = "__init__";
static char __pyx_k____iter__[] = "__iter__";
static char __pyx_k____main__[] = "__main__";
static char __pyx_k____name__[] = "__name__";
static char __pyx_k____next__[] = "__next__";
static char __pyx_k____repr__[] = "__repr__";
static char __pyx_k____test__[] = "__test__";
static char __pyx_k___c_style[] = "_c_style";
static char __pyx_k___compile[] = "_compile";
static char __pyx_k___context[] = "_context";
static char __pyx_k___element[] = "_element";
static char __pyx_k___entries[] = "_entries";
static char __pyx_k___factory[] = "_factory";
static char __pyx_k___getName[] = "_getName";
static char __pyx_k___in_tail[] = "_in_tail";
static char __pyx_k___max_len[] = "_max_len";
static char __pyx_k___private[] = "_private";
static char __pyx_k___profile[] = "_profile";
static char __pyx_k___readDoc[] = "_readDoc";
static char __pyx_k___readDtd[] = "_readDtd";
static char __pyx_k___receive[] = "_receive";
static char __pyx_k___setroot[] = "_setroot";
static char __pyx_k___storage[] = "_storage";
static char __pyx_k__base_url[] = "base_url";
static char __pyx_k__builtins[] = "builtins";
static char __pyx_k__children[] = "children";
static char __pyx_k__elements[] = "elements";
static char __pyx_k__encoding[] = "encoding";
static char __pyx_k__entities[] = "entities";
static char __pyx_k__evaluate[] = "evaluate";
static char __pyx_k__exc_info[] = "exc_info";
static char __pyx_k__fallback[] = "fallback";
static char __pyx_k__filelike[] = "filelike";
static char __pyx_k__filename[] = "filename";
static char __pyx_k__findtext[] = "findtext";
static char __pyx_k__floatval[] = "floatval";
static char __pyx_k__for_html[] = "for_html";
static char __pyx_k__function[] = "function";
static char __pyx_k__getvalue[] = "getvalue";
static char __pyx_k__inSubset[] = "inSubset";
static char __pyx_k__internal[] = "internal";
static char __pyx_k__itemsize[] = "itemsize";
static char __pyx_k__iterfind[] = "iterfind";
static char __pyx_k__itertext[] = "itertext";
static char __pyx_k__load_dtd[] = "load_dtd";
static char __pyx_k__ns_clean[] = "ns_clean";
static char __pyx_k__parseXSL[] = "parseXSL";
static char __pyx_k__pi_class[] = "pi_class";
static char __pyx_k__position[] = "position";
static char __pyx_k__readonly[] = "readonly";
static char __pyx_k__reversed[] = "reversed";
static char __pyx_k__spaceMax[] = "spaceMax";
static char __pyx_k__spaceTab[] = "spaceTab";
static char __pyx_k__strparam[] = "strparam";
static char __pyx_k__tostring[] = "tostring";
static char __pyx_k__userData[] = "userData";
static char __pyx_k__validate[] = "validate";
static char __pyx_k__warnings[] = "warnings";
static char __pyx_k__xinclude[] = "xinclude";
static char __pyx_k__C14NError[] = "C14NError";
static char __pyx_k__Exception[] = "Exception";
static char __pyx_k__Extension[] = "Extension";
static char __pyx_k__LxmlError[] = "LxmlError";
static char __pyx_k__NAMESPACE[] = "NAMESPACE";
static char __pyx_k__TypeError[] = "TypeError";
static char __pyx_k__XMLSchema[] = "XMLSchema";
static char __pyx_k__XSLTError[] = "XSLTError";
static char __pyx_k___ErrorLog[] = "_ErrorLog";
static char __pyx_k____class__[] = "__class__";
static char __pyx_k___c_schema[] = "_c_schema";
static char __pyx_k___encoding[] = "_encoding";
static char __pyx_k___end_node[] = "_end_node";
static char __pyx_k___eval_arg[] = "_eval_arg";
static char __pyx_k___exc_info[] = "_exc_info";
static char __pyx_k___filelike[] = "_filelike";
static char __pyx_k___filename[] = "_filename";
static char __pyx_k___for_html[] = "_for_html";
static char __pyx_k___ns_stack[] = "_ns_stack";
static char __pyx_k___parseDoc[] = "_parseDoc";
static char __pyx_k___pop_node[] = "_pop_node";
static char __pyx_k___sax_plug[] = "_sax_plug";
static char __pyx_k___setError[] = "_setError";
static char __pyx_k___tag_href[] = "_tag_href";
static char __pyx_k___tag_name[] = "_tag_name";
static char __pyx_k___top_node[] = "_top_node";
static char __pyx_k___utf_refs[] = "_utf_refs";
static char __pyx_k___xsltCtxt[] = "_xsltCtxt";
static char __pyx_k__enumerate[] = "enumerate";
static char __pyx_k__error_log[] = "error_log";
static char __pyx_k__exclusive[] = "exclusive";
static char __pyx_k__extSubset[] = "extSubset";
static char __pyx_k__getLogger[] = "getLogger";
static char __pyx_k__getparent[] = "getparent";
static char __pyx_k__huge_tree[] = "huge_tree";
static char __pyx_k__inclusive[] = "inclusive";
static char __pyx_k__intSubset[] = "intSubset";
static char __pyx_k__iselement[] = "iselement";
static char __pyx_k__iteritems[] = "iteritems";
static char __pyx_k__lastError[] = "lastError";
static char __pyx_k__level_map[] = "level_map";
static char __pyx_k__localname[] = "localname";
static char __pyx_k__log_entry[] = "log_entry";
static char __pyx_k__namespace[] = "namespace";
static char __pyx_k__notations[] = "notations";
static char __pyx_k__pentities[] = "pentities";
static char __pyx_k__preceding[] = "preceding";
static char __pyx_k__public_id[] = "public_id";
static char __pyx_k__pushEvent[] = "pushEvent";
static char __pyx_k__read_file[] = "read_file";
static char __pyx_k__reference[] = "reference";
static char __pyx_k__resolvers[] = "resolvers";
static char __pyx_k__self_node[] = "self_node";
static char __pyx_k__startNode[] = "startNode";
static char __pyx_k__stringval[] = "stringval";
static char __pyx_k__tounicode[] = "tounicode";
static char __pyx_k__type_name[] = "type_name";
static char __pyx_k__variables[] = "variables";
static char __pyx_k__with_tail[] = "with_tail";
static char __pyx_k__xmlschema[] = "xmlschema";
static char __pyx_k__xpathCtxt[] = "xpathCtxt";
static char __pyx_k__DENY_WRITE[] = "DENY_WRITE";
static char __pyx_k__ErrorTypes[] = "ErrorTypes";
static char __pyx_k__ExternalID[] = "ExternalID";
static char __pyx_k__IGNORECASE[] = "IGNORECASE";
static char __pyx_k__IndexError[] = "IndexError";
static char __pyx_k__ParseError[] = "ParseError";
static char __pyx_k__PyErrorLog[] = "PyErrorLog";
static char __pyx_k__Schematron[] = "Schematron";
static char __pyx_k__SubElement[] = "SubElement";
static char __pyx_k__ValueError[] = "ValueError";
static char __pyx_k__XPathError[] = "XPathError";
static char __pyx_k___Validator[] = "_Validator";
static char __pyx_k___error_log[] = "_error_log";
static char __pyx_k___eval_lock[] = "_eval_lock";
static char __pyx_k___map_level[] = "_map_level";
static char __pyx_k___nextEvent[] = "_nextEvent";
static char __pyx_k___next_node[] = "_next_node";
static char __pyx_k___node_type[] = "_node_type";
static char __pyx_k___origSaxPI[] = "_origSaxPI";
static char __pyx_k___origSaxPi[] = "_origSaxPi";
static char __pyx_k___pop_event[] = "_pop_event";
static char __pyx_k___pystrings[] = "_pystrings";
static char __pyx_k___resolvers[] = "_resolvers";
static char __pyx_k___setAccess[] = "_setAccess";
static char __pyx_k___setNodeNs[] = "_setNodeNs";
static char __pyx_k___setTarget[] = "_setTarget";
static char __pyx_k___setupDict[] = "_setupDict";
static char __pyx_k___storeNext[] = "_storeNext";
static char __pyx_k___tag_tuple[] = "_tag_tuple";
static char __pyx_k___target_pi[] = "_target_pi";
static char __pyx_k___temp_refs[] = "_temp_refs";
static char __pyx_k___utf8_data[] = "_utf8_data";
static char __pyx_k___validator[] = "_validator";
static char __pyx_k___variables[] = "_variables";
static char __pyx_k___xpathCtxt[] = "_xpathCtxt";
static char __pyx_k__attributes[] = "attributes";
static char __pyx_k__cdataBlock[] = "cdataBlock";
static char __pyx_k__characters[] = "characters";
static char __pyx_k__create_dir[] = "create_dir";
static char __pyx_k__disableSAX[] = "disableSAX";
static char __pyx_k__disconnect[] = "disconnect";
static char __pyx_k__endElement[] = "endElement";
static char __pyx_k__extensions[] = "extensions";
static char __pyx_k__fromstring[] = "fromstring";
static char __pyx_k__getargspec[] = "getargspec";
static char __pyx_k__getdoctype[] = "getdoctype";
static char __pyx_k__getxmlinfo[] = "getxmlinfo";
static char __pyx_k__hasdoctype[] = "hasdoctype";
static char __pyx_k__input_node[] = "input_node";
static char __pyx_k__last_error[] = "last_error";
static char __pyx_k__level_name[] = "level_name";
static char __pyx_k__loadsubset[] = "loadsubset";
static char __pyx_k__namespaces[] = "namespaces";
static char __pyx_k__no_network[] = "no_network";
static char __pyx_k__nodesetval[] = "nodesetval";
static char __pyx_k__properties[] = "properties";
static char __pyx_k__remove_pis[] = "remove_pis";
static char __pyx_k__standalone[] = "standalone";
static char __pyx_k__startswith[] = "startswith";
static char __pyx_k__strip_tags[] = "strip_tags";
static char __pyx_k__suboffsets[] = "suboffsets";
static char __pyx_k__system_url[] = "system_url";
static char __pyx_k__wellFormed[] = "wellFormed";
static char __pyx_k__write_c14n[] = "write_c14n";
static char __pyx_k__write_file[] = "write_file";
static char __pyx_k__xslt_input[] = "xslt_input";
static char __pyx_k__ElementBase[] = "ElementBase";
static char __pyx_k__ElementTree[] = "ElementTree";
static char __pyx_k__ErrorLevels[] = "ErrorLevels";
static char __pyx_k__ImportError[] = "ImportError";
static char __pyx_k__LookupError[] = "LookupError";
static char __pyx_k__ParserError[] = "ParserError";
static char __pyx_k__SyntaxError[] = "SyntaxError";
static char __pyx_k__TreeBuilder[] = "TreeBuilder";
static char __pyx_k__XPATH_POINT[] = "XPATH_POINT";
static char __pyx_k__XPATH_RANGE[] = "XPATH_RANGE";
static char __pyx_k__XPATH_USERS[] = "XPATH_USERS";
static char __pyx_k___BaseParser[] = "_BaseParser";
static char __pyx_k___FeedParser[] = "_FeedParser";
static char __pyx_k____builtin__[] = "__builtin__";
static char __pyx_k____delitem__[] = "__delitem__";
static char __pyx_k____getitem__[] = "__getitem__";
static char __pyx_k____setitem__[] = "__setitem__";
static char __pyx_k____unicode__[] = "__unicode__";
static char __pyx_k____version__[] = "__version__";
static char __pyx_k___assertNode[] = "_assertNode";
static char __pyx_k___buffer_len[] = "_buffer_len";
static char __pyx_k___build_keys[] = "_build_keys";
static char __pyx_k___bytes_read[] = "_bytes_read";
static char __pyx_k___data_bytes[] = "_data_bytes";
static char __pyx_k___extensions[] = "_extensions";
static char __pyx_k___has_raised[] = "_has_raised";
static char __pyx_k___keysvalues[] = "_keysvalues";
static char __pyx_k___namespaces[] = "_namespaces";
static char __pyx_k___node_stack[] = "_node_stack";
static char __pyx_k___ns_counter[] = "_ns_counter";
static char __pyx_k___ns_uri_utf[] = "_ns_uri_utf";
static char __pyx_k___origSaxEnd[] = "_origSaxEnd";
static char __pyx_k___prefix_utf[] = "_prefix_utf";
static char __pyx_k___remove_pis[] = "_remove_pis";
static char __pyx_k___setGeneric[] = "_setGeneric";
static char __pyx_k___start_node[] = "_start_node";
static char __pyx_k___target_end[] = "_target_end";
static char __pyx_k___valid_ctxt[] = "_valid_ctxt";
static char __pyx_k__addprevious[] = "addprevious";
static char __pyx_k__assertValid[] = "assertValid";
static char __pyx_k__compression[] = "compression";
static char __pyx_k__domain_name[] = "domain_name";
static char __pyx_k__exc_context[] = "exc_context";
static char __pyx_k__external_id[] = "external_id";
static char __pyx_k__first_error[] = "first_error";
static char __pyx_k__functionURI[] = "functionURI";
static char __pyx_k__getchildren[] = "getchildren";
static char __pyx_k__getiterator[] = "getiterator";
static char __pyx_k__getprevious[] = "getprevious";
static char __pyx_k__getroottree[] = "getroottree";
static char __pyx_k__initDocDict[] = "initDocDict";
static char __pyx_k__initialized[] = "initialized";
static char __pyx_k__logger_name[] = "logger_name";
static char __pyx_k__makeelement[] = "makeelement";
static char __pyx_k__new_element[] = "new_element";
static char __pyx_k__old_element[] = "old_element";
static char __pyx_k__profile_run[] = "profile_run";
static char __pyx_k__progressive[] = "progressive";
static char __pyx_k__replacement[] = "replacement";
static char __pyx_k__set_context[] = "set_context";
static char __pyx_k__strip_cdata[] = "strip_cdata";
static char __pyx_k__ErrorDomains[] = "ErrorDomains";
static char __pyx_k__LXML_VERSION[] = "LXML_VERSION";
static char __pyx_k__RelaxNGError[] = "RelaxNGError";
static char __pyx_k___ElementTree[] = "_ElementTree";
static char __pyx_k____contains__[] = "__contains__";
static char __pyx_k____deepcopy__[] = "__deepcopy__";
static char __pyx_k____reversed__[] = "__reversed__";
static char __pyx_k___build_items[] = "_build_items";
static char __pyx_k___c_style_doc[] = "_c_style_doc";
static char __pyx_k___compile_map[] = "_compile_map";
static char __pyx_k___elementpath[] = "_elementpath";
static char __pyx_k___event_index[] = "_event_index";
static char __pyx_k___exc_context[] = "_exc_context";
static char __pyx_k___first_error[] = "_first_error";
static char __pyx_k___handleSaxPi[] = "_handleSaxPi";
static char __pyx_k___make_string[] = "_make_string";
static char __pyx_k___origSaxData[] = "_origSaxData";
static char __pyx_k___parse_chunk[] = "_parse_chunk";
static char __pyx_k___prefix_tail[] = "_prefix_tail";
static char __pyx_k___setFallback[] = "_setFallback";
static char __pyx_k___strip_cdata[] = "_strip_cdata";
static char __pyx_k___target_data[] = "_target_data";
static char __pyx_k__addNamespace[] = "addNamespace";
static char __pyx_k__copyToBuffer[] = "copyToBuffer";
static char __pyx_k__endElementNs[] = "endElementNs";
static char __pyx_k__entity_class[] = "entity_class";
static char __pyx_k__filter_types[] = "filter_types";
static char __pyx_k__free_context[] = "free_context";
static char __pyx_k__is_attribute[] = "is_attribute";
static char __pyx_k__isstandalone[] = "isstandalone";
static char __pyx_k__iterchildren[] = "iterchildren";
static char __pyx_k__itersiblings[] = "itersiblings";
static char __pyx_k__pretty_print[] = "pretty_print";
static char __pyx_k__read_network[] = "read_network";
static char __pyx_k__readcallback[] = "readcallback";
static char __pyx_k__resolve_file[] = "resolve_file";
static char __pyx_k__set_fallback[] = "set_fallback";
static char __pyx_k__startElement[] = "startElement";
static char __pyx_k__tostringlist[] = "tostringlist";
static char __pyx_k__DTDParseError[] = "DTDParseError";
static char __pyx_k__FutureWarning[] = "FutureWarning";
static char __pyx_k__StopIteration[] = "StopIteration";
static char __pyx_k__XIncludeError[] = "XIncludeError";
static char __pyx_k__XSLTExtension[] = "XSLTExtension";
static char __pyx_k__XSLTSaveError[] = "XSLTSaveError";
static char __pyx_k___ListErrorLog[] = "_ListErrorLog";
static char __pyx_k____docformat__[] = "__docformat__";
static char __pyx_k___c_ns_uri_utf[] = "_c_ns_uri_utf";
static char __pyx_k___c_schema_doc[] = "_c_schema_doc";
static char __pyx_k___class_lookup[] = "_class_lookup";
static char __pyx_k___context_node[] = "_context_node";
static char __pyx_k___event_filter[] = "_event_filter";
static char __pyx_k___handleSaxEnd[] = "_handleSaxEnd";
static char __pyx_k___initTagMatch[] = "_initTagMatch";
static char __pyx_k___next_element[] = "_next_element";
static char __pyx_k___origSaxCData[] = "_origSaxCData";
static char __pyx_k___origSaxStart[] = "_origSaxStart";
static char __pyx_k___setTagFilter[] = "_setTagFilter";
static char __pyx_k___source_proxy[] = "_source_proxy";
static char __pyx_k___store_raised[] = "_store_raised";
static char __pyx_k___target_start[] = "_target_start";
static char __pyx_k__class_mapping[] = "class_mapping";
static char __pyx_k__comment_class[] = "comment_class";
static char __pyx_k__compresslevel[] = "compresslevel";
static char __pyx_k__element_class[] = "element_class";
static char __pyx_k__enable_regexp[] = "enable_regexp";
static char __pyx_k__filter_levels[] = "filter_levels";
static char __pyx_k__get_namespace[] = "get_namespace";
static char __pyx_k__iterancestors[] = "iterancestors";
static char __pyx_k__output_parent[] = "output_parent";
static char __pyx_k__parse_options[] = "parse_options";
static char __pyx_k__resolve_empty[] = "resolve_empty";
static char __pyx_k__smart_strings[] = "smart_strings";
static char __pyx_k__with_comments[] = "with_comments";
static char __pyx_k__write_network[] = "write_network";
static char __pyx_k__AssertionError[] = "AssertionError";
static char __pyx_k__AttributeError[] = "AttributeError";
static char __pyx_k__LIBXML_VERSION[] = "LIBXML_VERSION";
static char __pyx_k__XMLSchemaError[] = "XMLSchemaError";
static char __pyx_k__XMLSyntaxError[] = "XMLSyntaxError";
static char __pyx_k__XPathEvalError[] = "XPathEvalError";
static char __pyx_k__XPathEvaluator[] = "XPathEvaluator";
static char __pyx_k__XSLTApplyError[] = "XSLTApplyError";
static char __pyx_k__XSLTParseError[] = "XSLTParseError";
static char __pyx_k___assertHasRoot[] = "_assertHasRoot";
static char __pyx_k___buffer_refcnt[] = "_buffer_refcnt";
static char __pyx_k___class_mapping[] = "_class_mapping";
static char __pyx_k___createContext[] = "_createContext";
static char __pyx_k___element_stack[] = "_element_stack";
static char __pyx_k___getThreadDict[] = "_getThreadDict";
static char __pyx_k___handleSaxData[] = "_handleSaxData";
static char __pyx_k___handle_result[] = "_handle_result";
static char __pyx_k___newParserCtxt[] = "_newParserCtxt";
static char __pyx_k___parse_options[] = "_parse_options";
static char __pyx_k___python_target[] = "_python_target";
static char __pyx_k___run_transform[] = "_run_transform";
static char __pyx_k___start_element[] = "_start_element";
static char __pyx_k__access_control[] = "access_control";
static char __pyx_k__attribute_name[] = "attribute_name";
static char __pyx_k__buildNewPrefix[] = "buildNewPrefix";
static char __pyx_k__dtd_validation[] = "dtd_validation";
static char __pyx_k__filter_domains[] = "filter_domains";
static char __pyx_k__free_after_use[] = "free_after_use";
static char __pyx_k__fromstringlist[] = "fromstringlist";
static char __pyx_k__initParserDict[] = "initParserDict";
static char __pyx_k__internalSubset[] = "internalSubset";
static char __pyx_k__resolve_string[] = "resolve_string";
static char __pyx_k__startElementNs[] = "startElementNs";
static char __pyx_k__strip_elements[] = "strip_elements";
static char __pyx_k__DocumentInvalid[] = "DocumentInvalid";
static char __pyx_k__LIBXSLT_VERSION[] = "LIBXSLT_VERSION";
static char __pyx_k__LxmlSyntaxError[] = "LxmlSyntaxError";
static char __pyx_k__SchematronError[] = "SchematronError";
static char __pyx_k___GlobalErrorLog[] = "_GlobalErrorLog";
static char __pyx_k___access_control[] = "_access_control";
static char __pyx_k___close_filelike[] = "_close_filelike";
static char __pyx_k___default_parser[] = "_default_parser";
static char __pyx_k___free_after_use[] = "_free_after_use";
static char __pyx_k___function_cache[] = "_function_cache";
static char __pyx_k___handleSaxStart[] = "_handleSaxStart";
static char __pyx_k___nextNodeAnyTag[] = "_nextNodeAnyTag";
static char __pyx_k___nsextract_path[] = "_nsextract_path";
static char __pyx_k___origSaxComment[] = "_origSaxComment";
static char __pyx_k___origSaxDoctype[] = "_origSaxDoctype";
static char __pyx_k___origSaxEndNoNs[] = "_origSaxEndNoNs";
static char __pyx_k___parser_context[] = "_parser_context";
static char __pyx_k___raiseImmutable[] = "_raiseImmutable";
static char __pyx_k___setEventFilter[] = "_setEventFilter";
static char __pyx_k___target_comment[] = "_target_comment";
static char __pyx_k___target_doctype[] = "_target_doctype";
static char __pyx_k___temp_documents[] = "_temp_documents";
static char __pyx_k__apply_templates[] = "apply_templates";
static char __pyx_k__clear_error_log[] = "clear_error_log";
static char __pyx_k__element_factory[] = "element_factory";
static char __pyx_k__element_or_tree[] = "element_or_tree";
static char __pyx_k__iterdescendants[] = "iterdescendants";
static char __pyx_k__remove_comments[] = "remove_comments";
static char __pyx_k__replaceEntities[] = "replaceEntities";
static char __pyx_k__tree_or_element[] = "tree_or_element";
static char __pyx_k__xml_declaration[] = "xml_declaration";
static char __pyx_k__DTDValidateError[] = "DTDValidateError";
static char __pyx_k__XPathResultError[] = "XPathResultError";
static char __pyx_k__XPathSyntaxError[] = "XPathSyntaxError";
static char __pyx_k____getattribute__[] = "__getattribute__";
static char __pyx_k___cleanup_context[] = "_cleanup_context";
static char __pyx_k___lookup_function[] = "_lookup_function";
static char __pyx_k___newSaxValidator[] = "_newSaxValidator";
static char __pyx_k___parseUnicodeDoc[] = "_parseUnicodeDoc";
static char __pyx_k___raise_if_stored[] = "_raise_if_stored";
static char __pyx_k___release_context[] = "_release_context";
static char __pyx_k___remove_comments[] = "_remove_comments";
static char __pyx_k___store_exception[] = "_store_exception";
static char __pyx_k__backslashreplace[] = "backslashreplace";
static char __pyx_k__default_resolver[] = "default_resolver";
static char __pyx_k__etree_or_element[] = "etree_or_element";
static char __pyx_k__function_mapping[] = "function_mapping";
static char __pyx_k__getDefaultParser[] = "getDefaultParser";
static char __pyx_k__register_context[] = "register_context";
static char __pyx_k__resolve_entities[] = "resolve_entities";
static char __pyx_k__resolve_filename[] = "resolve_filename";
static char __pyx_k__setDefaultParser[] = "setDefaultParser";
static char __pyx_k__strip_attributes[] = "strip_attributes";
static char __pyx_k__FunctionNamespace[] = "FunctionNamespace";
static char __pyx_k__LxmlRegistryError[] = "LxmlRegistryError";
static char __pyx_k__RelaxNGErrorTypes[] = "RelaxNGErrorTypes";
static char __pyx_k__RelaxNGParseError[] = "RelaxNGParseError";
static char __pyx_k__XPATH_LOCATIONSET[] = "XPATH_LOCATIONSET";
static char __pyx_k___ResolverRegistry[] = "_ResolverRegistry";
static char __pyx_k___accepted_domains[] = "_accepted_domains";
static char __pyx_k___default_encoding[] = "_default_encoding";
static char __pyx_k___default_resolver[] = "_default_resolver";
static char __pyx_k___etree_or_element[] = "_etree_or_element";
static char __pyx_k___getParserContext[] = "_getParserContext";
static char __pyx_k___handleSaxComment[] = "_handleSaxComment";
static char __pyx_k___handleSaxDoctype[] = "_handleSaxDoctype";
static char __pyx_k___nextNodeMatchTag[] = "_nextNodeMatchTag";
static char __pyx_k___origSaxStartNoNs[] = "_origSaxStartNoNs";
static char __pyx_k___parseDocFromFile[] = "_parseDocFromFile";
static char __pyx_k___raise_eval_error[] = "_raise_eval_error";
static char __pyx_k___register_context[] = "_register_context";
static char __pyx_k___sax_event_filter[] = "_sax_event_filter";
static char __pyx_k__filter_from_level[] = "filter_from_level";
static char __pyx_k__initThreadDictRef[] = "initThreadDictRef";
static char __pyx_k__popImpliedContext[] = "popImpliedContext";
static char __pyx_k__registerVariables[] = "registerVariables";
static char __pyx_k__remove_blank_text[] = "remove_blank_text";
static char __pyx_k__SerialisationError[] = "SerialisationError";
static char __pyx_k__UnicodeDecodeError[] = "UnicodeDecodeError";
static char __pyx_k__UnicodeEncodeError[] = "UnicodeEncodeError";
static char __pyx_k__XPathFunctionError[] = "XPathFunctionError";
static char __pyx_k__XSLTExtensionError[] = "XSLTExtensionError";
static char __pyx_k___NamespaceRegistry[] = "_NamespaceRegistry";
static char __pyx_k___createParserInput[] = "_createParserInput";
static char __pyx_k___dependent_proxies[] = "_dependent_proxies";
static char __pyx_k___element_stack_pop[] = "_element_stack_pop";
static char __pyx_k___eval_context_dict[] = "_eval_context_dict";
static char __pyx_k___fallback_function[] = "_fallback_function";
static char __pyx_k___findOrBuildNodeNs[] = "_findOrBuildNodeNs";
static char __pyx_k___global_namespaces[] = "_global_namespaces";
static char __pyx_k___handleParseResult[] = "_handleParseResult";
static char __pyx_k___initParserContext[] = "_initParserContext";
static char __pyx_k___newPushParserCtxt[] = "_newPushParserCtxt";
static char __pyx_k___raise_parse_error[] = "_raise_parse_error";
static char __pyx_k___release_temp_refs[] = "_release_temp_refs";
static char __pyx_k___set_xpath_context[] = "_set_xpath_context";
static char __pyx_k___start_takes_nsmap[] = "_start_takes_nsmap";
static char __pyx_k__attribute_defaults[] = "attribute_defaults";
static char __pyx_k__cleanup_namespaces[] = "cleanup_namespaces";
static char __pyx_k__filter_from_errors[] = "filter_from_errors";
static char __pyx_k__filter_from_fatals[] = "filter_from_fatals";
static char __pyx_k__findImpliedContext[] = "findImpliedContext";
static char __pyx_k__get_default_parser[] = "get_default_parser";
static char __pyx_k__getdefaultencoding[] = "getdefaultencoding";
static char __pyx_k__pushImpliedContext[] = "pushImpliedContext";
static char __pyx_k__register_namespace[] = "register_namespace";
static char __pyx_k__set_default_parser[] = "set_default_parser";
static char __pyx_k__unregister_context[] = "unregister_context";
static char __pyx_k__NotImplementedError[] = "NotImplementedError";
static char __pyx_k__XMLSchemaParseError[] = "XMLSchemaParseError";
static char __pyx_k___TargetParserResult[] = "_TargetParserResult";
static char __pyx_k___XPathEvaluatorBase[] = "_XPathEvaluatorBase";
static char __pyx_k___assureDocGetsFreed[] = "_assureDocGetsFreed";
static char __pyx_k___createOutputBuffer[] = "_createOutputBuffer";
static char __pyx_k___extension_elements[] = "_extension_elements";
static char __pyx_k___handleSaxException[] = "_handleSaxException";
static char __pyx_k___resetParserContext[] = "_resetParserContext";
static char __pyx_k___setSaxParserTarget[] = "_setSaxParserTarget";
static char __pyx_k__build_smart_strings[] = "build_smart_strings";
static char __pyx_k__initXPathParserDict[] = "initXPathParserDict";
static char __pyx_k__register_namespaces[] = "register_namespaces";
static PyObject *__pyx_kp_u_1;
static PyObject *__pyx_kp_u_10;
static PyObject *__pyx_kp_b_100;
static PyObject *__pyx_kp_s_100;
static PyObject *__pyx_kp_u_100;
static PyObject *__pyx_kp_u_101;
static PyObject *__pyx_kp_u_102;
static PyObject *__pyx_kp_s_103;
static PyObject *__pyx_kp_u_104;
static PyObject *__pyx_kp_u_105;
static PyObject *__pyx_kp_u_106;
static PyObject *__pyx_kp_u_107;
static PyObject *__pyx_kp_s_11;
static PyObject *__pyx_kp_u_111;
static PyObject *__pyx_kp_u_112;
static PyObject *__pyx_n_s_113;
static PyObject *__pyx_kp_u_114;
static PyObject *__pyx_kp_u_115;
static PyObject *__pyx_n_s_116;
static PyObject *__pyx_kp_u_117;
static PyObject *__pyx_kp_u_118;
static PyObject *__pyx_kp_u_119;
static PyObject *__pyx_kp_s_12;
static PyObject *__pyx_kp_s_120;
static PyObject *__pyx_kp_u_121;
static PyObject *__pyx_n_s_122;
static PyObject *__pyx_n_u_123;
static PyObject *__pyx_n_s_124;
static PyObject *__pyx_kp_s_13;
static PyObject *__pyx_n_s_130;
static PyObject *__pyx_kp_u_131;
static PyObject *__pyx_kp_u_132;
static PyObject *__pyx_kp_u_133;
static PyObject *__pyx_kp_u_134;
static PyObject *__pyx_n_s_135;
static PyObject *__pyx_kp_u_136;
static PyObject *__pyx_kp_u_137;
static PyObject *__pyx_n_s_138;
static PyObject *__pyx_n_s_139;
static PyObject *__pyx_kp_b_14;
static PyObject *__pyx_kp_s_14;
static PyObject *__pyx_kp_u_14;
static PyObject *__pyx_n_s_140;
static PyObject *__pyx_n_s_141;
static PyObject *__pyx_kp_u_142;
static PyObject *__pyx_kp_u_143;
static PyObject *__pyx_n_s_144;
static PyObject *__pyx_n_s_145;
static PyObject *__pyx_kp_u_146;
static PyObject *__pyx_n_s_147;
static PyObject *__pyx_n_s_148;
static PyObject *__pyx_kp_u_149;
static PyObject *__pyx_n_s_150;
static PyObject *__pyx_kp_u_151;
static PyObject *__pyx_kp_u_152;
static PyObject *__pyx_n_s_153;
static PyObject *__pyx_kp_u_154;
static PyObject *__pyx_kp_u_16;
static PyObject *__pyx_kp_u_17;
static PyObject *__pyx_kp_u_18;
static PyObject *__pyx_n_s_188;
static PyObject *__pyx_kp_u_189;
static PyObject *__pyx_kp_u_19;
static PyObject *__pyx_kp_u_190;
static PyObject *__pyx_kp_u_191;
static PyObject *__pyx_n_s_192;
static PyObject *__pyx_kp_u_193;
static PyObject *__pyx_kp_u_194;
static PyObject *__pyx_kp_u_195;
static PyObject *__pyx_kp_u_196;
static PyObject *__pyx_kp_u_197;
static PyObject *__pyx_n_s_198;
static PyObject *__pyx_kp_u_199;
static PyObject *__pyx_kp_b_2;
static PyObject *__pyx_kp_s_2;
static PyObject *__pyx_kp_u_2;
static PyObject *__pyx_kp_u_20;
static PyObject *__pyx_kp_u_200;
static PyObject *__pyx_kp_u_201;
static PyObject *__pyx_kp_u_21;
static PyObject *__pyx_kp_u_212;
static PyObject *__pyx_kp_u_216;
static PyObject *__pyx_kp_u_217;
static PyObject *__pyx_kp_u_218;
static PyObject *__pyx_kp_u_219;
static PyObject *__pyx_kp_u_22;
static PyObject *__pyx_kp_u_220;
static PyObject *__pyx_kp_u_221;
static PyObject *__pyx_kp_u_222;
static PyObject *__pyx_kp_u_223;
static PyObject *__pyx_kp_u_23;
static PyObject *__pyx_kp_u_237;
static PyObject *__pyx_kp_u_238;
static PyObject *__pyx_kp_u_24;
static PyObject *__pyx_kp_u_240;
static PyObject *__pyx_kp_u_241;
static PyObject *__pyx_kp_u_242;
static PyObject *__pyx_kp_u_243;
static PyObject *__pyx_n_s_244;
static PyObject *__pyx_n_s_245;
static PyObject *__pyx_kp_u_246;
static PyObject *__pyx_kp_u_247;
static PyObject *__pyx_kp_u_248;
static PyObject *__pyx_n_s_249;
static PyObject *__pyx_kp_u_25;
static PyObject *__pyx_n_s_250;
static PyObject *__pyx_kp_u_251;
static PyObject *__pyx_kp_u_252;
static PyObject *__pyx_kp_u_253;
static PyObject *__pyx_kp_u_254;
static PyObject *__pyx_kp_u_255;
static PyObject *__pyx_kp_b_256;
static PyObject *__pyx_n_s_257;
static PyObject *__pyx_kp_u_258;
static PyObject *__pyx_kp_u_259;
static PyObject *__pyx_kp_u_26;
static PyObject *__pyx_kp_u_260;
static PyObject *__pyx_kp_u_261;
static PyObject *__pyx_kp_u_262;
static PyObject *__pyx_n_s_263;
static PyObject *__pyx_n_s_264;
static PyObject *__pyx_n_s_265;
static PyObject *__pyx_kp_u_266;
static PyObject *__pyx_n_s_267;
static PyObject *__pyx_n_s_268;
static PyObject *__pyx_n_s_269;
static PyObject *__pyx_kp_u_27;
static PyObject *__pyx_n_s_270;
static PyObject *__pyx_n_s_271;
static PyObject *__pyx_n_s_272;
static PyObject *__pyx_kp_u_273;
static PyObject *__pyx_kp_u_274;
static PyObject *__pyx_kp_u_275;
static PyObject *__pyx_n_s_28;
static PyObject *__pyx_kp_s_287;
static PyObject *__pyx_kp_u_289;
static PyObject *__pyx_kp_u_29;
static PyObject *__pyx_kp_u_295;
static PyObject *__pyx_kp_u_296;
static PyObject *__pyx_kp_u_297;
static PyObject *__pyx_kp_u_298;
static PyObject *__pyx_kp_u_3;
static PyObject *__pyx_kp_u_30;
static PyObject *__pyx_kp_u_300;
static PyObject *__pyx_n_s_301;
static PyObject *__pyx_kp_u_302;
static PyObject *__pyx_kp_u_305;
static PyObject *__pyx_kp_u_306;
static PyObject *__pyx_n_s_307;
static PyObject *__pyx_kp_u_308;
static PyObject *__pyx_kp_s_309;
static PyObject *__pyx_kp_u_309;
static PyObject *__pyx_kp_u_31;
static PyObject *__pyx_kp_u_310;
static PyObject *__pyx_kp_u_311;
static PyObject *__pyx_kp_u_312;
static PyObject *__pyx_kp_u_313;
static PyObject *__pyx_kp_u_314;
static PyObject *__pyx_kp_u_315;
static PyObject *__pyx_kp_u_316;
static PyObject *__pyx_kp_u_317;
static PyObject *__pyx_n_s_319;
static PyObject *__pyx_kp_u_32;
static PyObject *__pyx_kp_u_320;
static PyObject *__pyx_kp_u_321;
static PyObject *__pyx_kp_u_322;
static PyObject *__pyx_kp_u_325;
static PyObject *__pyx_kp_u_326;
static PyObject *__pyx_kp_u_327;
static PyObject *__pyx_kp_u_328;
static PyObject *__pyx_kp_u_329;
static PyObject *__pyx_kp_u_33;
static PyObject *__pyx_kp_u_330;
static PyObject *__pyx_kp_u_332;
static PyObject *__pyx_kp_u_333;
static PyObject *__pyx_kp_u_334;
static PyObject *__pyx_kp_u_335;
static PyObject *__pyx_n_s_336;
static PyObject *__pyx_kp_u_337;
static PyObject *__pyx_n_s_339;
static PyObject *__pyx_kp_u_34;
static PyObject *__pyx_n_s_340;
static PyObject *__pyx_kp_s_341;
static PyObject *__pyx_kp_u_341;
static PyObject *__pyx_kp_u_342;
static PyObject *__pyx_kp_u_343;
static PyObject *__pyx_n_s_344;
static PyObject *__pyx_kp_u_345;
static PyObject *__pyx_kp_u_346;
static PyObject *__pyx_n_s_347;
static PyObject *__pyx_kp_u_348;
static PyObject *__pyx_n_s_349;
static PyObject *__pyx_kp_u_350;
static PyObject *__pyx_kp_u_383;
static PyObject *__pyx_n_s_384;
static PyObject *__pyx_n_s_385;
static PyObject *__pyx_kp_s_386;
static PyObject *__pyx_kp_s_387;
static PyObject *__pyx_kp_s_388;
static PyObject *__pyx_kp_s_389;
static PyObject *__pyx_kp_s_390;
static PyObject *__pyx_kp_s_391;
static PyObject *__pyx_kp_s_392;
static PyObject *__pyx_kp_s_393;
static PyObject *__pyx_kp_s_394;
static PyObject *__pyx_kp_u_395;
static PyObject *__pyx_kp_u_396;
static PyObject *__pyx_n_s_397;
static PyObject *__pyx_kp_u_398;
static PyObject *__pyx_kp_s_399;
static PyObject *__pyx_kp_u_4;
static PyObject *__pyx_kp_s_400;
static PyObject *__pyx_kp_s_401;
static PyObject *__pyx_kp_s_402;
static PyObject *__pyx_kp_u_403;
static PyObject *__pyx_kp_u_404;
static PyObject *__pyx_kp_u_405;
static PyObject *__pyx_kp_u_406;
static PyObject *__pyx_kp_u_407;
static PyObject *__pyx_kp_u_408;
static PyObject *__pyx_kp_u_409;
static PyObject *__pyx_kp_u_41;
static PyObject *__pyx_kp_u_410;
static PyObject *__pyx_kp_u_411;
static PyObject *__pyx_kp_u_412;
static PyObject *__pyx_kp_u_413;
static PyObject *__pyx_kp_u_414;
static PyObject *__pyx_kp_u_415;
static PyObject *__pyx_kp_u_416;
static PyObject *__pyx_kp_s_417;
static PyObject *__pyx_kp_s_418;
static PyObject *__pyx_kp_s_419;
static PyObject *__pyx_kp_s_420;
static PyObject *__pyx_kp_s_421;
static PyObject *__pyx_n_s_422;
static PyObject *__pyx_kp_s_423;
static PyObject *__pyx_kp_s_424;
static PyObject *__pyx_kp_s_425;
static PyObject *__pyx_kp_s_426;
static PyObject *__pyx_kp_s_427;
static PyObject *__pyx_kp_s_428;
static PyObject *__pyx_kp_s_429;
static PyObject *__pyx_kp_u_43;
static PyObject *__pyx_kp_s_430;
static PyObject *__pyx_kp_s_431;
static PyObject *__pyx_kp_s_432;
static PyObject *__pyx_kp_s_433;
static PyObject *__pyx_kp_s_434;
static PyObject *__pyx_kp_s_435;
static PyObject *__pyx_n_s_436;
static PyObject *__pyx_kp_u_437;
static PyObject *__pyx_kp_u_438;
static PyObject *__pyx_kp_s_439;
static PyObject *__pyx_kp_u_44;
static PyObject *__pyx_kp_s_440;
static PyObject *__pyx_kp_s_441;
static PyObject *__pyx_kp_s_442;
static PyObject *__pyx_kp_s_443;
static PyObject *__pyx_kp_s_444;
static PyObject *__pyx_kp_s_445;
static PyObject *__pyx_kp_s_446;
static PyObject *__pyx_kp_s_447;
static PyObject *__pyx_kp_s_448;
static PyObject *__pyx_kp_u_449;
static PyObject *__pyx_kp_u_45;
static PyObject *__pyx_kp_s_450;
static PyObject *__pyx_kp_s_451;
static PyObject *__pyx_kp_s_452;
static PyObject *__pyx_kp_u_453;
static PyObject *__pyx_kp_u_454;
static PyObject *__pyx_kp_u_455;
static PyObject *__pyx_kp_u_456;
static PyObject *__pyx_kp_u_457;
static PyObject *__pyx_kp_u_458;
static PyObject *__pyx_kp_u_459;
static PyObject *__pyx_kp_u_46;
static PyObject *__pyx_kp_u_460;
static PyObject *__pyx_kp_u_461;
static PyObject *__pyx_n_s_462;
static PyObject *__pyx_kp_u_463;
static PyObject *__pyx_kp_u_464;
static PyObject *__pyx_kp_u_465;
static PyObject *__pyx_kp_u_466;
static PyObject *__pyx_kp_u_467;
static PyObject *__pyx_n_s_468;
static PyObject *__pyx_kp_u_469;
static PyObject *__pyx_kp_u_47;
static PyObject *__pyx_kp_u_470;
static PyObject *__pyx_kp_u_471;
static PyObject *__pyx_kp_u_472;
static PyObject *__pyx_kp_u_473;
static PyObject *__pyx_kp_u_474;
static PyObject *__pyx_kp_u_475;
static PyObject *__pyx_kp_u_476;
static PyObject *__pyx_kp_u_477;
static PyObject *__pyx_kp_u_478;
static PyObject *__pyx_kp_u_479;
static PyObject *__pyx_kp_u_48;
static PyObject *__pyx_kp_u_480;
static PyObject *__pyx_kp_u_481;
static PyObject *__pyx_kp_u_482;
static PyObject *__pyx_kp_u_483;
static PyObject *__pyx_kp_u_484;
static PyObject *__pyx_kp_u_485;
static PyObject *__pyx_kp_u_486;
static PyObject *__pyx_kp_u_487;
static PyObject *__pyx_kp_u_488;
static PyObject *__pyx_kp_u_489;
static PyObject *__pyx_kp_u_49;
static PyObject *__pyx_kp_u_490;
static PyObject *__pyx_kp_u_491;
static PyObject *__pyx_kp_u_492;
static PyObject *__pyx_kp_u_493;
static PyObject *__pyx_kp_u_494;
static PyObject *__pyx_kp_u_495;
static PyObject *__pyx_kp_u_496;
static PyObject *__pyx_kp_u_497;
static PyObject *__pyx_kp_u_498;
static PyObject *__pyx_kp_u_499;
static PyObject *__pyx_kp_u_5;
static PyObject *__pyx_kp_u_50;
static PyObject *__pyx_kp_u_500;
static PyObject *__pyx_kp_u_501;
static PyObject *__pyx_kp_u_502;
static PyObject *__pyx_kp_u_503;
static PyObject *__pyx_kp_u_504;
static PyObject *__pyx_kp_u_505;
static PyObject *__pyx_kp_u_506;
static PyObject *__pyx_kp_u_507;
static PyObject *__pyx_kp_u_508;
static PyObject *__pyx_kp_u_509;
static PyObject *__pyx_kp_u_51;
static PyObject *__pyx_kp_u_510;
static PyObject *__pyx_kp_u_511;
static PyObject *__pyx_kp_u_512;
static PyObject *__pyx_kp_u_513;
static PyObject *__pyx_n_s_514;
static PyObject *__pyx_kp_u_515;
static PyObject *__pyx_kp_u_516;
static PyObject *__pyx_kp_u_517;
static PyObject *__pyx_kp_u_518;
static PyObject *__pyx_kp_u_519;
static PyObject *__pyx_kp_u_52;
static PyObject *__pyx_kp_u_520;
static PyObject *__pyx_kp_u_521;
static PyObject *__pyx_kp_u_522;
static PyObject *__pyx_kp_u_523;
static PyObject *__pyx_kp_u_524;
static PyObject *__pyx_kp_u_525;
static PyObject *__pyx_kp_u_526;
static PyObject *__pyx_kp_u_527;
static PyObject *__pyx_kp_u_528;
static PyObject *__pyx_kp_u_529;
static PyObject *__pyx_kp_u_53;
static PyObject *__pyx_kp_u_530;
static PyObject *__pyx_kp_u_531;
static PyObject *__pyx_kp_u_532;
static PyObject *__pyx_kp_u_533;
static PyObject *__pyx_kp_u_534;
static PyObject *__pyx_kp_u_535;
static PyObject *__pyx_kp_u_536;
static PyObject *__pyx_kp_u_537;
static PyObject *__pyx_kp_u_538;
static PyObject *__pyx_kp_u_539;
static PyObject *__pyx_kp_u_54;
static PyObject *__pyx_kp_u_540;
static PyObject *__pyx_kp_u_541;
static PyObject *__pyx_kp_u_542;
static PyObject *__pyx_kp_u_543;
static PyObject *__pyx_kp_u_544;
static PyObject *__pyx_kp_u_545;
static PyObject *__pyx_kp_u_546;
static PyObject *__pyx_kp_u_547;
static PyObject *__pyx_kp_u_548;
static PyObject *__pyx_kp_u_549;
static PyObject *__pyx_kp_u_55;
static PyObject *__pyx_kp_u_550;
static PyObject *__pyx_kp_u_551;
static PyObject *__pyx_kp_u_552;
static PyObject *__pyx_kp_u_553;
static PyObject *__pyx_kp_u_554;
static PyObject *__pyx_kp_u_555;
static PyObject *__pyx_kp_u_556;
static PyObject *__pyx_kp_u_557;
static PyObject *__pyx_n_s_558;
static PyObject *__pyx_kp_u_559;
static PyObject *__pyx_kp_u_56;
static PyObject *__pyx_kp_u_560;
static PyObject *__pyx_kp_u_561;
static PyObject *__pyx_kp_u_562;
static PyObject *__pyx_kp_u_563;
static PyObject *__pyx_kp_u_564;
static PyObject *__pyx_kp_u_565;
static PyObject *__pyx_kp_u_566;
static PyObject *__pyx_kp_u_567;
static PyObject *__pyx_kp_u_568;
static PyObject *__pyx_kp_u_569;
static PyObject *__pyx_kp_u_57;
static PyObject *__pyx_kp_u_570;
static PyObject *__pyx_kp_u_571;
static PyObject *__pyx_n_s_572;
static PyObject *__pyx_kp_u_573;
static PyObject *__pyx_kp_u_574;
static PyObject *__pyx_kp_u_575;
static PyObject *__pyx_n_s_576;
static PyObject *__pyx_kp_u_577;
static PyObject *__pyx_n_s_578;
static PyObject *__pyx_kp_u_579;
static PyObject *__pyx_n_s_580;
static PyObject *__pyx_kp_u_581;
static PyObject *__pyx_kp_u_582;
static PyObject *__pyx_kp_u_583;
static PyObject *__pyx_n_s_584;
static PyObject *__pyx_kp_u_585;
static PyObject *__pyx_kp_u_586;
static PyObject *__pyx_kp_u_587;
static PyObject *__pyx_kp_u_588;
static PyObject *__pyx_kp_u_589;
static PyObject *__pyx_kp_u_590;
static PyObject *__pyx_kp_u_591;
static PyObject *__pyx_kp_u_592;
static PyObject *__pyx_kp_u_593;
static PyObject *__pyx_kp_u_594;
static PyObject *__pyx_kp_u_595;
static PyObject *__pyx_n_s_596;
static PyObject *__pyx_kp_u_597;
static PyObject *__pyx_kp_u_598;
static PyObject *__pyx_kp_u_599;
static PyObject *__pyx_kp_u_6;
static PyObject *__pyx_kp_u_600;
static PyObject *__pyx_kp_u_601;
static PyObject *__pyx_kp_u_602;
static PyObject *__pyx_kp_u_603;
static PyObject *__pyx_kp_u_604;
static PyObject *__pyx_kp_u_605;
static PyObject *__pyx_kp_u_606;
static PyObject *__pyx_kp_u_607;
static PyObject *__pyx_kp_u_608;
static PyObject *__pyx_kp_u_609;
static PyObject *__pyx_kp_u_610;
static PyObject *__pyx_kp_u_611;
static PyObject *__pyx_kp_u_612;
static PyObject *__pyx_kp_u_613;
static PyObject *__pyx_kp_u_614;
static PyObject *__pyx_kp_u_615;
static PyObject *__pyx_kp_u_616;
static PyObject *__pyx_kp_u_617;
static PyObject *__pyx_kp_u_618;
static PyObject *__pyx_kp_u_619;
static PyObject *__pyx_kp_u_62;
static PyObject *__pyx_kp_u_620;
static PyObject *__pyx_n_s_621;
static PyObject *__pyx_kp_u_622;
static PyObject *__pyx_kp_u_623;
static PyObject *__pyx_kp_u_624;
static PyObject *__pyx_n_s_625;
static PyObject *__pyx_kp_u_626;
static PyObject *__pyx_kp_u_627;
static PyObject *__pyx_kp_u_628;
static PyObject *__pyx_kp_u_629;
static PyObject *__pyx_kp_u_63;
static PyObject *__pyx_kp_u_630;
static PyObject *__pyx_kp_u_631;
static PyObject *__pyx_kp_u_632;
static PyObject *__pyx_n_s_633;
static PyObject *__pyx_kp_u_634;
static PyObject *__pyx_kp_u_635;
static PyObject *__pyx_kp_u_636;
static PyObject *__pyx_kp_u_637;
static PyObject *__pyx_kp_u_638;
static PyObject *__pyx_kp_u_639;
static PyObject *__pyx_n_s_64;
static PyObject *__pyx_kp_u_640;
static PyObject *__pyx_kp_u_641;
static PyObject *__pyx_kp_u_642;
static PyObject *__pyx_kp_u_643;
static PyObject *__pyx_kp_u_65;
static PyObject *__pyx_kp_u_66;
static PyObject *__pyx_kp_u_67;
static PyObject *__pyx_kp_u_68;
static PyObject *__pyx_kp_u_69;
static PyObject *__pyx_kp_u_7;
static PyObject *__pyx_kp_u_70;
static PyObject *__pyx_n_s_71;
static PyObject *__pyx_kp_s_72;
static PyObject *__pyx_kp_u_73;
static PyObject *__pyx_kp_u_74;
static PyObject *__pyx_kp_u_77;
static PyObject *__pyx_kp_u_78;
static PyObject *__pyx_kp_s_79;
static PyObject *__pyx_kp_u_79;
static PyObject *__pyx_kp_u_8;
static PyObject *__pyx_kp_u_83;
static PyObject *__pyx_kp_u_88;
static PyObject *__pyx_kp_u_89;
static PyObject *__pyx_kp_u_9;
static PyObject *__pyx_kp_u_94;
static PyObject *__pyx_kp_u_95;
static PyObject *__pyx_kp_u_98;
static PyObject *__pyx_n_s__A;
static PyObject *__pyx_n_u__ASCII;
static PyObject *__pyx_n_s__AssertionError;
static PyObject *__pyx_n_s__AttributeError;
static PyObject *__pyx_n_s__BytesIO;
static PyObject *__pyx_n_s__C14NError;
static PyObject *__pyx_n_s__CRITICAL;
static PyObject *__pyx_n_s__Comment;
static PyObject *__pyx_n_s__DEBUG;
static PyObject *__pyx_n_s__DENY_ALL;
static PyObject *__pyx_n_s__DENY_WRITE;
static PyObject *__pyx_n_s__DTD;
static PyObject *__pyx_n_s__DTDError;
static PyObject *__pyx_n_s__DTDParseError;
static PyObject *__pyx_n_s__DTDValidateError;
static PyObject *__pyx_n_s__DocInfo;
static PyObject *__pyx_n_s__DocumentInvalid;
static PyObject *__pyx_n_s__ERROR;
static PyObject *__pyx_n_s__Element;
static PyObject *__pyx_n_s__ElementBase;
static PyObject *__pyx_n_s__ElementTree;
static PyObject *__pyx_n_s__Entity;
static PyObject *__pyx_n_s__Error;
static PyObject *__pyx_n_s__ErrorDomains;
static PyObject *__pyx_n_s__ErrorLevels;
static PyObject *__pyx_n_s__ErrorTypes;
static PyObject *__pyx_n_s__Exception;
static PyObject *__pyx_n_s__Extension;
static PyObject *__pyx_n_s__ExternalID;
static PyObject *__pyx_n_s__FATAL;
static PyObject *__pyx_n_s__FunctionNamespace;
static PyObject *__pyx_n_s__FutureWarning;
static PyObject *__pyx_n_s__GzipFile;
static PyObject *__pyx_n_s__HTML;
static PyObject *__pyx_n_s__IGNORECASE;
static PyObject *__pyx_n_s__IOError;
static PyObject *__pyx_n_s__ImportError;
static PyObject *__pyx_n_s__IndexError;
static PyObject *__pyx_n_s__KeyError;
static PyObject *__pyx_n_s__LIBXML_VERSION;
static PyObject *__pyx_n_s__LIBXSLT_VERSION;
static PyObject *__pyx_n_s__LXML_VERSION;
static PyObject *__pyx_n_s__LookupError;
static PyObject *__pyx_n_s__LxmlError;
static PyObject *__pyx_n_s__LxmlRegistryError;
static PyObject *__pyx_n_s__LxmlSyntaxError;
static PyObject *__pyx_n_s__NAMESPACE;
static PyObject *__pyx_n_s__NotImplementedError;
static PyObject *__pyx_n_s__PARSER;
static PyObject *__pyx_n_s__PI;
static PyObject *__pyx_n_u__PI;
static PyObject *__pyx_n_s__ParseError;
static PyObject *__pyx_n_s__ParserError;
static PyObject *__pyx_n_s__PyErrorLog;
static PyObject *__pyx_n_s__RELAXNGV;
static PyObject *__pyx_n_s__RelaxNG;
static PyObject *__pyx_n_s__RelaxNGError;
static PyObject *__pyx_n_s__RelaxNGErrorTypes;
static PyObject *__pyx_n_s__RelaxNGParseError;
static PyObject *__pyx_n_s__Resolver;
static PyObject *__pyx_n_s__Schematron;
static PyObject *__pyx_n_s__SchematronError;
static PyObject *__pyx_n_s__SerialisationError;
static PyObject *__pyx_n_s__StopIteration;
static PyObject *__pyx_n_s__StringIO;
static PyObject *__pyx_n_s__SubElement;
static PyObject *__pyx_n_s__SyntaxError;
static PyObject *__pyx_n_s__SystemID;
static PyObject *__pyx_n_s__TAG;
static PyObject *__pyx_n_s__TreeBuilder;
static PyObject *__pyx_n_s__TypeError;
static PyObject *__pyx_n_s__U;
static PyObject *__pyx_n_s__UNICODE;
static PyObject *__pyx_n_s__URL;
static PyObject *__pyx_n_u__UTF8;
static PyObject *__pyx_n_s__UnicodeDecodeError;
static PyObject *__pyx_n_s__UnicodeEncodeError;
static PyObject *__pyx_n_s__ValueError;
static PyObject *__pyx_n_s__WARNING;
static PyObject *__pyx_n_s__XInclude;
static PyObject *__pyx_n_s__XIncludeError;
static PyObject *__pyx_n_s__XML;
static PyObject *__pyx_n_s__XMLDTDID;
static PyObject *__pyx_n_s__XMLID;
static PyObject *__pyx_n_s__XMLSchema;
static PyObject *__pyx_n_s__XMLSchemaError;
static PyObject *__pyx_n_s__XMLSchemaParseError;
static PyObject *__pyx_n_s__XMLSyntaxError;
static PyObject *__pyx_n_u__XPATH_LOCATIONSET;
static PyObject *__pyx_n_u__XPATH_POINT;
static PyObject *__pyx_n_u__XPATH_RANGE;
static PyObject *__pyx_n_u__XPATH_USERS;
static PyObject *__pyx_n_s__XPath;
static PyObject *__pyx_n_s__XPathError;
static PyObject *__pyx_n_s__XPathEvalError;
static PyObject *__pyx_n_s__XPathEvaluator;
static PyObject *__pyx_n_s__XPathFunctionError;
static PyObject *__pyx_n_s__XPathResultError;
static PyObject *__pyx_n_s__XPathSyntaxError;
static PyObject *__pyx_n_s__XSLT;
static PyObject *__pyx_n_s__XSLTApplyError;
static PyObject *__pyx_n_s__XSLTError;
static PyObject *__pyx_n_s__XSLTExtension;
static PyObject *__pyx_n_s__XSLTExtensionError;
static PyObject *__pyx_n_s__XSLTParseError;
static PyObject *__pyx_n_s__XSLTSaveError;
static PyObject *__pyx_n_u___;
static PyObject *__pyx_n_s___BaseParser;
static PyObject *__pyx_n_s___Element;
static PyObject *__pyx_n_s___ElementTree;
static PyObject *__pyx_n_s___ErrorLog;
static PyObject *__pyx_n_s___FeedParser;
static PyObject *__pyx_n_u___GlobalErrorLog;
static PyObject *__pyx_n_s___ListErrorLog;
static PyObject *__pyx_n_s___NamespaceRegistry;
static PyObject *__pyx_n_s___ResolverRegistry;
static PyObject *__pyx_n_s___TargetParserResult;
static PyObject *__pyx_n_s___Validator;
static PyObject *__pyx_n_s___XPathEvaluatorBase;
static PyObject *__pyx_n_s____builtin__;
static PyObject *__pyx_n_s____call__;
static PyObject *__pyx_n_s____class__;
static PyObject *__pyx_n_s____contains__;
static PyObject *__pyx_n_s____copy__;
static PyObject *__pyx_n_s____deepcopy__;
static PyObject *__pyx_n_s____delitem__;
static PyObject *__pyx_n_u____dict__;
static PyObject *__pyx_n_s____docformat__;
static PyObject *__pyx_n_s____getattribute__;
static PyObject *__pyx_n_s____getitem__;
static PyObject *__pyx_n_s____hash__;
static PyObject *__pyx_n_s____init__;
static PyObject *__pyx_n_s____iter__;
static PyObject *__pyx_n_s____len__;
static PyObject *__pyx_n_s____main__;
static PyObject *__pyx_n_s____name__;
static PyObject *__pyx_n_s____next__;
static PyObject *__pyx_n_s____repr__;
static PyObject *__pyx_n_s____reversed__;
static PyObject *__pyx_n_s____setitem__;
static PyObject *__pyx_n_s____test__;
static PyObject *__pyx_n_s____unicode__;
static PyObject *__pyx_n_s____version__;
static PyObject *__pyx_n_s___accepted_domains;
static PyObject *__pyx_n_s___access_control;
static PyObject *__pyx_n_s___assertHasRoot;
static PyObject *__pyx_n_s___assertNode;
static PyObject *__pyx_n_s___assureDocGetsFreed;
static PyObject *__pyx_n_s___attrib;
static PyObject *__pyx_n_s___buffer;
static PyObject *__pyx_n_s___buffer_len;
static PyObject *__pyx_n_s___buffer_refcnt;
static PyObject *__pyx_n_s___build_items;
static PyObject *__pyx_n_s___build_keys;
static PyObject *__pyx_n_s___bytes;
static PyObject *__pyx_n_s___bytes_read;
static PyObject *__pyx_n_s___c_attr;
static PyObject *__pyx_n_s___c_ctxt;
static PyObject *__pyx_n_s___c_dict;
static PyObject *__pyx_n_s___c_doc;
static PyObject *__pyx_n_s___c_dtd;
static PyObject *__pyx_n_s___c_name;
static PyObject *__pyx_n_s___c_node;
static PyObject *__pyx_n_s___c_ns;
static PyObject *__pyx_n_s___c_ns_uri_utf;
static PyObject *__pyx_n_s___c_schema;
static PyObject *__pyx_n_s___c_schema_doc;
static PyObject *__pyx_n_s___c_style;
static PyObject *__pyx_n_s___c_style_doc;
static PyObject *__pyx_n_s___c_url;
static PyObject *__pyx_n_s___class_lookup;
static PyObject *__pyx_n_s___class_mapping;
static PyObject *__pyx_n_s___cleanup_context;
static PyObject *__pyx_n_s___close_filelike;
static PyObject *__pyx_n_s___compile;
static PyObject *__pyx_n_s___compile_map;
static PyObject *__pyx_n_s___context;
static PyObject *__pyx_n_s___context_node;
static PyObject *__pyx_n_s___copy;
static PyObject *__pyx_n_s___createContext;
static PyObject *__pyx_n_s___createOutputBuffer;
static PyObject *__pyx_n_s___createParserInput;
static PyObject *__pyx_n_s___data;
static PyObject *__pyx_n_s___data_bytes;
static PyObject *__pyx_n_s___default_encoding;
static PyObject *__pyx_n_s___default_parser;
static PyObject *__pyx_n_s___default_resolver;
static PyObject *__pyx_n_s___dependent_proxies;
static PyObject *__pyx_n_s___doc;
static PyObject *__pyx_n_s___element;
static PyObject *__pyx_n_s___element_stack;
static PyObject *__pyx_n_s___element_stack_pop;
static PyObject *__pyx_n_s___elementpath;
static PyObject *__pyx_n_s___encoding;
static PyObject *__pyx_n_s___end_node;
static PyObject *__pyx_n_s___entries;
static PyObject *__pyx_n_s___error_log;
static PyObject *__pyx_n_s___etree_or_element;
static PyObject *__pyx_n_s___eval_arg;
static PyObject *__pyx_n_s___eval_context_dict;
static PyObject *__pyx_n_s___eval_lock;
static PyObject *__pyx_n_s___event_filter;
static PyObject *__pyx_n_s___event_index;
static PyObject *__pyx_n_s___events;
static PyObject *__pyx_n_s___exc;
static PyObject *__pyx_n_s___exc_context;
static PyObject *__pyx_n_s___exc_info;
static PyObject *__pyx_n_s___extension_elements;
static PyObject *__pyx_n_s___extensions;
static PyObject *__pyx_n_s___factory;
static PyObject *__pyx_n_s___fallback_function;
static PyObject *__pyx_n_s___file;
static PyObject *__pyx_n_s___filelike;
static PyObject *__pyx_n_s___filename;
static PyObject *__pyx_n_s___findOrBuildNodeNs;
static PyObject *__pyx_n_s___first_error;
static PyObject *__pyx_n_s___flush;
static PyObject *__pyx_n_s___for_html;
static PyObject *__pyx_n_s___free_after_use;
static PyObject *__pyx_n_s___function_cache;
static PyObject *__pyx_n_s___gc_doc;
static PyObject *__pyx_n_s___get;
static PyObject *__pyx_n_s___getName;
static PyObject *__pyx_n_s___getParserContext;
static PyObject *__pyx_n_s___getThreadDict;
static PyObject *__pyx_n_s___global_namespaces;
static PyObject *__pyx_n_s___handleParseResult;
static PyObject *__pyx_n_s___handleSaxComment;
static PyObject *__pyx_n_s___handleSaxData;
static PyObject *__pyx_n_s___handleSaxDoctype;
static PyObject *__pyx_n_s___handleSaxEnd;
static PyObject *__pyx_n_s___handleSaxException;
static PyObject *__pyx_n_s___handleSaxPi;
static PyObject *__pyx_n_s___handleSaxStart;
static PyObject *__pyx_n_s___handle_result;
static PyObject *__pyx_n_s___has_raised;
static PyObject *__pyx_n_s___hold;
static PyObject *__pyx_n_s___href;
static PyObject *__pyx_n_s___in_tail;
static PyObject *__pyx_n_s___index;
static PyObject *__pyx_n_s___init;
static PyObject *__pyx_n_s___initParserContext;
static PyObject *__pyx_n_s___initTagMatch;
static PyObject *__pyx_n_s___input;
static PyObject *__pyx_n_s___items;
static PyObject *__pyx_n_s___keys;
static PyObject *__pyx_n_s___keysvalues;
static PyObject *__pyx_n_s___last;
static PyObject *__pyx_n_s___lock;
static PyObject *__pyx_n_s___log;
static PyObject *__pyx_n_s___lookup_function;
static PyObject *__pyx_n_s___make_string;
static PyObject *__pyx_n_s___map_level;
static PyObject *__pyx_n_s___max_len;
static PyObject *__pyx_n_s___name;
static PyObject *__pyx_n_s___names;
static PyObject *__pyx_n_s___namespaces;
static PyObject *__pyx_n_s___newParserCtxt;
static PyObject *__pyx_n_s___newPushParserCtxt;
static PyObject *__pyx_n_s___newSaxValidator;
static PyObject *__pyx_n_s___nextEvent;
static PyObject *__pyx_n_s___nextNodeAnyTag;
static PyObject *__pyx_n_s___nextNodeMatchTag;
static PyObject *__pyx_n_s___next_element;
static PyObject *__pyx_n_s___next_node;
static PyObject *__pyx_n_s___node;
static PyObject *__pyx_n_s___node_stack;
static PyObject *__pyx_n_s___node_type;
static PyObject *__pyx_n_s___ns_counter;
static PyObject *__pyx_n_s___ns_stack;
static PyObject *__pyx_n_s___ns_uri;
static PyObject *__pyx_n_s___ns_uri_utf;
static PyObject *__pyx_n_s___nsextract_path;
static PyObject *__pyx_n_s___optval;
static PyObject *__pyx_n_s___origSaxCData;
static PyObject *__pyx_n_s___origSaxComment;
static PyObject *__pyx_n_s___origSaxData;
static PyObject *__pyx_n_s___origSaxDoctype;
static PyObject *__pyx_n_s___origSaxEnd;
static PyObject *__pyx_n_s___origSaxEndNoNs;
static PyObject *__pyx_n_s___origSaxPI;
static PyObject *__pyx_n_s___origSaxPi;
static PyObject *__pyx_n_s___origSaxStart;
static PyObject *__pyx_n_s___origSaxStartNoNs;
static PyObject *__pyx_n_s___parent;
static PyObject *__pyx_n_s___parseDoc;
static PyObject *__pyx_n_s___parseDocFromFile;
static PyObject *__pyx_n_s___parseUnicodeDoc;
static PyObject *__pyx_n_s___parse_chunk;
static PyObject *__pyx_n_s___parse_options;
static PyObject *__pyx_n_s___parser;
static PyObject *__pyx_n_s___parser_context;
static PyObject *__pyx_n_s___path;
static PyObject *__pyx_n_s___pop_event;
static PyObject *__pyx_n_s___pop_node;
static PyObject *__pyx_n_s___pop_ns;
static PyObject *__pyx_n_s___prefix;
static PyObject *__pyx_n_s___prefix_tail;
static PyObject *__pyx_n_s___prefix_utf;
static PyObject *__pyx_n_s___prefs;
static PyObject *__pyx_n_s___private;
static PyObject *__pyx_n_s___profile;
static PyObject *__pyx_n_s___pystrings;
static PyObject *__pyx_n_s___pytag;
static PyObject *__pyx_n_s___python_target;
static PyObject *__pyx_n_s___raiseImmutable;
static PyObject *__pyx_n_s___raise_eval_error;
static PyObject *__pyx_n_s___raise_if_stored;
static PyObject *__pyx_n_s___raise_parse_error;
static PyObject *__pyx_n_s___readDoc;
static PyObject *__pyx_n_s___readDtd;
static PyObject *__pyx_n_s___receive;
static PyObject *__pyx_n_s___register_context;
static PyObject *__pyx_n_s___release_context;
static PyObject *__pyx_n_s___release_temp_refs;
static PyObject *__pyx_n_s___remove_comments;
static PyObject *__pyx_n_s___remove_pis;
static PyObject *__pyx_n_s___resetParserContext;
static PyObject *__pyx_n_s___resolvers;
static PyObject *__pyx_n_s___root;
static PyObject *__pyx_n_s___run_transform;
static PyObject *__pyx_n_s___sax_event_filter;
static PyObject *__pyx_n_s___sax_plug;
static PyObject *__pyx_n_s___schema;
static PyObject *__pyx_n_s___setAccess;
static PyObject *__pyx_n_s___setError;
static PyObject *__pyx_n_s___setEventFilter;
static PyObject *__pyx_n_s___setFallback;
static PyObject *__pyx_n_s___setGeneric;
static PyObject *__pyx_n_s___setNodeNs;
static PyObject *__pyx_n_s___setSaxParserTarget;
static PyObject *__pyx_n_s___setTagFilter;
static PyObject *__pyx_n_s___setTarget;
static PyObject *__pyx_n_s___set_xpath_context;
static PyObject *__pyx_n_s___setroot;
static PyObject *__pyx_n_s___setupDict;
static PyObject *__pyx_n_s___source;
static PyObject *__pyx_n_s___source_proxy;
static PyObject *__pyx_n_s___start_element;
static PyObject *__pyx_n_s___start_node;
static PyObject *__pyx_n_s___start_takes_nsmap;
static PyObject *__pyx_n_s___storage;
static PyObject *__pyx_n_s___storeNext;
static PyObject *__pyx_n_s___store_exception;
static PyObject *__pyx_n_s___store_raised;
static PyObject *__pyx_n_s___strip_cdata;
static PyObject *__pyx_n_s___tag;
static PyObject *__pyx_n_s___tag_href;
static PyObject *__pyx_n_s___tag_name;
static PyObject *__pyx_n_s___tag_tuple;
static PyObject *__pyx_n_s___target;
static PyObject *__pyx_n_s___target_comment;
static PyObject *__pyx_n_s___target_data;
static PyObject *__pyx_n_s___target_doctype;
static PyObject *__pyx_n_s___target_end;
static PyObject *__pyx_n_s___target_pi;
static PyObject *__pyx_n_s___target_start;
static PyObject *__pyx_n_s___temp_documents;
static PyObject *__pyx_n_s___temp_refs;
static PyObject *__pyx_n_s___to_utf;
static PyObject *__pyx_n_s___top_node;
static PyObject *__pyx_n_s___type;
static PyObject *__pyx_n_s___unlock;
static PyObject *__pyx_n_s___url;
static PyObject *__pyx_n_s___utf8_data;
static PyObject *__pyx_n_s___utf_refs;
static PyObject *__pyx_n_s___valid_ctxt;
static PyObject *__pyx_n_s___validator;
static PyObject *__pyx_n_s___variables;
static PyObject *__pyx_n_s___xpath;
static PyObject *__pyx_n_s___xpathCtxt;
static PyObject *__pyx_n_s___xslt;
static PyObject *__pyx_n_s___xsltCtxt;
static PyObject *__pyx_n_s__abspath;
static PyObject *__pyx_n_s__access_control;
static PyObject *__pyx_n_s__add;
static PyObject *__pyx_n_s__addNamespace;
static PyObject *__pyx_n_s__addnext;
static PyObject *__pyx_n_s__addprevious;
static PyObject *__pyx_n_u__alpha;
static PyObject *__pyx_n_s__append;
static PyObject *__pyx_n_s__apply;
static PyObject *__pyx_n_s__apply_templates;
static PyObject *__pyx_n_s__ascii;
static PyObject *__pyx_n_s__assertValid;
static PyObject *__pyx_n_s__assert_;
static PyObject *__pyx_n_s__attr;
static PyObject *__pyx_n_s__attrib;
static PyObject *__pyx_n_s__attribute_defaults;
static PyObject *__pyx_n_s__attribute_name;
static PyObject *__pyx_n_s__attributes;
static PyObject *__pyx_n_s__attrs;
static PyObject *__pyx_n_s__backslashreplace;
static PyObject *__pyx_n_s__base;
static PyObject *__pyx_n_s__base_url;
static PyObject *__pyx_n_u__beta;
static PyObject *__pyx_n_s__boolval;
static PyObject *__pyx_n_s__buf;
static PyObject *__pyx_n_s__buffer;
static PyObject *__pyx_n_s__buildNewPrefix;
static PyObject *__pyx_n_s__build_smart_strings;
static PyObject *__pyx_n_s__builtins;
static PyObject *__pyx_n_s__cdataBlock;
static PyObject *__pyx_n_s__characters;
static PyObject *__pyx_n_s__child;
static PyObject *__pyx_n_s__children;
static PyObject *__pyx_n_s__class_mapping;
static PyObject *__pyx_n_s__cleanup;
static PyObject *__pyx_n_s__cleanup_namespaces;
static PyObject *__pyx_n_s__clear;
static PyObject *__pyx_n_s__clear_error_log;
static PyObject *__pyx_n_s__close;
static PyObject *__pyx_n_s__code;
static PyObject *__pyx_n_s__column;
static PyObject *__pyx_n_s__comment;
static PyObject *__pyx_n_u__comment;
static PyObject *__pyx_n_s__comment_class;
static PyObject *__pyx_n_s__compact;
static PyObject *__pyx_n_s__compile;
static PyObject *__pyx_n_s__compression;
static PyObject *__pyx_n_s__compresslevel;
static PyObject *__pyx_n_s__connect;
static PyObject *__pyx_n_s__content;
static PyObject *__pyx_n_s__context;
static PyObject *__pyx_n_s__conv;
static PyObject *__pyx_n_s__copy;
static PyObject *__pyx_n_s__copyToBuffer;
static PyObject *__pyx_n_s__create_dir;
static PyObject *__pyx_n_u__create_dir;
static PyObject *__pyx_n_s__ctxt;
static PyObject *__pyx_n_s__cur;
static PyObject *__pyx_n_s__data;
static PyObject *__pyx_n_s__dc;
static PyObject *__pyx_n_s__decode;
static PyObject *__pyx_n_s__default;
static PyObject *__pyx_n_s__default_resolver;
static PyObject *__pyx_n_u__dev;
static PyObject *__pyx_n_s__dict;
static PyObject *__pyx_n_s__disableSAX;
static PyObject *__pyx_n_s__discard;
static PyObject *__pyx_n_s__disconnect;
static PyObject *__pyx_n_s__doc;
static PyObject *__pyx_n_s__doctype;
static PyObject *__pyx_n_s__domain;
static PyObject *__pyx_n_s__domain_name;
static PyObject *__pyx_n_s__domains;
static PyObject *__pyx_n_s__dtd_validation;
static PyObject *__pyx_n_s__dump;
static PyObject *__pyx_n_s__elem;
static PyObject *__pyx_n_s__element;
static PyObject *__pyx_n_u__element;
static PyObject *__pyx_n_s__element_class;
static PyObject *__pyx_n_s__element_factory;
static PyObject *__pyx_n_s__element_or_tree;
static PyObject *__pyx_n_s__elements;
static PyObject *__pyx_n_s__enable_regexp;
static PyObject *__pyx_n_s__encode;
static PyObject *__pyx_n_s__encoding;
static PyObject *__pyx_n_s__end;
static PyObject *__pyx_n_u__end;
static PyObject *__pyx_n_s__endElement;
static PyObject *__pyx_n_s__endElementNs;
static PyObject *__pyx_n_s__endNode;
static PyObject *__pyx_n_s__entities;
static PyObject *__pyx_n_s__entity;
static PyObject *__pyx_n_u__entity;
static PyObject *__pyx_n_s__entity_class;
static PyObject *__pyx_n_s__entries;
static PyObject *__pyx_n_s__enumerate;
static PyObject *__pyx_n_s__errNo;
static PyObject *__pyx_n_s__error;
static PyObject *__pyx_n_s__error_log;
static PyObject *__pyx_n_s__etree;
static PyObject *__pyx_n_s__etree_or_element;
static PyObject *__pyx_n_s__evaluate;
static PyObject *__pyx_n_s__events;
static PyObject *__pyx_n_s__exc_context;
static PyObject *__pyx_n_s__exc_info;
static PyObject *__pyx_n_s__exclusive;
static PyObject *__pyx_n_s__execute;
static PyObject *__pyx_n_s__extSubset;
static PyObject *__pyx_n_s__extend;
static PyObject *__pyx_n_s__extensions;
static PyObject *__pyx_n_s__external_id;
static PyObject *__pyx_n_s__f;
static PyObject *__pyx_n_s__fallback;
static PyObject *__pyx_n_s__feed;
static PyObject *__pyx_n_s__file;
static PyObject *__pyx_n_s__filelike;
static PyObject *__pyx_n_s__filename;
static PyObject *__pyx_n_u__filename;
static PyObject *__pyx_n_s__fileobj;
static PyObject *__pyx_n_s__filter_domains;
static PyObject *__pyx_n_s__filter_from_errors;
static PyObject *__pyx_n_s__filter_from_fatals;
static PyObject *__pyx_n_s__filter_from_level;
static PyObject *__pyx_n_s__filter_levels;
static PyObject *__pyx_n_s__filter_types;
static PyObject *__pyx_n_s__find;
static PyObject *__pyx_n_s__findImpliedContext;
static PyObject *__pyx_n_s__findall;
static PyObject *__pyx_n_s__findtext;
static PyObject *__pyx_n_s__first_error;
static PyObject *__pyx_n_s__flags;
static PyObject *__pyx_n_s__floatval;
static PyObject *__pyx_n_s__for_html;
static PyObject *__pyx_n_s__format;
static PyObject *__pyx_n_s__free_after_use;
static PyObject *__pyx_n_s__free_context;
static PyObject *__pyx_n_s__fromstring;
static PyObject *__pyx_n_s__fromstringlist;
static PyObject *__pyx_n_s__function;
static PyObject *__pyx_n_s__functionURI;
static PyObject *__pyx_n_s__function_mapping;
static PyObject *__pyx_n_u__g;
static PyObject *__pyx_n_s__get;
static PyObject *__pyx_n_s__getDefaultParser;
static PyObject *__pyx_n_s__getLogger;
static PyObject *__pyx_n_s__get_default_parser;
static PyObject *__pyx_n_s__get_namespace;
static PyObject *__pyx_n_s__getargspec;
static PyObject *__pyx_n_s__getattr;
static PyObject *__pyx_n_s__getchildren;
static PyObject *__pyx_n_s__getdefaultencoding;
static PyObject *__pyx_n_s__getdoctype;
static PyObject *__pyx_n_s__getiterator;
static PyObject *__pyx_n_s__getnext;
static PyObject *__pyx_n_s__getparent;
static PyObject *__pyx_n_s__getpath;
static PyObject *__pyx_n_s__getprevious;
static PyObject *__pyx_n_s__getroot;
static PyObject *__pyx_n_s__getroottree;
static PyObject *__pyx_n_u__geturl;
static PyObject *__pyx_n_s__getvalue;
static PyObject *__pyx_n_u__getvalue;
static PyObject *__pyx_n_s__getxmlinfo;
static PyObject *__pyx_n_s__group;
static PyObject *__pyx_n_s__groups;
static PyObject *__pyx_n_s__gzip;
static PyObject *__pyx_n_s__hasdoctype;
static PyObject *__pyx_n_s__href;
static PyObject *__pyx_n_u__href;
static PyObject *__pyx_n_s__html;
static PyObject *__pyx_n_u__html;
static PyObject *__pyx_n_s__huge_tree;
static PyObject *__pyx_n_u__i;
static PyObject *__pyx_n_s__id;
static PyObject *__pyx_n_u__id;
static PyObject *__pyx_n_s__ids;
static PyObject *__pyx_n_s__inSubset;
static PyObject *__pyx_n_s__inclusive;
static PyObject *__pyx_n_s__index;
static PyObject *__pyx_n_s__initDocDict;
static PyObject *__pyx_n_s__initParserDict;
static PyObject *__pyx_n_s__initThreadDictRef;
static PyObject *__pyx_n_s__initXPathParserDict;
static PyObject *__pyx_n_s__initialized;
static PyObject *__pyx_n_s__input;
static PyObject *__pyx_n_s__input_node;
static PyObject *__pyx_n_s__insert;
static PyObject *__pyx_n_s__inspect;
static PyObject *__pyx_n_s__int2;
static PyObject *__pyx_n_s__intSubset;
static PyObject *__pyx_n_s__internal;
static PyObject *__pyx_n_s__internalSubset;
static PyObject *__pyx_n_s__io;
static PyObject *__pyx_n_s__is_attribute;
static PyObject *__pyx_n_s__is_tail;
static PyObject *__pyx_n_s__is_text;
static PyObject *__pyx_n_s__iselement;
static PyObject *__pyx_n_s__isstandalone;
static PyObject *__pyx_n_s__isvalid;
static PyObject *__pyx_n_s__items;
static PyObject *__pyx_n_u__items;
static PyObject *__pyx_n_s__itemsize;
static PyObject *__pyx_n_s__iter;
static PyObject *__pyx_n_s__iterancestors;
static PyObject *__pyx_n_s__iterchildren;
static PyObject *__pyx_n_s__iterdescendants;
static PyObject *__pyx_n_s__iterfind;
static PyObject *__pyx_n_s__iteritems;
static PyObject *__pyx_n_s__itersiblings;
static PyObject *__pyx_n_s__itertext;
static PyObject *__pyx_n_s__join;
static PyObject *__pyx_n_s__key;
static PyObject *__pyx_n_s__keys;
static PyObject *__pyx_n_s__last;
static PyObject *__pyx_n_s__lastError;
static PyObject *__pyx_n_s__last_error;
static PyObject *__pyx_n_s__len;
static PyObject *__pyx_n_s__length;
static PyObject *__pyx_n_s__level;
static PyObject *__pyx_n_s__level_map;
static PyObject *__pyx_n_s__level_name;
static PyObject *__pyx_n_s__line;
static PyObject *__pyx_n_s__load_dtd;
static PyObject *__pyx_n_s__loadsubset;
static PyObject *__pyx_n_s__localname;
static PyObject *__pyx_n_s__log;
static PyObject *__pyx_n_s__log_entry;
static PyObject *__pyx_n_s__logger_name;
static PyObject *__pyx_n_s__logging;
static PyObject *__pyx_n_s__lookup;
static PyObject *__pyx_n_s__lower;
static PyObject *__pyx_n_s__makeelement;
static PyObject *__pyx_n_b__match;
static PyObject *__pyx_n_s__match;
static PyObject *__pyx_n_u__match;
static PyObject *__pyx_n_u__matches;
static PyObject *__pyx_n_s__max_len;
static PyObject *__pyx_n_s__message;
static PyObject *__pyx_n_s__method;
static PyObject *__pyx_n_s__mode;
static PyObject *__pyx_n_s__module;
static PyObject *__pyx_n_s__myDoc;
static PyObject *__pyx_n_s__name;
static PyObject *__pyx_n_u__name;
static PyObject *__pyx_n_s__namespace;
static PyObject *__pyx_n_s__namespaces;
static PyObject *__pyx_n_s__ndim;
static PyObject *__pyx_n_s__new;
static PyObject *__pyx_n_s__new_element;
static PyObject *__pyx_n_s__next;
static PyObject *__pyx_n_s__no_network;
static PyObject *__pyx_n_s__node;
static PyObject *__pyx_n_s__nodeNr;
static PyObject *__pyx_n_s__nodeTab;
static PyObject *__pyx_n_s__nodesetval;
static PyObject *__pyx_n_s__notations;
static PyObject *__pyx_n_s__ns;
static PyObject *__pyx_n_s__nsDef;
static PyObject *__pyx_n_s__ns_clean;
static PyObject *__pyx_n_s__ns_uri;
static PyObject *__pyx_n_s__nsmap;
static PyObject *__pyx_n_s__object;
static PyObject *__pyx_n_s__old;
static PyObject *__pyx_n_s__old_element;
static PyObject *__pyx_n_s__open;
static PyObject *__pyx_n_s__options;
static PyObject *__pyx_n_s__output;
static PyObject *__pyx_n_s__output_parent;
static PyObject *__pyx_n_s__parent;
static PyObject *__pyx_n_s__parse;
static PyObject *__pyx_n_s__parseXSL;
static PyObject *__pyx_n_s__parse_options;
static PyObject *__pyx_n_s__parseid;
static PyObject *__pyx_n_s__parser;
static PyObject *__pyx_n_s__path;
static PyObject *__pyx_n_s__pentities;
static PyObject *__pyx_n_s__pi;
static PyObject *__pyx_n_u__pi;
static PyObject *__pyx_n_s__pi_class;
static PyObject *__pyx_n_s__pop;
static PyObject *__pyx_n_s__popImpliedContext;
static PyObject *__pyx_n_s__position;
static PyObject *__pyx_n_s__preceding;
static PyObject *__pyx_n_s__prefix;
static PyObject *__pyx_n_s__prepare;
static PyObject *__pyx_n_s__pretty_print;
static PyObject *__pyx_n_s__prev;
static PyObject *__pyx_n_s__profile;
static PyObject *__pyx_n_s__profile_run;
static PyObject *__pyx_n_s__progressive;
static PyObject *__pyx_n_s__properties;
static PyObject *__pyx_n_s__public_id;
static PyObject *__pyx_n_s__pushEvent;
static PyObject *__pyx_n_s__pushImpliedContext;
static PyObject *__pyx_n_s__py;
static PyObject *__pyx_n_s__python;
static PyObject *__pyx_n_s__range;
static PyObject *__pyx_n_u__rb;
static PyObject *__pyx_n_s__rdf;
static PyObject *__pyx_n_s__re;
static PyObject *__pyx_n_s__read;
static PyObject *__pyx_n_u__read;
static PyObject *__pyx_n_s__read_file;
static PyObject *__pyx_n_u__read_file;
static PyObject *__pyx_n_s__read_network;
static PyObject *__pyx_n_u__read_network;
static PyObject *__pyx_n_s__readcallback;
static PyObject *__pyx_n_s__readonly;
static PyObject *__pyx_n_s__receive;
static PyObject *__pyx_n_s__recover;
static PyObject *__pyx_n_s__reference;
static PyObject *__pyx_n_s__regexp;
static PyObject *__pyx_n_s__registerVariables;
static PyObject *__pyx_n_s__register_context;
static PyObject *__pyx_n_s__register_namespace;
static PyObject *__pyx_n_s__register_namespaces;
static PyObject *__pyx_n_s__relaxng;
static PyObject *__pyx_n_s__remove;
static PyObject *__pyx_n_s__remove_blank_text;
static PyObject *__pyx_n_s__remove_comments;
static PyObject *__pyx_n_s__remove_pis;
static PyObject *__pyx_n_b__replace;
static PyObject *__pyx_n_s__replace;
static PyObject *__pyx_n_s__replaceEntities;
static PyObject *__pyx_n_s__replacement;
static PyObject *__pyx_n_s__resolve;
static PyObject *__pyx_n_s__resolve_empty;
static PyObject *__pyx_n_s__resolve_entities;
static PyObject *__pyx_n_s__resolve_file;
static PyObject *__pyx_n_s__resolve_filename;
static PyObject *__pyx_n_s__resolve_string;
static PyObject *__pyx_n_s__resolvers;
static PyObject *__pyx_n_s__result;
static PyObject *__pyx_n_s__reversed;
static PyObject *__pyx_n_s__rexp;
static PyObject *__pyx_n_s__root;
static PyObject *__pyx_n_s__s;
static PyObject *__pyx_n_s__sax;
static PyObject *__pyx_n_s__schema;
static PyObject *__pyx_n_s__search;
static PyObject *__pyx_n_s__self;
static PyObject *__pyx_n_s__self_node;
static PyObject *__pyx_n_s__set;
static PyObject *__pyx_n_s__setDefaultParser;
static PyObject *__pyx_n_s__set_context;
static PyObject *__pyx_n_s__set_default_parser;
static PyObject *__pyx_n_s__set_fallback;
static PyObject *__pyx_n_s__shape;
static PyObject *__pyx_n_s__size;
static PyObject *__pyx_n_s__smart_strings;
static PyObject *__pyx_n_s__sort;
static PyObject *__pyx_n_s__source;
static PyObject *__pyx_n_s__spaceMax;
static PyObject *__pyx_n_s__spaceTab;
static PyObject *__pyx_n_s__split;
static PyObject *__pyx_n_s__standalone;
static PyObject *__pyx_n_s__start;
static PyObject *__pyx_n_u__start;
static PyObject *__pyx_n_s__startElement;
static PyObject *__pyx_n_s__startElementNs;
static PyObject *__pyx_n_s__startNode;
static PyObject *__pyx_n_s__startswith;
static PyObject *__pyx_n_s__state;
static PyObject *__pyx_n_s__stdout;
static PyObject *__pyx_n_s__step;
static PyObject *__pyx_n_s__stop;
static PyObject *__pyx_n_s__str;
static PyObject *__pyx_n_s__strides;
static PyObject *__pyx_n_s__string;
static PyObject *__pyx_n_s__strings;
static PyObject *__pyx_n_s__stringval;
static PyObject *__pyx_n_s__strip;
static PyObject *__pyx_n_s__strip_attributes;
static PyObject *__pyx_n_s__strip_cdata;
static PyObject *__pyx_n_s__strip_elements;
static PyObject *__pyx_n_s__strip_tags;
static PyObject *__pyx_n_s__strparam;
static PyObject *__pyx_n_s__strval;
static PyObject *__pyx_n_s__sub;
static PyObject *__pyx_n_s__suboffsets;
static PyObject *__pyx_n_s__super;
static PyObject *__pyx_n_s__sys;
static PyObject *__pyx_n_s__system_url;
static PyObject *__pyx_n_s__tag;
static PyObject *__pyx_n_s__tail;
static PyObject *__pyx_n_s__target;
static PyObject *__pyx_n_s__tell;
static PyObject *__pyx_n_u__tell;
static PyObject *__pyx_n_b__test;
static PyObject *__pyx_n_s__test;
static PyObject *__pyx_n_s__text;
static PyObject *__pyx_n_u__text;
static PyObject *__pyx_n_s__tostring;
static PyObject *__pyx_n_s__tostringlist;
static PyObject *__pyx_n_s__tounicode;
static PyObject *__pyx_n_s__tree;
static PyObject *__pyx_n_s__tree_or_element;
static PyObject *__pyx_n_s__type;
static PyObject *__pyx_n_s__type_name;
static PyObject *__pyx_n_s__unicode;
static PyObject *__pyx_n_u__unknown;
static PyObject *__pyx_n_s__unregister_context;
static PyObject *__pyx_n_s__update;
static PyObject *__pyx_n_s__upper;
static PyObject *__pyx_n_s__uri;
static PyObject *__pyx_n_s__url;
static PyObject *__pyx_n_s__userData;
static PyObject *__pyx_n_s__validate;
static PyObject *__pyx_n_s__value;
static PyObject *__pyx_n_s__values;
static PyObject *__pyx_n_s__variables;
static PyObject *__pyx_n_s__version;
static PyObject *__pyx_n_s__warn;
static PyObject *__pyx_n_s__warnings;
static PyObject *__pyx_n_u__wb;
static PyObject *__pyx_n_s__wellFormed;
static PyObject *__pyx_n_s__with_comments;
static PyObject *__pyx_n_s__with_tail;
static PyObject *__pyx_n_s__write;
static PyObject *__pyx_n_u__write;
static PyObject *__pyx_n_s__write_c14n;
static PyObject *__pyx_n_s__write_file;
static PyObject *__pyx_n_u__write_file;
static PyObject *__pyx_n_s__write_network;
static PyObject *__pyx_n_u__write_network;
static PyObject *__pyx_n_s__wsdl;
static PyObject *__pyx_n_s__xinclude;
static PyObject *__pyx_n_u__xml;
static PyObject *__pyx_n_s__xml_declaration;
static PyObject *__pyx_n_s__xmlschema;
static PyObject *__pyx_n_s__xpath;
static PyObject *__pyx_n_s__xpathCtxt;
static PyObject *__pyx_n_s__xs;
static PyObject *__pyx_n_u__xs;
static PyObject *__pyx_n_s__xsi;
static PyObject *__pyx_n_s__xsl;
static PyObject *__pyx_n_u__xsl;
static PyObject *__pyx_n_s__xslt;
static PyObject *__pyx_n_s__xslt_input;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_4;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_int_100;
static PyObject *__pyx_int_neg_100;
static PyObject *__pyx_int_neg_200;
static PyObject *__pyx_int_neg_300;
static PyObject *__pyx_int_32768;
static PyObject *__pyx_k_58;
static PyObject *__pyx_k_59;
static PyObject *__pyx_k_60;
static PyObject *__pyx_k_61;
static PyObject *__pyx_k_75;
static PyObject *__pyx_k_76;
static PyObject *__pyx_k_80;
static PyObject *__pyx_k_81;
static PyObject *__pyx_k_82;
static PyObject *__pyx_k_84;
static PyObject *__pyx_k_85;
static PyObject *__pyx_k_86;
static PyObject *__pyx_k_87;
static PyObject *__pyx_k_90;
static PyObject *__pyx_k_91;
static PyObject *__pyx_k_92;
static PyObject *__pyx_k_93;
static PyObject *__pyx_k_96;
static PyObject *__pyx_k_97;
static PyObject *__pyx_k_99;
static PyObject *__pyx_k_155;
static PyObject *__pyx_k_156;
static PyObject *__pyx_k_157;
static PyObject *__pyx_k_158;
static PyObject *__pyx_k_159;
static PyObject *__pyx_k_160;
static PyObject *__pyx_k_161;
static PyObject *__pyx_k_162;
static PyObject *__pyx_k_163;
static PyObject *__pyx_k_164;
static PyObject *__pyx_k_165;
static PyObject *__pyx_k_166;
static PyObject *__pyx_k_167;
static PyObject *__pyx_k_168;
static PyObject *__pyx_k_169;
static PyObject *__pyx_k_170;
static PyObject *__pyx_k_171;
static PyObject *__pyx_k_172;
static PyObject *__pyx_k_173;
static PyObject *__pyx_k_174;
static PyObject *__pyx_k_175;
static PyObject *__pyx_k_176;
static PyObject *__pyx_k_177;
static PyObject *__pyx_k_178;
static PyObject *__pyx_k_179;
static PyObject *__pyx_k_180;
static PyObject *__pyx_k_181;
static PyObject *__pyx_k_182;
static PyObject *__pyx_k_183;
static PyObject *__pyx_k_184;
static PyObject *__pyx_k_185;
static PyObject *__pyx_k_186;
static PyObject *__pyx_k_187;
static PyObject *__pyx_k_224;
static PyObject *__pyx_k_225;
static PyObject *__pyx_k_226;
static PyObject *__pyx_k_227;
static PyObject *__pyx_k_228;
static PyObject *__pyx_k_229;
static PyObject *__pyx_k_230;
static PyObject *__pyx_k_231;
static PyObject *__pyx_k_232;
static PyObject *__pyx_k_233;
static PyObject *__pyx_k_234;
static PyObject *__pyx_k_235;
static PyObject *__pyx_k_236;
static PyObject *__pyx_k_239;
static PyObject *__pyx_k_276;
static PyObject *__pyx_k_277;
static PyObject *__pyx_k_278;
static PyObject *__pyx_k_279;
static PyObject *__pyx_k_280;
static PyObject *__pyx_k_281;
static PyObject *__pyx_k_282;
static PyObject *__pyx_k_283;
static PyObject *__pyx_k_284;
static PyObject *__pyx_k_285;
static PyObject *__pyx_k_290;
static PyObject *__pyx_k_291;
static PyObject *__pyx_k_292;
static PyObject *__pyx_k_293;
static PyObject *__pyx_k_294;
static PyObject *__pyx_k_299;
static PyObject *__pyx_k_303;
static PyObject *__pyx_k_304;
static PyObject *__pyx_k_338;

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":118
 *     this one.
 *     """
 *     def __init__(self, message, error_log=None):             # <<<<<<<<<<<<<<
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 */

static PyObject *__pyx_pf_4lxml_5etree_9LxmlError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4lxml_5etree_9LxmlError___init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pf_4lxml_5etree_9LxmlError___init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_4lxml_5etree_9LxmlError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_message = 0;
  PyObject *__pyx_v_error_log = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__message,&__pyx_n_s__error_log,0};
  __Pyx_RefNannySetupContext("__init__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__message);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__error_log);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_message = values[1];
    __pyx_v_error_log = values[2];
  } else {
    __pyx_v_error_log = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_error_log = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v_message = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.LxmlError.__init__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_message);
  __Pyx_INCREF(__pyx_v_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":119
 *     """
 *     def __init__(self, message, error_log=None):
 *         if python.PY_VERSION_HEX >= 0x02050000:             # <<<<<<<<<<<<<<
 *             # Python >= 2.5 uses new style class exceptions
 *             super(_LxmlError, self).__init__(message)
 */
  __pyx_t_1 = (PY_VERSION_HEX >= 0x02050000);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":121
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 *             super(_LxmlError, self).__init__(message)             # <<<<<<<<<<<<<<
 *         else:
 *             error_super_init(self, message)
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_4lxml_5etree__LxmlError);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_4lxml_5etree__LxmlError);
    __Pyx_GIVEREF(__pyx_v_4lxml_5etree__LxmlError);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":123
 *             super(_LxmlError, self).__init__(message)
 *         else:
 *             error_super_init(self, message)             # <<<<<<<<<<<<<<
 *         if error_log is None:
 *             self.error_log = __copyGlobalErrorLog()
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __Pyx_INCREF(__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __pyx_t_3 = PyObject_Call(__pyx_v_4lxml_5etree_error_super_init, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":124
 *         else:
 *             error_super_init(self, message)
 *         if error_log is None:             # <<<<<<<<<<<<<<
 *             self.error_log = __copyGlobalErrorLog()
 *         else:
 */
  __pyx_t_1 = (__pyx_v_error_log == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":125
 *             error_super_init(self, message)
 *         if error_log is None:
 *             self.error_log = __copyGlobalErrorLog()             # <<<<<<<<<<<<<<
 *         else:
 *             self.error_log = error_log.copy()
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree___copyGlobalErrorLog(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__error_log, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":127
 *             self.error_log = __copyGlobalErrorLog()
 *         else:
 *             self.error_log = error_log.copy()             # <<<<<<<<<<<<<<
 * 
 * cdef object _LxmlError
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_error_log, __pyx_n_s__copy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__error_log, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.LxmlError.__init__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_self);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_error_log);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":148
 * 
 * # version information
 * cdef __unpackDottedVersion(version):             # <<<<<<<<<<<<<<
 *     cdef list version_list = []
 *     l = (version.decode(u"ASCII").replace(u'-', u'.').split(u'.') + [0]*4)[:4]
 */

static  PyObject *__pyx_f_4lxml_5etree___unpackDottedVersion(PyObject *__pyx_v_version) {
  PyObject *__pyx_v_version_list = 0;
  PyObject *__pyx_v_l;
  PyObject *__pyx_v_item;
  PyObject *__pyx_v_count;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("__unpackDottedVersion");
  __Pyx_INCREF(__pyx_v_version);
  __pyx_v_l = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_count = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":149
 * # version information
 * cdef __unpackDottedVersion(version):
 *     cdef list version_list = []             # <<<<<<<<<<<<<<
 *     l = (version.decode(u"ASCII").replace(u'-', u'.').split(u'.') + [0]*4)[:4]
 *     for item in l:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_version_list = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":150
 * cdef __unpackDottedVersion(version):
 *     cdef list version_list = []
 *     l = (version.decode(u"ASCII").replace(u'-', u'.').split(u'.') + [0]*4)[:4]             # <<<<<<<<<<<<<<
 *     for item in l:
 *         try:
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_version, __pyx_n_s__decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__ASCII));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_u__ASCII));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__ASCII));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__replace); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_1));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_1));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_2));
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_kp_u_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_2));
  __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__split); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_2));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_u_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_2));
  __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(__pyx_int_0);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_t_1), __pyx_int_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PySequence_GetSlice(__pyx_t_1, 0, 4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_l);
  __pyx_v_l = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":151
 *     cdef list version_list = []
 *     l = (version.decode(u"ASCII").replace(u'-', u'.').split(u'.') + [0]*4)[:4]
 *     for item in l:             # <<<<<<<<<<<<<<
 *         try:
 *             item = int(item)
 */
  if (PyList_CheckExact(__pyx_v_l) || PyTuple_CheckExact(__pyx_v_l)) {
    __pyx_t_4 = 0; __pyx_t_3 = __pyx_v_l; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_l); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++;
    } else {
      __pyx_t_1 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_1) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":152
 *     l = (version.decode(u"ASCII").replace(u'-', u'.').split(u'.') + [0]*4)[:4]
 *     for item in l:
 *         try:             # <<<<<<<<<<<<<<
 *             item = int(item)
 *         except ValueError:
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":153
 *     for item in l:
 *         try:
 *             item = int(item)             # <<<<<<<<<<<<<<
 *         except ValueError:
 *             if item.startswith(u'dev'):
 */
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_item);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_item);
        __Pyx_GIVEREF(__pyx_v_item);
        __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_v_item);
        __pyx_v_item = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":154
 *         try:
 *             item = int(item)
 *         except ValueError:             # <<<<<<<<<<<<<<
 *             if item.startswith(u'dev'):
 *                 count = item[3:]
 */
      __pyx_t_5 = PyErr_ExceptionMatches(__pyx_builtin_ValueError);
      if (__pyx_t_5) {
        __Pyx_AddTraceback("lxml.etree.__unpackDottedVersion");
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_6);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":155
 *             item = int(item)
 *         except ValueError:
 *             if item.startswith(u'dev'):             # <<<<<<<<<<<<<<
 *                 count = item[3:]
 *                 item = -300
 */
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_item, __pyx_n_s__startswith); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(((PyObject *)__pyx_n_u__dev));
        PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_n_u__dev));
        __Pyx_GIVEREF(((PyObject *)__pyx_n_u__dev));
        __pyx_t_9 = PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (__pyx_t_10) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":156
 *         except ValueError:
 *             if item.startswith(u'dev'):
 *                 count = item[3:]             # <<<<<<<<<<<<<<
 *                 item = -300
 *             elif item.startswith(u'alpha'):
 */
          __pyx_t_9 = PySequence_GetSlice(__pyx_v_item, 3, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_v_count);
          __pyx_v_count = __pyx_t_9;
          __pyx_t_9 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":157
 *             if item.startswith(u'dev'):
 *                 count = item[3:]
 *                 item = -300             # <<<<<<<<<<<<<<
 *             elif item.startswith(u'alpha'):
 *                 count = item[5:]
 */
          __Pyx_INCREF(__pyx_int_neg_300);
          __Pyx_DECREF(__pyx_v_item);
          __pyx_v_item = __pyx_int_neg_300;
          goto __pyx_L15;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":158
 *                 count = item[3:]
 *                 item = -300
 *             elif item.startswith(u'alpha'):             # <<<<<<<<<<<<<<
 *                 count = item[5:]
 *                 item = -200
 */
        __pyx_t_9 = PyObject_GetAttr(__pyx_v_item, __pyx_n_s__startswith); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(((PyObject *)__pyx_n_u__alpha));
        PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_n_u__alpha));
        __Pyx_GIVEREF(((PyObject *)__pyx_n_u__alpha));
        __pyx_t_7 = PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (__pyx_t_10) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":159
 *                 item = -300
 *             elif item.startswith(u'alpha'):
 *                 count = item[5:]             # <<<<<<<<<<<<<<
 *                 item = -200
 *             elif item.startswith(u'beta'):
 */
          __pyx_t_7 = PySequence_GetSlice(__pyx_v_item, 5, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_v_count);
          __pyx_v_count = __pyx_t_7;
          __pyx_t_7 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":160
 *             elif item.startswith(u'alpha'):
 *                 count = item[5:]
 *                 item = -200             # <<<<<<<<<<<<<<
 *             elif item.startswith(u'beta'):
 *                 count = item[4:]
 */
          __Pyx_INCREF(__pyx_int_neg_200);
          __Pyx_DECREF(__pyx_v_item);
          __pyx_v_item = __pyx_int_neg_200;
          goto __pyx_L15;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":161
 *                 count = item[5:]
 *                 item = -200
 *             elif item.startswith(u'beta'):             # <<<<<<<<<<<<<<
 *                 count = item[4:]
 *                 item = -100
 */
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_item, __pyx_n_s__startswith); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(((PyObject *)__pyx_n_u__beta));
        PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_n_u__beta));
        __Pyx_GIVEREF(((PyObject *)__pyx_n_u__beta));
        __pyx_t_9 = PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (__pyx_t_10) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":162
 *                 item = -200
 *             elif item.startswith(u'beta'):
 *                 count = item[4:]             # <<<<<<<<<<<<<<
 *                 item = -100
 *             else:
 */
          __pyx_t_9 = PySequence_GetSlice(__pyx_v_item, 4, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_v_count);
          __pyx_v_count = __pyx_t_9;
          __pyx_t_9 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":163
 *             elif item.startswith(u'beta'):
 *                 count = item[4:]
 *                 item = -100             # <<<<<<<<<<<<<<
 *             else:
 *                 count = 0
 */
          __Pyx_INCREF(__pyx_int_neg_100);
          __Pyx_DECREF(__pyx_v_item);
          __pyx_v_item = __pyx_int_neg_100;
          goto __pyx_L15;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":165
 *                 item = -100
 *             else:
 *                 count = 0             # <<<<<<<<<<<<<<
 *             if count:
 *                 item = item + int(count)
 */
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_DECREF(__pyx_v_count);
          __pyx_v_count = __pyx_int_0;
        }
        __pyx_L15:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":166
 *             else:
 *                 count = 0
 *             if count:             # <<<<<<<<<<<<<<
 *                 item = item + int(count)
 *         version_list.append(item)
 */
        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_count); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        if (__pyx_t_10) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":167
 *                 count = 0
 *             if count:
 *                 item = item + int(count)             # <<<<<<<<<<<<<<
 *         version_list.append(item)
 *     return tuple(version_list)
 */
          __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_INCREF(__pyx_v_count);
          PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_count);
          __Pyx_GIVEREF(__pyx_v_count);
          __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = PyNumber_Add(__pyx_v_item, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_v_item);
          __pyx_v_item = __pyx_t_9;
          __pyx_t_9 = 0;
          goto __pyx_L16;
        }
        __pyx_L16:;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L6_exception_handled;
      }
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L12_try_end:;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":168
 *             if count:
 *                 item = item + int(count)
 *         version_list.append(item)             # <<<<<<<<<<<<<<
 *     return tuple(version_list)
 * 
 */
    if (unlikely(__pyx_v_version_list == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_version_list), __pyx_v_item); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":169
 *                 item = item + int(count)
 *         version_list.append(item)
 *     return tuple(version_list)             # <<<<<<<<<<<<<<
 * 
 * cdef __unpackIntVersion(int c_version):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_version_list == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_3 = ((PyObject *)PyList_AsTuple(__pyx_v_version_list)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree.__unpackDottedVersion");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_version_list);
  __Pyx_DECREF(__pyx_v_l);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF(__pyx_v_count);
  __Pyx_DECREF(__pyx_v_version);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":171
 *     return tuple(version_list)
 * 
 * cdef __unpackIntVersion(int c_version):             # <<<<<<<<<<<<<<
 *     return (
 *         ((c_version / (100*100)) % 100),
 */

static  PyObject *__pyx_f_4lxml_5etree___unpackIntVersion(int __pyx_v_c_version) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__unpackIntVersion");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":172
 * 
 * cdef __unpackIntVersion(int c_version):
 *     return (             # <<<<<<<<<<<<<<
 *         ((c_version / (100*100)) % 100),
 *         ((c_version / 100)       % 100),
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":173
 * cdef __unpackIntVersion(int c_version):
 *     return (
 *         ((c_version / (100*100)) % 100),             # <<<<<<<<<<<<<<
 *         ((c_version / 100)       % 100),
 *         (c_version               % 100)
 */
  __pyx_t_1 = PyInt_FromLong(__Pyx_mod_long(__Pyx_div_long(__pyx_v_c_version, 10000), 100)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":174
 *     return (
 *         ((c_version / (100*100)) % 100),
 *         ((c_version / 100)       % 100),             # <<<<<<<<<<<<<<
 *         (c_version               % 100)
 *         )
 */
  __pyx_t_2 = PyInt_FromLong(__Pyx_mod_long(__Pyx_div_long(__pyx_v_c_version, 100), 100)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":175
 *         ((c_version / (100*100)) % 100),
 *         ((c_version / 100)       % 100),
 *         (c_version               % 100)             # <<<<<<<<<<<<<<
 *         )
 * 
 */
  __pyx_t_3 = PyInt_FromLong(__Pyx_mod_long(__pyx_v_c_version, 100)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.__unpackIntVersion");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":196
 * cdef class _TempStore:
 *     cdef list _storage
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._storage = []
 * 
 */

static int __pyx_pf_4lxml_5etree_10_TempStore___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_10_TempStore___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":197
 *     cdef list _storage
 *     def __init__(self):
 *         self._storage = []             # <<<<<<<<<<<<<<
 * 
 *     cdef int add(self, obj) except -1:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__TempStore *)__pyx_v_self)->_storage);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__TempStore *)__pyx_v_self)->_storage));
  ((struct __pyx_obj_4lxml_5etree__TempStore *)__pyx_v_self)->_storage = __pyx_t_1;
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._TempStore.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":199
 *         self._storage = []
 * 
 *     cdef int add(self, obj) except -1:             # <<<<<<<<<<<<<<
 *         self._storage.append(obj)
 *         return 0
 */

static  int __pyx_f_4lxml_5etree_10_TempStore_add(struct __pyx_obj_4lxml_5etree__TempStore *__pyx_v_self, PyObject *__pyx_v_obj) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("add");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":200
 * 
 *     cdef int add(self, obj) except -1:
 *         self._storage.append(obj)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  if (unlikely(__pyx_v_self->_storage == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_storage), __pyx_v_obj); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":201
 *     cdef int add(self, obj) except -1:
 *         self._storage.append(obj)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int clear(self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._TempStore.add");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":203
 *         return 0
 * 
 *     cdef int clear(self) except -1:             # <<<<<<<<<<<<<<
 *         del self._storage[:]
 *         return 0
 */

static  int __pyx_f_4lxml_5etree_10_TempStore_clear(struct __pyx_obj_4lxml_5etree__TempStore *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("clear");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":204
 * 
 *     cdef int clear(self) except -1:
 *         del self._storage[:]             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  if (PySequence_DelSlice(((PyObject *)__pyx_v_self->_storage), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":205
 *     cdef int clear(self) except -1:
 *         del self._storage[:]
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * # class for temporarily storing exceptions raised in extensions
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._TempStore.clear");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":210
 * cdef class _ExceptionContext:
 *     cdef object _exc_info
 *     cdef void clear(self):             # <<<<<<<<<<<<<<
 *         self._exc_info = None
 * 
 */

static  void __pyx_f_4lxml_5etree_17_ExceptionContext_clear(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
  __Pyx_RefNannySetupContext("clear");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":211
 *     cdef object _exc_info
 *     cdef void clear(self):
 *         self._exc_info = None             # <<<<<<<<<<<<<<
 * 
 *     cdef void _store_raised(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_exc_info);
  __Pyx_DECREF(__pyx_v_self->_exc_info);
  __pyx_v_self->_exc_info = Py_None;

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":213
 *         self._exc_info = None
 * 
 *     cdef void _store_raised(self):             # <<<<<<<<<<<<<<
 *         self._exc_info = sys.exc_info()
 * 
 */

static  void __pyx_f_4lxml_5etree_17_ExceptionContext__store_raised(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_store_raised");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":214
 * 
 *     cdef void _store_raised(self):
 *         self._exc_info = sys.exc_info()             # <<<<<<<<<<<<<<
 * 
 *     cdef void _store_exception(self, exception):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s__exc_info); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_exc_info);
  __Pyx_DECREF(__pyx_v_self->_exc_info);
  __pyx_v_self->_exc_info = __pyx_t_2;
  __pyx_t_2 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._ExceptionContext._store_raised");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":216
 *         self._exc_info = sys.exc_info()
 * 
 *     cdef void _store_exception(self, exception):             # <<<<<<<<<<<<<<
 *         self._exc_info = (exception, None, None)
 * 
 */

static  void __pyx_f_4lxml_5etree_17_ExceptionContext__store_exception(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self, PyObject *__pyx_v_exception) {
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_store_exception");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":217
 * 
 *     cdef void _store_exception(self, exception):
 *         self._exc_info = (exception, None, None)             # <<<<<<<<<<<<<<
 * 
 *     cdef bint _has_raised(self):
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_exception);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_exception);
  __Pyx_GIVEREF(__pyx_v_exception);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_exc_info);
  __Pyx_DECREF(__pyx_v_self->_exc_info);
  __pyx_v_self->_exc_info = __pyx_t_1;
  __pyx_t_1 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree._ExceptionContext._store_exception");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":219
 *         self._exc_info = (exception, None, None)
 * 
 *     cdef bint _has_raised(self):             # <<<<<<<<<<<<<<
 *         return self._exc_info is not None
 * 
 */

static  int __pyx_f_4lxml_5etree_17_ExceptionContext__has_raised(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_has_raised");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":220
 * 
 *     cdef bint _has_raised(self):
 *         return self._exc_info is not None             # <<<<<<<<<<<<<<
 * 
 *     cdef int _raise_if_stored(self) except -1:
 */
  __pyx_t_1 = (__pyx_v_self->_exc_info != Py_None);
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":222
 *         return self._exc_info is not None
 * 
 *     cdef int _raise_if_stored(self) except -1:             # <<<<<<<<<<<<<<
 *         if self._exc_info is None:
 *             return 0
 */

static  int __pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored(struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_self) {
  PyObject *__pyx_v_type;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_traceback;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_raise_if_stored");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_type = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_traceback = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":223
 * 
 *     cdef int _raise_if_stored(self) except -1:
 *         if self._exc_info is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         type, value, traceback = self._exc_info
 */
  __pyx_t_1 = (__pyx_v_self->_exc_info == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":224
 *     cdef int _raise_if_stored(self) except -1:
 *         if self._exc_info is None:
 *             return 0             # <<<<<<<<<<<<<<
 *         type, value, traceback = self._exc_info
 *         self._exc_info = None
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":225
 *         if self._exc_info is None:
 *             return 0
 *         type, value, traceback = self._exc_info             # <<<<<<<<<<<<<<
 *         self._exc_info = None
 *         if value is None and traceback is None:
 */
  if (PyTuple_CheckExact(__pyx_v_self->_exc_info) && likely(PyTuple_GET_SIZE(__pyx_v_self->_exc_info) == 3)) {
    PyObject* tuple = __pyx_v_self->_exc_info;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_type);
    __pyx_v_type = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_traceback);
    __pyx_v_traceback = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_v_self->_exc_info); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_type);
    __pyx_v_type = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_traceback);
    __pyx_v_traceback = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":226
 *             return 0
 *         type, value, traceback = self._exc_info
 *         self._exc_info = None             # <<<<<<<<<<<<<<
 *         if value is None and traceback is None:
 *             raise type
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_exc_info);
  __Pyx_DECREF(__pyx_v_self->_exc_info);
  __pyx_v_self->_exc_info = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":227
 *         type, value, traceback = self._exc_info
 *         self._exc_info = None
 *         if value is None and traceback is None:             # <<<<<<<<<<<<<<
 *             raise type
 *         else:
 */
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {
    __pyx_t_6 = (__pyx_v_traceback == Py_None);
    __pyx_t_7 = __pyx_t_6;
  } else {
    __pyx_t_7 = __pyx_t_1;
  }
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":228
 *         self._exc_info = None
 *         if value is None and traceback is None:
 *             raise type             # <<<<<<<<<<<<<<
 *         else:
 *             raise type, value, traceback
 */
    __Pyx_Raise(__pyx_v_type, 0, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":230
 *             raise type
 *         else:
 *             raise type, value, traceback             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_Raise(__pyx_v_type, __pyx_v_value, __pyx_v_traceback);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._ExceptionContext._raise_if_stored");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_type);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_traceback);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":7
 * # the Python class
 * 
 * cdef inline _Element getProxy(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Get a proxy for a given node.
 *     """
 */

static CYTHON_INLINE struct LxmlElement *__pyx_f_4lxml_5etree_getProxy(xmlNode *__pyx_v_c_node) {
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("getProxy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":11
 *     """
 *     #print "getProxy for:", <int>c_node
 *     if c_node is not NULL and c_node._private is not NULL:             # <<<<<<<<<<<<<<
 *         return <_Element>c_node._private
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_node->_private != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":12
 *     #print "getProxy for:", <int>c_node
 *     if c_node is not NULL and c_node._private is not NULL:
 *         return <_Element>c_node._private             # <<<<<<<<<<<<<<
 *     else:
 *         return None
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_c_node->_private)));
    __pyx_r = ((struct LxmlElement *)__pyx_v_c_node->_private);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":14
 *         return <_Element>c_node._private
 *     else:
 *         return None             # <<<<<<<<<<<<<<
 * 
 * cdef inline int hasProxy(xmlNode* c_node):
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct LxmlElement *)Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":16
 *         return None
 * 
 * cdef inline int hasProxy(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return c_node._private is not NULL
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree_hasProxy(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("hasProxy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":17
 * 
 * cdef inline int hasProxy(xmlNode* c_node):
 *     return c_node._private is not NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _registerProxy(_Element proxy, _Document doc,
 */
  __pyx_r = (__pyx_v_c_node->_private != NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":19
 *     return c_node._private is not NULL
 * 
 * cdef inline int _registerProxy(_Element proxy, _Document doc,             # <<<<<<<<<<<<<<
 *                                xmlNode* c_node) except -1:
 *     u"""Register a proxy and type for the node it's proxying for.
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__registerProxy(struct LxmlElement *__pyx_v_proxy, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_registerProxy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":24
 *     """
 *     #print "registering for:", <int>proxy._c_node
 *     assert c_node._private is NULL, u"double registering proxy!"             # <<<<<<<<<<<<<<
 *     proxy._doc = doc
 *     proxy._c_node = c_node
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_c_node->_private == NULL))) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_3));
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":25
 *     #print "registering for:", <int>proxy._c_node
 *     assert c_node._private is NULL, u"double registering proxy!"
 *     proxy._doc = doc             # <<<<<<<<<<<<<<
 *     proxy._c_node = c_node
 *     c_node._private = <void*>proxy
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __Pyx_GOTREF(__pyx_v_proxy->_doc);
  __Pyx_DECREF(((PyObject *)__pyx_v_proxy->_doc));
  __pyx_v_proxy->_doc = __pyx_v_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":26
 *     assert c_node._private is NULL, u"double registering proxy!"
 *     proxy._doc = doc
 *     proxy._c_node = c_node             # <<<<<<<<<<<<<<
 *     c_node._private = <void*>proxy
 *     # additional INCREF to make sure _Document is GC-ed LAST!
 */
  __pyx_v_proxy->_c_node = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":27
 *     proxy._doc = doc
 *     proxy._c_node = c_node
 *     c_node._private = <void*>proxy             # <<<<<<<<<<<<<<
 *     # additional INCREF to make sure _Document is GC-ed LAST!
 *     proxy._gc_doc = <python.PyObject*>doc
 */
  __pyx_v_c_node->_private = ((void *)__pyx_v_proxy);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":29
 *     c_node._private = <void*>proxy
 *     # additional INCREF to make sure _Document is GC-ed LAST!
 *     proxy._gc_doc = <python.PyObject*>doc             # <<<<<<<<<<<<<<
 *     python.Py_INCREF(doc)
 * 
 */
  __pyx_v_proxy->_gc_doc = ((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":30
 *     # additional INCREF to make sure _Document is GC-ed LAST!
 *     proxy._gc_doc = <python.PyObject*>doc
 *     python.Py_INCREF(doc)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _unregisterProxy(_Element proxy) except -1:
 */
  Py_INCREF(((PyObject *)__pyx_v_doc));

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._registerProxy");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":32
 *     python.Py_INCREF(doc)
 * 
 * cdef inline int _unregisterProxy(_Element proxy) except -1:             # <<<<<<<<<<<<<<
 *     u"""Unregister a proxy for the node it's proxying for.
 *     """
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__unregisterProxy(struct LxmlElement *__pyx_v_proxy) {
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  __Pyx_RefNannySetupContext("_unregisterProxy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":36
 *     """
 *     cdef xmlNode* c_node
 *     c_node = proxy._c_node             # <<<<<<<<<<<<<<
 *     assert c_node._private is <void*>proxy, u"Tried to unregister unknown proxy"
 *     c_node._private = NULL
 */
  __pyx_v_c_node = __pyx_v_proxy->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":37
 *     cdef xmlNode* c_node
 *     c_node = proxy._c_node
 *     assert c_node._private is <void*>proxy, u"Tried to unregister unknown proxy"             # <<<<<<<<<<<<<<
 *     c_node._private = NULL
 *     return 0
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_c_node->_private == ((void *)__pyx_v_proxy)))) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_4));
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":38
 *     c_node = proxy._c_node
 *     assert c_node._private is <void*>proxy, u"Tried to unregister unknown proxy"
 *     c_node._private = NULL             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_c_node->_private = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":39
 *     assert c_node._private is <void*>proxy, u"Tried to unregister unknown proxy"
 *     c_node._private = NULL
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline void _releaseProxy(_Element proxy):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._unregisterProxy");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":41
 *     return 0
 * 
 * cdef inline void _releaseProxy(_Element proxy):             # <<<<<<<<<<<<<<
 *     u"""An additional DECREF for the document.
 *     """
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree__releaseProxy(struct LxmlElement *__pyx_v_proxy) {
  __Pyx_RefNannySetupContext("_releaseProxy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":44
 *     u"""An additional DECREF for the document.
 *     """
 *     python.Py_XDECREF(proxy._gc_doc)             # <<<<<<<<<<<<<<
 *     proxy._gc_doc = NULL
 * 
 */
  Py_XDECREF(__pyx_v_proxy->_gc_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":45
 *     """
 *     python.Py_XDECREF(proxy._gc_doc)
 *     proxy._gc_doc = NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline void _updateProxyDocument(xmlNode* c_node, _Document doc):
 */
  __pyx_v_proxy->_gc_doc = NULL;

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":47
 *     proxy._gc_doc = NULL
 * 
 * cdef inline void _updateProxyDocument(xmlNode* c_node, _Document doc):             # <<<<<<<<<<<<<<
 *     u"""Replace the document reference of a proxy and return the old one
 *     iff it was replaced (None otherwise).
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree__updateProxyDocument(xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc) {
  struct LxmlDocument *__pyx_v_old_doc;
  struct LxmlElement *__pyx_v_element = 0;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_updateProxyDocument");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_old_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":52
 *     """
 *     cdef _Document old_doc
 *     cdef _Element element = <_Element>c_node._private             # <<<<<<<<<<<<<<
 *     if element._doc is not doc:
 *         old_doc = element._doc
 */
  __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_c_node->_private)));
  __pyx_v_element = ((struct LxmlElement *)__pyx_v_c_node->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":53
 *     cdef _Document old_doc
 *     cdef _Element element = <_Element>c_node._private
 *     if element._doc is not doc:             # <<<<<<<<<<<<<<
 *         old_doc = element._doc
 *         element._doc = doc
 */
  __pyx_t_1 = (__pyx_v_element->_doc != __pyx_v_doc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":54
 *     cdef _Element element = <_Element>c_node._private
 *     if element._doc is not doc:
 *         old_doc = element._doc             # <<<<<<<<<<<<<<
 *         element._doc = doc
 *         python.Py_INCREF(doc)
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_element->_doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_old_doc));
    __pyx_v_old_doc = __pyx_v_element->_doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":55
 *     if element._doc is not doc:
 *         old_doc = element._doc
 *         element._doc = doc             # <<<<<<<<<<<<<<
 *         python.Py_INCREF(doc)
 *         element._gc_doc = <python.PyObject*>doc
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_doc));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
    __Pyx_GOTREF(__pyx_v_element->_doc);
    __Pyx_DECREF(((PyObject *)__pyx_v_element->_doc));
    __pyx_v_element->_doc = __pyx_v_doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":56
 *         old_doc = element._doc
 *         element._doc = doc
 *         python.Py_INCREF(doc)             # <<<<<<<<<<<<<<
 *         element._gc_doc = <python.PyObject*>doc
 *         python.Py_DECREF(old_doc)
 */
    Py_INCREF(((PyObject *)__pyx_v_doc));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":57
 *         element._doc = doc
 *         python.Py_INCREF(doc)
 *         element._gc_doc = <python.PyObject*>doc             # <<<<<<<<<<<<<<
 *         python.Py_DECREF(old_doc)
 * 
 */
    __pyx_v_element->_gc_doc = ((PyObject *)__pyx_v_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":58
 *         python.Py_INCREF(doc)
 *         element._gc_doc = <python.PyObject*>doc
 *         python.Py_DECREF(old_doc)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
    Py_DECREF(((PyObject *)__pyx_v_old_doc));
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_old_doc);
  __Pyx_XDECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":63
 * # temporarily make a node the root node of its document
 * 
 * cdef xmlDoc* _fakeRootDoc(xmlDoc* c_base_doc, xmlNode* c_node) except NULL:             # <<<<<<<<<<<<<<
 *     # build a temporary document that has the given node as root node
 *     # note that copy and original must not be modified during its lifetime!!
 */

static  xmlDoc *__pyx_f_4lxml_5etree__fakeRootDoc(xmlDoc *__pyx_v_c_base_doc, xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_root;
  xmlNode *__pyx_v_c_new_root;
  xmlDoc *__pyx_v_c_doc;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  xmlDoc *__pyx_t_2;
  __Pyx_RefNannySetupContext("_fakeRootDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":71
 *     cdef xmlNode* c_new_root
 *     cdef xmlDoc*  c_doc
 *     c_root = tree.xmlDocGetRootElement(c_base_doc)             # <<<<<<<<<<<<<<
 *     if c_root is c_node:
 *         # already the root node
 */
  __pyx_v_c_root = xmlDocGetRootElement(__pyx_v_c_base_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":72
 *     cdef xmlDoc*  c_doc
 *     c_root = tree.xmlDocGetRootElement(c_base_doc)
 *     if c_root is c_node:             # <<<<<<<<<<<<<<
 *         # already the root node
 *         return c_base_doc
 */
  __pyx_t_1 = (__pyx_v_c_root == __pyx_v_c_node);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":74
 *     if c_root is c_node:
 *         # already the root node
 *         return c_base_doc             # <<<<<<<<<<<<<<
 * 
 *     c_doc  = _copyDoc(c_base_doc, 0)                   # non recursive!
 */
    __pyx_r = __pyx_v_c_base_doc;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":76
 *         return c_base_doc
 * 
 *     c_doc  = _copyDoc(c_base_doc, 0)                   # non recursive!             # <<<<<<<<<<<<<<
 *     c_new_root = tree.xmlDocCopyNode(c_node, c_doc, 2) # non recursive!
 *     tree.xmlDocSetRootElement(c_doc, c_new_root)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_base_doc, 0); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":77
 * 
 *     c_doc  = _copyDoc(c_base_doc, 0)                   # non recursive!
 *     c_new_root = tree.xmlDocCopyNode(c_node, c_doc, 2) # non recursive!             # <<<<<<<<<<<<<<
 *     tree.xmlDocSetRootElement(c_doc, c_new_root)
 *     _copyParentNamespaces(c_node, c_new_root)
 */
  __pyx_v_c_new_root = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_c_doc, 2);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":78
 *     c_doc  = _copyDoc(c_base_doc, 0)                   # non recursive!
 *     c_new_root = tree.xmlDocCopyNode(c_node, c_doc, 2) # non recursive!
 *     tree.xmlDocSetRootElement(c_doc, c_new_root)             # <<<<<<<<<<<<<<
 *     _copyParentNamespaces(c_node, c_new_root)
 * 
 */
  xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_new_root);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":79
 *     c_new_root = tree.xmlDocCopyNode(c_node, c_doc, 2) # non recursive!
 *     tree.xmlDocSetRootElement(c_doc, c_new_root)
 *     _copyParentNamespaces(c_node, c_new_root)             # <<<<<<<<<<<<<<
 * 
 *     c_new_root.children = c_node.children
 */
  __pyx_f_4lxml_5etree__copyParentNamespaces(__pyx_v_c_node, __pyx_v_c_new_root);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":81
 *     _copyParentNamespaces(c_node, c_new_root)
 * 
 *     c_new_root.children = c_node.children             # <<<<<<<<<<<<<<
 *     c_new_root.last = c_node.last
 *     c_new_root.next = c_new_root.prev = NULL
 */
  __pyx_v_c_new_root->children = __pyx_v_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":82
 * 
 *     c_new_root.children = c_node.children
 *     c_new_root.last = c_node.last             # <<<<<<<<<<<<<<
 *     c_new_root.next = c_new_root.prev = NULL
 * 
 */
  __pyx_v_c_new_root->last = __pyx_v_c_node->last;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":83
 *     c_new_root.children = c_node.children
 *     c_new_root.last = c_node.last
 *     c_new_root.next = c_new_root.prev = NULL             # <<<<<<<<<<<<<<
 * 
 *     # store original node
 */
  __pyx_v_c_new_root->next = NULL;
  __pyx_v_c_new_root->prev = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":86
 * 
 *     # store original node
 *     c_doc._private = c_node             # <<<<<<<<<<<<<<
 * 
 *     # divert parent pointers of children
 */
  __pyx_v_c_doc->_private = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":89
 * 
 *     # divert parent pointers of children
 *     c_child = c_new_root.children             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         c_child.parent = c_new_root
 */
  __pyx_v_c_child = __pyx_v_c_new_root->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":90
 *     # divert parent pointers of children
 *     c_child = c_new_root.children
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         c_child.parent = c_new_root
 *         c_child = c_child.next
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":91
 *     c_child = c_new_root.children
 *     while c_child is not NULL:
 *         c_child.parent = c_new_root             # <<<<<<<<<<<<<<
 *         c_child = c_child.next
 * 
 */
    __pyx_v_c_child->parent = __pyx_v_c_new_root;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":92
 *     while c_child is not NULL:
 *         c_child.parent = c_new_root
 *         c_child = c_child.next             # <<<<<<<<<<<<<<
 * 
 *     c_doc.children = c_new_root
 */
    __pyx_v_c_child = __pyx_v_c_child->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":94
 *         c_child = c_child.next
 * 
 *     c_doc.children = c_new_root             # <<<<<<<<<<<<<<
 *     return c_doc
 * 
 */
  __pyx_v_c_doc->children = __pyx_v_c_new_root;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":95
 * 
 *     c_doc.children = c_new_root
 *     return c_doc             # <<<<<<<<<<<<<<
 * 
 * cdef void _destroyFakeDoc(xmlDoc* c_base_doc, xmlDoc* c_doc):
 */
  __pyx_r = __pyx_v_c_doc;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._fakeRootDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":97
 *     return c_doc
 * 
 * cdef void _destroyFakeDoc(xmlDoc* c_base_doc, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
 *     # delete a temporary document
 *     cdef xmlNode* c_child
 */

static  void __pyx_f_4lxml_5etree__destroyFakeDoc(xmlDoc *__pyx_v_c_base_doc, xmlDoc *__pyx_v_c_doc) {
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_parent;
  xmlNode *__pyx_v_c_root;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_destroyFakeDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":102
 *     cdef xmlNode* c_parent
 *     cdef xmlNode* c_root
 *     if c_doc is c_base_doc:             # <<<<<<<<<<<<<<
 *         return
 *     c_root = tree.xmlDocGetRootElement(c_doc)
 */
  __pyx_t_1 = (__pyx_v_c_doc == __pyx_v_c_base_doc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":103
 *     cdef xmlNode* c_root
 *     if c_doc is c_base_doc:
 *         return             # <<<<<<<<<<<<<<
 *     c_root = tree.xmlDocGetRootElement(c_doc)
 * 
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":104
 *     if c_doc is c_base_doc:
 *         return
 *     c_root = tree.xmlDocGetRootElement(c_doc)             # <<<<<<<<<<<<<<
 * 
 *     # restore parent pointers of children
 */
  __pyx_v_c_root = xmlDocGetRootElement(__pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":107
 * 
 *     # restore parent pointers of children
 *     c_parent = <xmlNode*>c_doc._private             # <<<<<<<<<<<<<<
 *     c_child = c_root.children
 *     while c_child is not NULL:
 */
  __pyx_v_c_parent = ((xmlNode *)__pyx_v_c_doc->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":108
 *     # restore parent pointers of children
 *     c_parent = <xmlNode*>c_doc._private
 *     c_child = c_root.children             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         c_child.parent = c_parent
 */
  __pyx_v_c_child = __pyx_v_c_root->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":109
 *     c_parent = <xmlNode*>c_doc._private
 *     c_child = c_root.children
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         c_child.parent = c_parent
 *         c_child = c_child.next
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":110
 *     c_child = c_root.children
 *     while c_child is not NULL:
 *         c_child.parent = c_parent             # <<<<<<<<<<<<<<
 *         c_child = c_child.next
 * 
 */
    __pyx_v_c_child->parent = __pyx_v_c_parent;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":111
 *     while c_child is not NULL:
 *         c_child.parent = c_parent
 *         c_child = c_child.next             # <<<<<<<<<<<<<<
 * 
 *     # prevent recursive removal of children
 */
    __pyx_v_c_child = __pyx_v_c_child->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":114
 * 
 *     # prevent recursive removal of children
 *     c_root.children = c_root.last = NULL             # <<<<<<<<<<<<<<
 *     tree.xmlFreeDoc(c_doc)
 * 
 */
  __pyx_v_c_root->children = NULL;
  __pyx_v_c_root->last = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":115
 *     # prevent recursive removal of children
 *     c_root.children = c_root.last = NULL
 *     tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _fakeDocElementFactory(_Document doc, xmlNode* c_element):
 */
  xmlFreeDoc(__pyx_v_c_doc);

  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":117
 *     tree.xmlFreeDoc(c_doc)
 * 
 * cdef _Element _fakeDocElementFactory(_Document doc, xmlNode* c_element):             # <<<<<<<<<<<<<<
 *     u"""Special element factory for cases where we need to create a fake
 *     root document, but still need to instantiate arbitrary nodes from
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__fakeDocElementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_element) {
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_fakeDocElementFactory");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":126
 *     instantiate the original node instead.
 *     """
 *     if c_element.doc is not doc._c_doc:             # <<<<<<<<<<<<<<
 *         if c_element.doc._private is not NULL:
 *             if c_element is c_element.doc.children:
 */
  __pyx_t_1 = (__pyx_v_c_element->doc != __pyx_v_doc->_c_doc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":127
 *     """
 *     if c_element.doc is not doc._c_doc:
 *         if c_element.doc._private is not NULL:             # <<<<<<<<<<<<<<
 *             if c_element is c_element.doc.children:
 *                 c_element = <xmlNode*>c_element.doc._private
 */
    __pyx_t_1 = (__pyx_v_c_element->doc->_private != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":128
 *     if c_element.doc is not doc._c_doc:
 *         if c_element.doc._private is not NULL:
 *             if c_element is c_element.doc.children:             # <<<<<<<<<<<<<<
 *                 c_element = <xmlNode*>c_element.doc._private
 *                 #assert c_element.type == tree.XML_ELEMENT_NODE
 */
      __pyx_t_1 = (__pyx_v_c_element == __pyx_v_c_element->doc->children);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":129
 *         if c_element.doc._private is not NULL:
 *             if c_element is c_element.doc.children:
 *                 c_element = <xmlNode*>c_element.doc._private             # <<<<<<<<<<<<<<
 *                 #assert c_element.type == tree.XML_ELEMENT_NODE
 *     return _elementFactory(doc, c_element)
 */
        __pyx_v_c_element = ((xmlNode *)__pyx_v_c_element->doc->_private);
        goto __pyx_L5;
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":131
 *                 c_element = <xmlNode*>c_element.doc._private
 *                 #assert c_element.type == tree.XML_ELEMENT_NODE
 *     return _elementFactory(doc, c_element)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_element)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct LxmlElement *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._fakeDocElementFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":136
 * # support for freeing tree elements when proxy objects are destroyed
 * 
 * cdef int attemptDeallocation(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Attempt deallocation of c_node (or higher up in tree).
 *     """
 */

static  int __pyx_f_4lxml_5etree_attemptDeallocation(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_top;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("attemptDeallocation");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":141
 *     cdef xmlNode* c_top
 *     # could be we actually aren't referring to the tree at all
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         #print "not freeing, node is NULL"
 *         return 0
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":143
 *     if c_node is NULL:
 *         #print "not freeing, node is NULL"
 *         return 0             # <<<<<<<<<<<<<<
 *     c_top = getDeallocationTop(c_node)
 *     if c_top is not NULL:
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":144
 *         #print "not freeing, node is NULL"
 *         return 0
 *     c_top = getDeallocationTop(c_node)             # <<<<<<<<<<<<<<
 *     if c_top is not NULL:
 *         #print "freeing:", c_top.name
 */
  __pyx_v_c_top = __pyx_f_4lxml_5etree_getDeallocationTop(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":145
 *         return 0
 *     c_top = getDeallocationTop(c_node)
 *     if c_top is not NULL:             # <<<<<<<<<<<<<<
 *         #print "freeing:", c_top.name
 *         _removeText(c_top.next) # tail
 */
  __pyx_t_1 = (__pyx_v_c_top != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":147
 *     if c_top is not NULL:
 *         #print "freeing:", c_top.name
 *         _removeText(c_top.next) # tail             # <<<<<<<<<<<<<<
 *         tree.xmlFreeNode(c_top)
 *         return 1
 */
    __pyx_f_4lxml_5etree__removeText(__pyx_v_c_top->next);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":148
 *         #print "freeing:", c_top.name
 *         _removeText(c_top.next) # tail
 *         tree.xmlFreeNode(c_top)             # <<<<<<<<<<<<<<
 *         return 1
 *     return 0
 */
    xmlFreeNode(__pyx_v_c_top);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":149
 *         _removeText(c_top.next) # tail
 *         tree.xmlFreeNode(c_top)
 *         return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":150
 *         tree.xmlFreeNode(c_top)
 *         return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* getDeallocationTop(xmlNode* c_node):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":152
 *     return 0
 * 
 * cdef xmlNode* getDeallocationTop(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Return the top of the tree that can be deallocated, or NULL.
 *     """
 */

static  xmlNode *__pyx_f_4lxml_5etree_getDeallocationTop(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_current;
  xmlNode *__pyx_v_c_top;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("getDeallocationTop");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":158
 *     cdef xmlNode* c_top
 *     #print "trying to do deallocating:", c_node.type
 *     if c_node._private is not NULL:             # <<<<<<<<<<<<<<
 *         #print "Not freeing: proxies still exist"
 *         return NULL
 */
  __pyx_t_1 = (__pyx_v_c_node->_private != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":160
 *     if c_node._private is not NULL:
 *         #print "Not freeing: proxies still exist"
 *         return NULL             # <<<<<<<<<<<<<<
 *     c_current = c_node.parent
 *     c_top = c_node
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":161
 *         #print "Not freeing: proxies still exist"
 *         return NULL
 *     c_current = c_node.parent             # <<<<<<<<<<<<<<
 *     c_top = c_node
 *     while c_current is not NULL:
 */
  __pyx_v_c_current = __pyx_v_c_node->parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":162
 *         return NULL
 *     c_current = c_node.parent
 *     c_top = c_node             # <<<<<<<<<<<<<<
 *     while c_current is not NULL:
 *         #print "checking:", c_current.type
 */
  __pyx_v_c_top = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":163
 *     c_current = c_node.parent
 *     c_top = c_node
 *     while c_current is not NULL:             # <<<<<<<<<<<<<<
 *         #print "checking:", c_current.type
 *         if c_current.type == tree.XML_DOCUMENT_NODE or \
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_current != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":165
 *     while c_current is not NULL:
 *         #print "checking:", c_current.type
 *         if c_current.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
 *                c_current.type == tree.XML_HTML_DOCUMENT_NODE:
 *             #print "not freeing: still in doc"
 */
    __pyx_t_1 = (__pyx_v_c_current->type == XML_DOCUMENT_NODE);
    if (!__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":166
 *         #print "checking:", c_current.type
 *         if c_current.type == tree.XML_DOCUMENT_NODE or \
 *                c_current.type == tree.XML_HTML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
 *             #print "not freeing: still in doc"
 *             return NULL
 */
      __pyx_t_2 = (__pyx_v_c_current->type == XML_HTML_DOCUMENT_NODE);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":168
 *                c_current.type == tree.XML_HTML_DOCUMENT_NODE:
 *             #print "not freeing: still in doc"
 *             return NULL             # <<<<<<<<<<<<<<
 *         # if we're still attached to the document, don't deallocate
 *         if c_current._private is not NULL:
 */
      __pyx_r = NULL;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":170
 *             return NULL
 *         # if we're still attached to the document, don't deallocate
 *         if c_current._private is not NULL:             # <<<<<<<<<<<<<<
 *             #print "Not freeing: proxies still exist"
 *             return NULL
 */
    __pyx_t_3 = (__pyx_v_c_current->_private != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":172
 *         if c_current._private is not NULL:
 *             #print "Not freeing: proxies still exist"
 *             return NULL             # <<<<<<<<<<<<<<
 *         c_top = c_current
 *         c_current = c_current.parent
 */
      __pyx_r = NULL;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":173
 *             #print "Not freeing: proxies still exist"
 *             return NULL
 *         c_top = c_current             # <<<<<<<<<<<<<<
 *         c_current = c_current.parent
 *     # see whether we have children to deallocate
 */
    __pyx_v_c_top = __pyx_v_c_current;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":174
 *             return NULL
 *         c_top = c_current
 *         c_current = c_current.parent             # <<<<<<<<<<<<<<
 *     # see whether we have children to deallocate
 *     if canDeallocateChildNodes(c_top):
 */
    __pyx_v_c_current = __pyx_v_c_current->parent;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":176
 *         c_current = c_current.parent
 *     # see whether we have children to deallocate
 *     if canDeallocateChildNodes(c_top):             # <<<<<<<<<<<<<<
 *         return c_top
 *     else:
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree_canDeallocateChildNodes(__pyx_v_c_top);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":177
 *     # see whether we have children to deallocate
 *     if canDeallocateChildNodes(c_top):
 *         return c_top             # <<<<<<<<<<<<<<
 *     else:
 *         return NULL
 */
    __pyx_r = __pyx_v_c_top;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":179
 *         return c_top
 *     else:
 *         return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef int canDeallocateChildNodes(xmlNode* c_parent):
 */
    __pyx_r = NULL;
    goto __pyx_L0;
  }
  __pyx_L8:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":181
 *         return NULL
 * 
 * cdef int canDeallocateChildNodes(xmlNode* c_parent):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     c_node = c_parent.children
 */

static  int __pyx_f_4lxml_5etree_canDeallocateChildNodes(xmlNode *__pyx_v_c_parent) {
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("canDeallocateChildNodes");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":183
 * cdef int canDeallocateChildNodes(xmlNode* c_parent):
 *     cdef xmlNode* c_node
 *     c_node = c_parent.children             # <<<<<<<<<<<<<<
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_parent, c_node, 1)
 *     if c_node._private is not NULL:
 */
  __pyx_v_c_node = __pyx_v_c_parent->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":184
 *     cdef xmlNode* c_node
 *     c_node = c_parent.children
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_parent, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node._private is not NULL:
 *         return 0
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_parent, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":185
 *     c_node = c_parent.children
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_parent, c_node, 1)
 *     if c_node._private is not NULL:             # <<<<<<<<<<<<<<
 *         return 0
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node->_private != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":186
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_parent, c_node, 1)
 *     if c_node._private is not NULL:
 *         return 0             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *     return 1
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":187
 *     if c_node._private is not NULL:
 *         return 0
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":188
 *         return 0
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":193
 * # fix _Document references and namespaces when a node changes documents
 * 
 * cdef void _copyParentNamespaces(xmlNode* c_from_node, xmlNode* c_to_node) nogil:             # <<<<<<<<<<<<<<
 *     u"""Copy the namespaces of all ancestors of c_from_node to c_to_node.
 *     """
 */

static  void __pyx_f_4lxml_5etree__copyParentNamespaces(xmlNode *__pyx_v_c_from_node, xmlNode *__pyx_v_c_to_node) {
  xmlNode *__pyx_v_c_parent;
  xmlNs *__pyx_v_c_new_ns;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":200
 *     cdef xmlNs* c_new_ns
 *     cdef int prefix_known
 *     c_parent = c_from_node.parent             # <<<<<<<<<<<<<<
 *     while c_parent is not NULL and (tree._isElementOrXInclude(c_parent) or
 *                                     c_parent.type == tree.XML_DOCUMENT_NODE):
 */
  __pyx_v_c_parent = __pyx_v_c_from_node->parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":201
 *     cdef int prefix_known
 *     c_parent = c_from_node.parent
 *     while c_parent is not NULL and (tree._isElementOrXInclude(c_parent) or             # <<<<<<<<<<<<<<
 *                                     c_parent.type == tree.XML_DOCUMENT_NODE):
 *         c_new_ns = c_parent.nsDef
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_parent != NULL);
    if (__pyx_t_1) {
      __pyx_t_2 = _isElementOrXInclude(__pyx_v_c_parent);
      if (!__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":202
 *     c_parent = c_from_node.parent
 *     while c_parent is not NULL and (tree._isElementOrXInclude(c_parent) or
 *                                     c_parent.type == tree.XML_DOCUMENT_NODE):             # <<<<<<<<<<<<<<
 *         c_new_ns = c_parent.nsDef
 *         while c_new_ns is not NULL:
 */
        __pyx_t_3 = (__pyx_v_c_parent->type == XML_DOCUMENT_NODE);
        __pyx_t_4 = __pyx_t_3;
      } else {
        __pyx_t_4 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_4;
    } else {
      __pyx_t_2 = __pyx_t_1;
    }
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":203
 *     while c_parent is not NULL and (tree._isElementOrXInclude(c_parent) or
 *                                     c_parent.type == tree.XML_DOCUMENT_NODE):
 *         c_new_ns = c_parent.nsDef             # <<<<<<<<<<<<<<
 *         while c_new_ns is not NULL:
 *             # libxml2 will check if the prefix is already defined
 */
    __pyx_v_c_new_ns = __pyx_v_c_parent->nsDef;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":204
 *                                     c_parent.type == tree.XML_DOCUMENT_NODE):
 *         c_new_ns = c_parent.nsDef
 *         while c_new_ns is not NULL:             # <<<<<<<<<<<<<<
 *             # libxml2 will check if the prefix is already defined
 *             tree.xmlNewNs(c_to_node, c_new_ns.href, c_new_ns.prefix)
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_c_new_ns != NULL);
      if (!__pyx_t_2) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":206
 *         while c_new_ns is not NULL:
 *             # libxml2 will check if the prefix is already defined
 *             tree.xmlNewNs(c_to_node, c_new_ns.href, c_new_ns.prefix)             # <<<<<<<<<<<<<<
 *             c_new_ns = c_new_ns.next
 *         c_parent = c_parent.parent
 */
      xmlNewNs(__pyx_v_c_to_node, __pyx_v_c_new_ns->href, __pyx_v_c_new_ns->prefix);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":207
 *             # libxml2 will check if the prefix is already defined
 *             tree.xmlNewNs(c_to_node, c_new_ns.href, c_new_ns.prefix)
 *             c_new_ns = c_new_ns.next             # <<<<<<<<<<<<<<
 *         c_parent = c_parent.parent
 * 
 */
      __pyx_v_c_new_ns = __pyx_v_c_new_ns->next;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":208
 *             tree.xmlNewNs(c_to_node, c_new_ns.href, c_new_ns.prefix)
 *             c_new_ns = c_new_ns.next
 *         c_parent = c_parent.parent             # <<<<<<<<<<<<<<
 * 
 * ctypedef struct _nscache:
 */
    __pyx_v_c_parent = __pyx_v_c_parent->parent;
  }

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":216
 *     size_t last
 * 
 * cdef int _growNsCache(_nscache* c_ns_cache) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNs** c_ns_ptr
 *     if c_ns_cache.size == 0:
 */

static  int __pyx_f_4lxml_5etree__growNsCache(__pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache) {
  xmlNs **__pyx_v_c_ns_ptr;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_growNsCache");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":218
 * cdef int _growNsCache(_nscache* c_ns_cache) except -1:
 *     cdef xmlNs** c_ns_ptr
 *     if c_ns_cache.size == 0:             # <<<<<<<<<<<<<<
 *         c_ns_cache.size = 20
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_ns_cache->size == 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":219
 *     cdef xmlNs** c_ns_ptr
 *     if c_ns_cache.size == 0:
 *         c_ns_cache.size = 20             # <<<<<<<<<<<<<<
 *     else:
 *         c_ns_cache.size *= 2
 */
    __pyx_v_c_ns_cache->size = 20;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":221
 *         c_ns_cache.size = 20
 *     else:
 *         c_ns_cache.size *= 2             # <<<<<<<<<<<<<<
 *     c_ns_ptr = <xmlNs**> cstd.realloc(
 *         c_ns_cache.new, c_ns_cache.size * sizeof(xmlNs*))
 */
    __pyx_v_c_ns_cache->size *= 2;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":223
 *         c_ns_cache.size *= 2
 *     c_ns_ptr = <xmlNs**> cstd.realloc(
 *         c_ns_cache.new, c_ns_cache.size * sizeof(xmlNs*))             # <<<<<<<<<<<<<<
 *     if c_ns_ptr is not NULL:
 *         c_ns_cache.new = c_ns_ptr
 */
  __pyx_v_c_ns_ptr = ((xmlNs **)realloc(__pyx_v_c_ns_cache->new, (__pyx_v_c_ns_cache->size * (sizeof(xmlNs *)))));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":224
 *     c_ns_ptr = <xmlNs**> cstd.realloc(
 *         c_ns_cache.new, c_ns_cache.size * sizeof(xmlNs*))
 *     if c_ns_ptr is not NULL:             # <<<<<<<<<<<<<<
 *         c_ns_cache.new = c_ns_ptr
 *         c_ns_ptr = <xmlNs**> cstd.realloc(
 */
  __pyx_t_1 = (__pyx_v_c_ns_ptr != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":225
 *         c_ns_cache.new, c_ns_cache.size * sizeof(xmlNs*))
 *     if c_ns_ptr is not NULL:
 *         c_ns_cache.new = c_ns_ptr             # <<<<<<<<<<<<<<
 *         c_ns_ptr = <xmlNs**> cstd.realloc(
 *             c_ns_cache.old, c_ns_cache.size * sizeof(xmlNs*))
 */
    __pyx_v_c_ns_cache->new = __pyx_v_c_ns_ptr;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":227
 *         c_ns_cache.new = c_ns_ptr
 *         c_ns_ptr = <xmlNs**> cstd.realloc(
 *             c_ns_cache.old, c_ns_cache.size * sizeof(xmlNs*))             # <<<<<<<<<<<<<<
 *     if c_ns_ptr is not NULL:
 *         c_ns_cache.old = c_ns_ptr
 */
    __pyx_v_c_ns_ptr = ((xmlNs **)realloc(__pyx_v_c_ns_cache->old, (__pyx_v_c_ns_cache->size * (sizeof(xmlNs *)))));
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":228
 *         c_ns_ptr = <xmlNs**> cstd.realloc(
 *             c_ns_cache.old, c_ns_cache.size * sizeof(xmlNs*))
 *     if c_ns_ptr is not NULL:             # <<<<<<<<<<<<<<
 *         c_ns_cache.old = c_ns_ptr
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_ns_ptr != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":229
 *             c_ns_cache.old, c_ns_cache.size * sizeof(xmlNs*))
 *     if c_ns_ptr is not NULL:
 *         c_ns_cache.old = c_ns_ptr             # <<<<<<<<<<<<<<
 *     else:
 *         cstd.free(c_ns_cache.new)
 */
    __pyx_v_c_ns_cache->old = __pyx_v_c_ns_ptr;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":231
 *         c_ns_cache.old = c_ns_ptr
 *     else:
 *         cstd.free(c_ns_cache.new)             # <<<<<<<<<<<<<<
 *         cstd.free(c_ns_cache.old)
 *         python.PyErr_NoMemory()
 */
    free(__pyx_v_c_ns_cache->new);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":232
 *     else:
 *         cstd.free(c_ns_cache.new)
 *         cstd.free(c_ns_cache.old)             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *         return -1
 */
    free(__pyx_v_c_ns_cache->old);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":233
 *         cstd.free(c_ns_cache.new)
 *         cstd.free(c_ns_cache.old)
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         return -1
 *     return 0
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":234
 *         cstd.free(c_ns_cache.old)
 *         python.PyErr_NoMemory()
 *         return -1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = -1;
    goto __pyx_L0;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":235
 *         python.PyErr_NoMemory()
 *         return -1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _appendToNsCache(_nscache* c_ns_cache,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._growNsCache");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":237
 *     return 0
 * 
 * cdef inline int _appendToNsCache(_nscache* c_ns_cache,             # <<<<<<<<<<<<<<
 *                                  xmlNs* c_old_ns, xmlNs* c_new_ns) except -1:
 *     if c_ns_cache.last >= c_ns_cache.size:
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache, xmlNs *__pyx_v_c_old_ns, xmlNs *__pyx_v_c_new_ns) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_appendToNsCache");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":239
 * cdef inline int _appendToNsCache(_nscache* c_ns_cache,
 *                                  xmlNs* c_old_ns, xmlNs* c_new_ns) except -1:
 *     if c_ns_cache.last >= c_ns_cache.size:             # <<<<<<<<<<<<<<
 *         _growNsCache(c_ns_cache)
 *     c_ns_cache.old[c_ns_cache.last] = c_old_ns
 */
  __pyx_t_1 = (__pyx_v_c_ns_cache->last >= __pyx_v_c_ns_cache->size);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":240
 *                                  xmlNs* c_old_ns, xmlNs* c_new_ns) except -1:
 *     if c_ns_cache.last >= c_ns_cache.size:
 *         _growNsCache(c_ns_cache)             # <<<<<<<<<<<<<<
 *     c_ns_cache.old[c_ns_cache.last] = c_old_ns
 *     c_ns_cache.new[c_ns_cache.last] = c_new_ns
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__growNsCache(__pyx_v_c_ns_cache); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":241
 *     if c_ns_cache.last >= c_ns_cache.size:
 *         _growNsCache(c_ns_cache)
 *     c_ns_cache.old[c_ns_cache.last] = c_old_ns             # <<<<<<<<<<<<<<
 *     c_ns_cache.new[c_ns_cache.last] = c_new_ns
 *     c_ns_cache.last += 1
 */
  (__pyx_v_c_ns_cache->old[__pyx_v_c_ns_cache->last]) = __pyx_v_c_old_ns;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":242
 *         _growNsCache(c_ns_cache)
 *     c_ns_cache.old[c_ns_cache.last] = c_old_ns
 *     c_ns_cache.new[c_ns_cache.last] = c_new_ns             # <<<<<<<<<<<<<<
 *     c_ns_cache.last += 1
 * 
 */
  (__pyx_v_c_ns_cache->new[__pyx_v_c_ns_cache->last]) = __pyx_v_c_new_ns;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":243
 *     c_ns_cache.old[c_ns_cache.last] = c_old_ns
 *     c_ns_cache.new[c_ns_cache.last] = c_new_ns
 *     c_ns_cache.last += 1             # <<<<<<<<<<<<<<
 * 
 * cdef int _stripRedundantNamespaceDeclarations(
 */
  __pyx_v_c_ns_cache->last += 1;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._appendToNsCache");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":245
 *     c_ns_cache.last += 1
 * 
 * cdef int _stripRedundantNamespaceDeclarations(             # <<<<<<<<<<<<<<
 *     xmlNode* c_element, _nscache* c_ns_cache, xmlNs** c_del_ns_list) except -1:
 *     u"""Removes namespace declarations from an element that are already
 */

static  int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *__pyx_v_c_element, __pyx_t_4lxml_5etree__nscache *__pyx_v_c_ns_cache, xmlNs **__pyx_v_c_del_ns_list) {
  xmlNs *__pyx_v_c_ns;
  xmlNs *__pyx_v_c_ns_next;
  xmlNs **__pyx_v_c_nsdef;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_stripRedundantNamespaceDeclarations");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":255
 *     cdef xmlNs** c_nsdef
 *     # use a xmlNs** to handle assignments to "c_element.nsDef" correctly
 *     c_nsdef = &c_element.nsDef             # <<<<<<<<<<<<<<
 *     while c_nsdef[0] is not NULL:
 *         c_ns = tree.xmlSearchNsByHref(
 */
  __pyx_v_c_nsdef = (&__pyx_v_c_element->nsDef);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":256
 *     # use a xmlNs** to handle assignments to "c_element.nsDef" correctly
 *     c_nsdef = &c_element.nsDef
 *     while c_nsdef[0] is not NULL:             # <<<<<<<<<<<<<<
 *         c_ns = tree.xmlSearchNsByHref(
 *             c_element.doc, c_element.parent, c_nsdef[0].href)
 */
  while (1) {
    __pyx_t_1 = ((__pyx_v_c_nsdef[0]) != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":258
 *     while c_nsdef[0] is not NULL:
 *         c_ns = tree.xmlSearchNsByHref(
 *             c_element.doc, c_element.parent, c_nsdef[0].href)             # <<<<<<<<<<<<<<
 *         if c_ns is NULL:
 *             # new namespace href => keep and cache the ns declaration
 */
    __pyx_v_c_ns = xmlSearchNsByHref(__pyx_v_c_element->doc, __pyx_v_c_element->parent, (__pyx_v_c_nsdef[0])->href);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":259
 *         c_ns = tree.xmlSearchNsByHref(
 *             c_element.doc, c_element.parent, c_nsdef[0].href)
 *         if c_ns is NULL:             # <<<<<<<<<<<<<<
 *             # new namespace href => keep and cache the ns declaration
 *             _appendToNsCache(c_ns_cache, c_nsdef[0], c_nsdef[0])
 */
    __pyx_t_1 = (__pyx_v_c_ns == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":261
 *         if c_ns is NULL:
 *             # new namespace href => keep and cache the ns declaration
 *             _appendToNsCache(c_ns_cache, c_nsdef[0], c_nsdef[0])             # <<<<<<<<<<<<<<
 *             c_nsdef = &c_nsdef[0].next
 *         else:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, (__pyx_v_c_nsdef[0]), (__pyx_v_c_nsdef[0])); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":262
 *             # new namespace href => keep and cache the ns declaration
 *             _appendToNsCache(c_ns_cache, c_nsdef[0], c_nsdef[0])
 *             c_nsdef = &c_nsdef[0].next             # <<<<<<<<<<<<<<
 *         else:
 *             # known namespace href => strip the ns
 */
      __pyx_v_c_nsdef = (&(__pyx_v_c_nsdef[0])->next);
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":266
 *             # known namespace href => strip the ns
 *             if c_ns is tree.xmlSearchNs(c_element.doc, c_element.parent,
 *                                         c_ns.prefix):             # <<<<<<<<<<<<<<
 *                 # prefix is not shadowed by parents => ns is reusable
 *                 _appendToNsCache(c_ns_cache, c_nsdef[0], c_ns)
 */
      __pyx_t_1 = (__pyx_v_c_ns == xmlSearchNs(__pyx_v_c_element->doc, __pyx_v_c_element->parent, __pyx_v_c_ns->prefix));
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":268
 *                                         c_ns.prefix):
 *                 # prefix is not shadowed by parents => ns is reusable
 *                 _appendToNsCache(c_ns_cache, c_nsdef[0], c_ns)             # <<<<<<<<<<<<<<
 *             # cut out c_nsdef.next and prepend it to garbage chain
 *             c_ns_next = c_nsdef[0].next
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, (__pyx_v_c_nsdef[0]), __pyx_v_c_ns); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":270
 *                 _appendToNsCache(c_ns_cache, c_nsdef[0], c_ns)
 *             # cut out c_nsdef.next and prepend it to garbage chain
 *             c_ns_next = c_nsdef[0].next             # <<<<<<<<<<<<<<
 *             c_nsdef[0].next = c_del_ns_list[0]
 *             c_del_ns_list[0] = c_nsdef[0]
 */
      __pyx_v_c_ns_next = (__pyx_v_c_nsdef[0])->next;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":271
 *             # cut out c_nsdef.next and prepend it to garbage chain
 *             c_ns_next = c_nsdef[0].next
 *             c_nsdef[0].next = c_del_ns_list[0]             # <<<<<<<<<<<<<<
 *             c_del_ns_list[0] = c_nsdef[0]
 *             c_nsdef[0] = c_ns_next
 */
      (__pyx_v_c_nsdef[0])->next = (__pyx_v_c_del_ns_list[0]);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":272
 *             c_ns_next = c_nsdef[0].next
 *             c_nsdef[0].next = c_del_ns_list[0]
 *             c_del_ns_list[0] = c_nsdef[0]             # <<<<<<<<<<<<<<
 *             c_nsdef[0] = c_ns_next
 *     return 0
 */
      (__pyx_v_c_del_ns_list[0]) = (__pyx_v_c_nsdef[0]);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":273
 *             c_nsdef[0].next = c_del_ns_list[0]
 *             c_del_ns_list[0] = c_nsdef[0]
 *             c_nsdef[0] = c_ns_next             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      (__pyx_v_c_nsdef[0]) = __pyx_v_c_ns_next;
    }
    __pyx_L5:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":274
 *             c_del_ns_list[0] = c_nsdef[0]
 *             c_nsdef[0] = c_ns_next
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int moveNodeToDocument(_Document doc, xmlDoc* c_source_doc,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._stripRedundantNamespaceDeclarations");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":276
 *     return 0
 * 
 * cdef int moveNodeToDocument(_Document doc, xmlDoc* c_source_doc,             # <<<<<<<<<<<<<<
 *                             xmlNode* c_element) except -1:
 *     u"""Fix the xmlNs pointers of a node and its subtree that were moved.
 */

static  int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_doc, xmlDoc *__pyx_v_c_source_doc, xmlNode *__pyx_v_c_element) {
  xmlNode *__pyx_v_c_start_node;
  xmlNode *__pyx_v_c_node;
  __pyx_t_4lxml_5etree__nscache __pyx_v_c_ns_cache;
  xmlNs *__pyx_v_c_ns;
  xmlNs *__pyx_v_c_del_ns_list;
  size_t __pyx_v_i;
  size_t __pyx_v_proxy_count;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  size_t __pyx_t_3;
  xmlNs *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("moveNodeToDocument");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":315
 *     cdef xmlNs* c_nsdef
 *     cdef xmlNs* c_del_ns_list
 *     cdef size_t i, proxy_count = 0             # <<<<<<<<<<<<<<
 * 
 *     if not tree._isElementOrXInclude(c_element):
 */
  __pyx_v_proxy_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":317
 *     cdef size_t i, proxy_count = 0
 * 
 *     if not tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = (!_isElementOrXInclude(__pyx_v_c_element));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":318
 * 
 *     if not tree._isElementOrXInclude(c_element):
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     c_start_node = c_element
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":320
 *         return 0
 * 
 *     c_start_node = c_element             # <<<<<<<<<<<<<<
 *     c_del_ns_list = NULL
 * 
 */
  __pyx_v_c_start_node = __pyx_v_c_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":321
 * 
 *     c_start_node = c_element
 *     c_del_ns_list = NULL             # <<<<<<<<<<<<<<
 * 
 *     c_ns_cache.new = NULL
 */
  __pyx_v_c_del_ns_list = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":323
 *     c_del_ns_list = NULL
 * 
 *     c_ns_cache.new = NULL             # <<<<<<<<<<<<<<
 *     c_ns_cache.old = NULL
 *     c_ns_cache.size = 0
 */
  __pyx_v_c_ns_cache.new = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":324
 * 
 *     c_ns_cache.new = NULL
 *     c_ns_cache.old = NULL             # <<<<<<<<<<<<<<
 *     c_ns_cache.size = 0
 *     c_ns_cache.last = 0
 */
  __pyx_v_c_ns_cache.old = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":325
 *     c_ns_cache.new = NULL
 *     c_ns_cache.old = NULL
 *     c_ns_cache.size = 0             # <<<<<<<<<<<<<<
 *     c_ns_cache.last = 0
 * 
 */
  __pyx_v_c_ns_cache.size = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":326
 *     c_ns_cache.old = NULL
 *     c_ns_cache.size = 0
 *     c_ns_cache.last = 0             # <<<<<<<<<<<<<<
 * 
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
 */
  __pyx_v_c_ns_cache.last = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":328
 *     c_ns_cache.last = 0
 * 
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)             # <<<<<<<<<<<<<<
 *     if tree._isElementOrXInclude(c_element):
 *         if c_element._private is not NULL:
 */
  BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":329
 * 
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
 *     if tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
 *         if c_element._private is not NULL:
 *             proxy_count += 1
 */
  __pyx_t_1 = _isElementOrXInclude(__pyx_v_c_element);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":330
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
 *     if tree._isElementOrXInclude(c_element):
 *         if c_element._private is not NULL:             # <<<<<<<<<<<<<<
 *             proxy_count += 1
 * 
 */
    __pyx_t_1 = (__pyx_v_c_element->_private != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":331
 *     if tree._isElementOrXInclude(c_element):
 *         if c_element._private is not NULL:
 *             proxy_count += 1             # <<<<<<<<<<<<<<
 * 
 *         # 1) cut out namespaces defined here that are already known by
 */
      __pyx_v_proxy_count += 1;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":335
 *         # 1) cut out namespaces defined here that are already known by
 *         #    the ancestors
 *         if c_element.nsDef is not NULL:             # <<<<<<<<<<<<<<
 *             _stripRedundantNamespaceDeclarations(
 *                 c_element, &c_ns_cache, &c_del_ns_list)
 */
    __pyx_t_1 = (__pyx_v_c_element->nsDef != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":337
 *         if c_element.nsDef is not NULL:
 *             _stripRedundantNamespaceDeclarations(
 *                 c_element, &c_ns_cache, &c_del_ns_list)             # <<<<<<<<<<<<<<
 * 
 *         # 2) make sure the namespaces of an element and its attributes
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(__pyx_v_c_element, (&__pyx_v_c_ns_cache), (&__pyx_v_c_del_ns_list)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":341
 *         # 2) make sure the namespaces of an element and its attributes
 *         #    are declared in this document (i.e. on the node or its parents)
 *         c_node = c_element             # <<<<<<<<<<<<<<
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:
 */
    __pyx_v_c_node = __pyx_v_c_element;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":342
 *         #    are declared in this document (i.e. on the node or its parents)
 *         c_node = c_element
 *         while c_node is not NULL:             # <<<<<<<<<<<<<<
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_cache.last:
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_node != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":343
 *         c_node = c_element
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < c_ns_cache.last:
 *                     if c_node.ns is c_ns_cache.old[i]:
 */
      __pyx_t_1 = (__pyx_v_c_node->ns != NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":344
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_cache.last:             # <<<<<<<<<<<<<<
 *                     if c_node.ns is c_ns_cache.old[i]:
 *                         c_node.ns = c_ns_cache.new[i]
 */
        __pyx_t_3 = __pyx_v_c_ns_cache.last;
        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":345
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_cache.last:
 *                     if c_node.ns is c_ns_cache.old[i]:             # <<<<<<<<<<<<<<
 *                         c_node.ns = c_ns_cache.new[i]
 *                         break
 */
          __pyx_t_1 = (__pyx_v_c_node->ns == (__pyx_v_c_ns_cache.old[__pyx_v_i]));
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":346
 *                 for i from 0 <= i < c_ns_cache.last:
 *                     if c_node.ns is c_ns_cache.old[i]:
 *                         c_node.ns = c_ns_cache.new[i]             # <<<<<<<<<<<<<<
 *                         break
 *                 else:
 */
            __pyx_v_c_node->ns = (__pyx_v_c_ns_cache.new[__pyx_v_i]);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":347
 *                     if c_node.ns is c_ns_cache.old[i]:
 *                         c_node.ns = c_ns_cache.new[i]
 *                         break             # <<<<<<<<<<<<<<
 *                 else:
 *                     # not in cache => find a replacement from this document
 */
            goto __pyx_L11_break;
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":351
 *                     # not in cache => find a replacement from this document
 *                     c_ns = doc._findOrBuildNodeNs(
 *                         c_start_node, c_node.ns.href, c_node.ns.prefix)             # <<<<<<<<<<<<<<
 *                     _appendToNsCache(&c_ns_cache, c_node.ns, c_ns)
 *                     c_node.ns = c_ns
 */
          __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_node->ns->href, __pyx_v_c_node->ns->prefix); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_v_c_ns = __pyx_t_4;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":352
 *                     c_ns = doc._findOrBuildNodeNs(
 *                         c_start_node, c_node.ns.href, c_node.ns.prefix)
 *                     _appendToNsCache(&c_ns_cache, c_node.ns, c_ns)             # <<<<<<<<<<<<<<
 *                     c_node.ns = c_ns
 * 
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree__appendToNsCache((&__pyx_v_c_ns_cache), __pyx_v_c_node->ns, __pyx_v_c_ns); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":353
 *                         c_start_node, c_node.ns.href, c_node.ns.prefix)
 *                     _appendToNsCache(&c_ns_cache, c_node.ns, c_ns)
 *                     c_node.ns = c_ns             # <<<<<<<<<<<<<<
 * 
 *             if c_node is c_element:
 */
          __pyx_v_c_node->ns = __pyx_v_c_ns;
        }
        __pyx_L11_break:;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":355
 *                     c_node.ns = c_ns
 * 
 *             if c_node is c_element:             # <<<<<<<<<<<<<<
 *                 # after the element, continue with its attributes
 *                 c_node = <xmlNode*>c_element.properties
 */
      __pyx_t_1 = (__pyx_v_c_node == __pyx_v_c_element);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":357
 *             if c_node is c_element:
 *                 # after the element, continue with its attributes
 *                 c_node = <xmlNode*>c_element.properties             # <<<<<<<<<<<<<<
 *             else:
 *                 c_node = c_node.next
 */
        __pyx_v_c_node = ((xmlNode *)__pyx_v_c_element->properties);
        goto __pyx_L13;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":359
 *                 c_node = <xmlNode*>c_element.properties
 *             else:
 *                 c_node = c_node.next             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_FROM(c_element)
 * 
 */
        __pyx_v_c_node = __pyx_v_c_node->next;
      }
      __pyx_L13:;
    }
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":360
 *             else:
 *                 c_node = c_node.next
 *     tree.END_FOR_EACH_FROM(c_element)             # <<<<<<<<<<<<<<
 * 
 *     # free now unused namespace declarations
 */
  END_FOR_EACH_FROM(__pyx_v_c_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":363
 * 
 *     # free now unused namespace declarations
 *     if c_del_ns_list is not NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlFreeNsList(c_del_ns_list)
 * 
 */
  __pyx_t_1 = (__pyx_v_c_del_ns_list != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":364
 *     # free now unused namespace declarations
 *     if c_del_ns_list is not NULL:
 *         tree.xmlFreeNsList(c_del_ns_list)             # <<<<<<<<<<<<<<
 * 
 *     # cleanup
 */
    xmlFreeNsList(__pyx_v_c_del_ns_list);
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":367
 * 
 *     # cleanup
 *     if c_ns_cache.new is not NULL:             # <<<<<<<<<<<<<<
 *         cstd.free(c_ns_cache.new)
 *     if c_ns_cache.old is not NULL:
 */
  __pyx_t_1 = (__pyx_v_c_ns_cache.new != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":368
 *     # cleanup
 *     if c_ns_cache.new is not NULL:
 *         cstd.free(c_ns_cache.new)             # <<<<<<<<<<<<<<
 *     if c_ns_cache.old is not NULL:
 *         cstd.free(c_ns_cache.old)
 */
    free(__pyx_v_c_ns_cache.new);
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":369
 *     if c_ns_cache.new is not NULL:
 *         cstd.free(c_ns_cache.new)
 *     if c_ns_cache.old is not NULL:             # <<<<<<<<<<<<<<
 *         cstd.free(c_ns_cache.old)
 * 
 */
  __pyx_t_1 = (__pyx_v_c_ns_cache.old != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":370
 *         cstd.free(c_ns_cache.new)
 *     if c_ns_cache.old is not NULL:
 *         cstd.free(c_ns_cache.old)             # <<<<<<<<<<<<<<
 * 
 *     # 3) fix the names in the tree if we moved it from a different thread
 */
    free(__pyx_v_c_ns_cache.old);
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":373
 * 
 *     # 3) fix the names in the tree if we moved it from a different thread
 *     if doc._c_doc.dict is not c_source_doc.dict:             # <<<<<<<<<<<<<<
 *         fixThreadDictNames(c_start_node, c_source_doc.dict, doc._c_doc.dict)
 * 
 */
  __pyx_t_1 = (__pyx_v_doc->_c_doc->dict != __pyx_v_c_source_doc->dict);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":374
 *     # 3) fix the names in the tree if we moved it from a different thread
 *     if doc._c_doc.dict is not c_source_doc.dict:
 *         fixThreadDictNames(c_start_node, c_source_doc.dict, doc._c_doc.dict)             # <<<<<<<<<<<<<<
 * 
 *     # 4) fix _Document references
 */
    __pyx_f_4lxml_5etree_fixThreadDictNames(__pyx_v_c_start_node, __pyx_v_c_source_doc->dict, __pyx_v_doc->_c_doc->dict);
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":378
 *     # 4) fix _Document references
 *     #    (and potentially deallocate the source document)
 *     if proxy_count > 0:             # <<<<<<<<<<<<<<
 *         if proxy_count == 1 and c_start_node._private is not NULL:
 *             _updateProxyDocument(c_start_node, doc)
 */
  __pyx_t_1 = (__pyx_v_proxy_count > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":379
 *     #    (and potentially deallocate the source document)
 *     if proxy_count > 0:
 *         if proxy_count == 1 and c_start_node._private is not NULL:             # <<<<<<<<<<<<<<
 *             _updateProxyDocument(c_start_node, doc)
 *         else:
 */
    __pyx_t_1 = (__pyx_v_proxy_count == 1);
    if (__pyx_t_1) {
      __pyx_t_5 = (__pyx_v_c_start_node->_private != NULL);
      __pyx_t_6 = __pyx_t_5;
    } else {
      __pyx_t_6 = __pyx_t_1;
    }
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":380
 *     if proxy_count > 0:
 *         if proxy_count == 1 and c_start_node._private is not NULL:
 *             _updateProxyDocument(c_start_node, doc)             # <<<<<<<<<<<<<<
 *         else:
 *             fixElementDocument(c_start_node, doc, proxy_count)
 */
      __pyx_f_4lxml_5etree__updateProxyDocument(__pyx_v_c_start_node, __pyx_v_doc);
      goto __pyx_L19;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":382
 *             _updateProxyDocument(c_start_node, doc)
 *         else:
 *             fixElementDocument(c_start_node, doc, proxy_count)             # <<<<<<<<<<<<<<
 * 
 *     return 0
 */
      __pyx_f_4lxml_5etree_fixElementDocument(__pyx_v_c_start_node, __pyx_v_doc, __pyx_v_proxy_count);
    }
    __pyx_L19:;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":384
 *             fixElementDocument(c_start_node, doc, proxy_count)
 * 
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.moveNodeToDocument");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":387
 * 
 * 
 * cdef void fixElementDocument(xmlNode* c_element, _Document doc,             # <<<<<<<<<<<<<<
 *                              size_t proxy_count):
 *     cdef xmlNode* c_node = c_element
 */

static  void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element, struct LxmlDocument *__pyx_v_doc, size_t __pyx_v_proxy_count) {
  xmlNode *__pyx_v_c_node;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("fixElementDocument");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":389
 * cdef void fixElementDocument(xmlNode* c_element, _Document doc,
 *                              size_t proxy_count):
 *     cdef xmlNode* c_node = c_element             # <<<<<<<<<<<<<<
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node._private is not NULL:
 */
  __pyx_v_c_node = __pyx_v_c_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":390
 *                              size_t proxy_count):
 *     cdef xmlNode* c_node = c_element
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node._private is not NULL:
 *         _updateProxyDocument(c_node, doc)
 */
  BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":391
 *     cdef xmlNode* c_node = c_element
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node._private is not NULL:             # <<<<<<<<<<<<<<
 *         _updateProxyDocument(c_node, doc)
 *         proxy_count -= 1
 */
  __pyx_t_1 = (__pyx_v_c_node->_private != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":392
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node._private is not NULL:
 *         _updateProxyDocument(c_node, doc)             # <<<<<<<<<<<<<<
 *         proxy_count -= 1
 *         if proxy_count == 0:
 */
    __pyx_f_4lxml_5etree__updateProxyDocument(__pyx_v_c_node, __pyx_v_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":393
 *     if c_node._private is not NULL:
 *         _updateProxyDocument(c_node, doc)
 *         proxy_count -= 1             # <<<<<<<<<<<<<<
 *         if proxy_count == 0:
 *             return
 */
    __pyx_v_proxy_count -= 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":394
 *         _updateProxyDocument(c_node, doc)
 *         proxy_count -= 1
 *         if proxy_count == 0:             # <<<<<<<<<<<<<<
 *             return
 *     tree.END_FOR_EACH_FROM(c_node)
 */
    __pyx_t_1 = (__pyx_v_proxy_count == 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":395
 *         proxy_count -= 1
 *         if proxy_count == 0:
 *             return             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_FROM(c_node)
 * 
 */
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":396
 *         if proxy_count == 0:
 *             return
 *     tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef void fixThreadDictNames(xmlNode* c_element,
 */
  END_FOR_EACH_FROM(__pyx_v_c_node);

  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":398
 *     tree.END_FOR_EACH_FROM(c_node)
 * 
 * cdef void fixThreadDictNames(xmlNode* c_element,             # <<<<<<<<<<<<<<
 *                              tree.xmlDict* c_src_dict,
 *                              tree.xmlDict* c_dict) nogil:
 */

static  void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":405
 *     # this should only be called when the element is based on a
 *     # different libxml2 tag name dictionary
 *     if c_element.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
 *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:
 *         # may define "xml" namespace
 */
  __pyx_t_1 = (__pyx_v_c_element->type == XML_DOCUMENT_NODE);
  if (!__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":406
 *     # different libxml2 tag name dictionary
 *     if c_element.type == tree.XML_DOCUMENT_NODE or \
 *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
 *         # may define "xml" namespace
 *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
 */
    __pyx_t_2 = (__pyx_v_c_element->type == XML_HTML_DOCUMENT_NODE);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":408
 *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:
 *         # may define "xml" namespace
 *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *         c_element = c_element.children
 *         while c_element is not NULL:
 */
    __pyx_f_4lxml_5etree_fixThreadDictNsForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":409
 *         # may define "xml" namespace
 *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
 *         c_element = c_element.children             # <<<<<<<<<<<<<<
 *         while c_element is not NULL:
 *             if tree._isElementOrXInclude(c_element):
 */
    __pyx_v_c_element = __pyx_v_c_element->children;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":410
 *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
 *         c_element = c_element.children
 *         while c_element is not NULL:             # <<<<<<<<<<<<<<
 *             if tree._isElementOrXInclude(c_element):
 *                 fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 */
    while (1) {
      __pyx_t_3 = (__pyx_v_c_element != NULL);
      if (!__pyx_t_3) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":411
 *         c_element = c_element.children
 *         while c_element is not NULL:
 *             if tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
 *                 fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 *             c_element = c_element.next
 */
      __pyx_t_3 = _isElementOrXInclude(__pyx_v_c_element);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":412
 *         while c_element is not NULL:
 *             if tree._isElementOrXInclude(c_element):
 *                 fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *             c_element = c_element.next
 *     elif tree._isElementOrXInclude(c_element):
 */
        __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":413
 *             if tree._isElementOrXInclude(c_element):
 *                 fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 *             c_element = c_element.next             # <<<<<<<<<<<<<<
 *     elif tree._isElementOrXInclude(c_element):
 *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 */
      __pyx_v_c_element = __pyx_v_c_element->next;
    }
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":414
 *                 fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 *             c_element = c_element.next
 *     elif tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
 *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 * 
 */
  __pyx_t_3 = _isElementOrXInclude(__pyx_v_c_element);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":415
 *             c_element = c_element.next
 *     elif tree._isElementOrXInclude(c_element):
 *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 * 
 * cdef void fixThreadDictNamesForNode(xmlNode* c_element,
 */
    __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
    goto __pyx_L3;
  }
  __pyx_L3:;

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":417
 *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
 * 
 * cdef void fixThreadDictNamesForNode(xmlNode* c_element,             # <<<<<<<<<<<<<<
 *                                     tree.xmlDict* c_src_dict,
 *                                     tree.xmlDict* c_dict) nogil:
 */

static  void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_element, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  xmlNode *__pyx_v_c_node;
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":420
 *                                     tree.xmlDict* c_src_dict,
 *                                     tree.xmlDict* c_dict) nogil:
 *     cdef xmlNode* c_node = c_element             # <<<<<<<<<<<<<<
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node.name is not NULL:
 */
  __pyx_v_c_node = __pyx_v_c_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":421
 *                                     tree.xmlDict* c_dict) nogil:
 *     cdef xmlNode* c_node = c_element
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node.name is not NULL:
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 */
  BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":422
 *     cdef xmlNode* c_node = c_element
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node.name is not NULL:             # <<<<<<<<<<<<<<
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_node->name != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":423
 *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
 *     if c_node.name is not NULL:
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         fixThreadDictNamesForAttributes(
 */
    __pyx_f_4lxml_5etree_fixThreadDictNameForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":424
 *     if c_node.name is not NULL:
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         fixThreadDictNamesForAttributes(
 *             c_node.properties, c_src_dict, c_dict)
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":426
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         fixThreadDictNamesForAttributes(
 *             c_node.properties, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_TEXT_NODE:
 *         # libxml2's SAX2 parser interns some indentation space
 */
    __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(__pyx_v_c_node->properties, __pyx_v_c_src_dict, __pyx_v_c_dict);
    goto __pyx_L4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":427
 *         fixThreadDictNamesForAttributes(
 *             c_node.properties, c_src_dict, c_dict)
 *     elif c_node.type == tree.XML_TEXT_NODE:             # <<<<<<<<<<<<<<
 *         # libxml2's SAX2 parser interns some indentation space
 *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_TEXT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":429
 *     elif c_node.type == tree.XML_TEXT_NODE:
 *         # libxml2's SAX2 parser interns some indentation space
 *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_FROM(c_node)
 * 
 */
    __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":430
 *         # libxml2's SAX2 parser interns some indentation space
 *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)
 *     tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void fixThreadDictNamesForAttributes(tree.xmlAttr* c_attr,
 */
  END_FOR_EACH_FROM(__pyx_v_c_node);

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":432
 *     tree.END_FOR_EACH_FROM(c_node)
 * 
 * cdef inline void fixThreadDictNamesForAttributes(tree.xmlAttr* c_attr,             # <<<<<<<<<<<<<<
 *                                                  tree.xmlDict* c_src_dict,
 *                                                  tree.xmlDict* c_dict) nogil:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(xmlAttr *__pyx_v_c_attr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_node;
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":436
 *                                                  tree.xmlDict* c_dict) nogil:
 *     cdef xmlNode* c_child
 *     cdef xmlNode* c_node = <xmlNode*>c_attr             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 */
  __pyx_v_c_node = ((xmlNode *)__pyx_v_c_attr);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":437
 *     cdef xmlNode* c_child
 *     cdef xmlNode* c_node = <xmlNode*>c_attr
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 *         # libxml2 keeps some (!) attribute values in the dict
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":438
 *     cdef xmlNode* c_node = <xmlNode*>c_attr
 *     while c_node is not NULL:
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *         # libxml2 keeps some (!) attribute values in the dict
 *         c_child = c_node.children
 */
    __pyx_f_4lxml_5etree_fixThreadDictNameForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":440
 *         fixThreadDictNameForNode(c_node, c_src_dict, c_dict)
 *         # libxml2 keeps some (!) attribute values in the dict
 *         c_child = c_node.children             # <<<<<<<<<<<<<<
 *         while c_child is not NULL:
 *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
 */
    __pyx_v_c_child = __pyx_v_c_node->children;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":441
 *         # libxml2 keeps some (!) attribute values in the dict
 *         c_child = c_node.children
 *         while c_child is not NULL:             # <<<<<<<<<<<<<<
 *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
 *             c_child = c_child.next
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":442
 *         c_child = c_node.children
 *         while c_child is not NULL:
 *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
 *             c_child = c_child.next
 *         c_node = c_node.next
 */
      __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_child, __pyx_v_c_src_dict, __pyx_v_c_dict);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":443
 *         while c_child is not NULL:
 *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
 *             c_child = c_child.next             # <<<<<<<<<<<<<<
 *         c_node = c_node.next
 * 
 */
      __pyx_v_c_child = __pyx_v_c_child->next;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":444
 *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
 *             c_child = c_child.next
 *         c_node = c_node.next             # <<<<<<<<<<<<<<
 * 
 * cdef inline void fixThreadDictNameForNode(xmlNode* c_node,
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":446
 *         c_node = c_node.next
 * 
 * cdef inline void fixThreadDictNameForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                                           tree.xmlDict* c_src_dict,
 *                                           tree.xmlDict* c_dict) nogil:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNameForNode(xmlNode *__pyx_v_c_node, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  char *__pyx_v_c_name;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":449
 *                                           tree.xmlDict* c_src_dict,
 *                                           tree.xmlDict* c_dict) nogil:
 *     cdef char* c_name = c_node.name             # <<<<<<<<<<<<<<
 *     if c_name is not NULL and \
 *            c_node.type != tree.XML_TEXT_NODE and \
 */
  __pyx_v_c_name = __pyx_v_c_node->name;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":450
 *                                           tree.xmlDict* c_dict) nogil:
 *     cdef char* c_name = c_node.name
 *     if c_name is not NULL and \             # <<<<<<<<<<<<<<
 *            c_node.type != tree.XML_TEXT_NODE and \
 *            c_node.type != tree.XML_COMMENT_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_name != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":451
 *     cdef char* c_name = c_node.name
 *     if c_name is not NULL and \
 *            c_node.type != tree.XML_TEXT_NODE and \             # <<<<<<<<<<<<<<
 *            c_node.type != tree.XML_COMMENT_NODE:
 *         if tree.xmlDictOwns(c_src_dict, c_node.name):
 */
    __pyx_t_2 = (__pyx_v_c_node->type != XML_TEXT_NODE);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":452
 *     if c_name is not NULL and \
 *            c_node.type != tree.XML_TEXT_NODE and \
 *            c_node.type != tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
 *         if tree.xmlDictOwns(c_src_dict, c_node.name):
 *             # c_name can be NULL on memory error, but we don't handle that here
 */
      __pyx_t_3 = (__pyx_v_c_node->type != XML_COMMENT_NODE);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":453
 *            c_node.type != tree.XML_TEXT_NODE and \
 *            c_node.type != tree.XML_COMMENT_NODE:
 *         if tree.xmlDictOwns(c_src_dict, c_node.name):             # <<<<<<<<<<<<<<
 *             # c_name can be NULL on memory error, but we don't handle that here
 *             c_name = tree.xmlDictLookup(c_dict, c_name, -1)
 */
    __pyx_t_5 = xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_node->name);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":455
 *         if tree.xmlDictOwns(c_src_dict, c_node.name):
 *             # c_name can be NULL on memory error, but we don't handle that here
 *             c_name = tree.xmlDictLookup(c_dict, c_name, -1)             # <<<<<<<<<<<<<<
 *             if c_name is not NULL:
 *                 c_node.name = c_name
 */
      __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_name, -1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":456
 *             # c_name can be NULL on memory error, but we don't handle that here
 *             c_name = tree.xmlDictLookup(c_dict, c_name, -1)
 *             if c_name is not NULL:             # <<<<<<<<<<<<<<
 *                 c_node.name = c_name
 * 
 */
      __pyx_t_2 = (__pyx_v_c_name != NULL);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":457
 *             c_name = tree.xmlDictLookup(c_dict, c_name, -1)
 *             if c_name is not NULL:
 *                 c_node.name = c_name             # <<<<<<<<<<<<<<
 * 
 * cdef inline void fixThreadDictContentForNode(xmlNode* c_node,
 */
        __pyx_v_c_node->name = __pyx_v_c_name;
        goto __pyx_L5;
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":459
 *                 c_node.name = c_name
 * 
 * cdef inline void fixThreadDictContentForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                                              tree.xmlDict* c_src_dict,
 *                                              tree.xmlDict* c_dict) nogil:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNode *__pyx_v_c_node, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":462
 *                                              tree.xmlDict* c_src_dict,
 *                                              tree.xmlDict* c_dict) nogil:
 *     if c_node.content is not NULL and \             # <<<<<<<<<<<<<<
 *            c_node.content is not <char*>&c_node.properties:
 *         if tree.xmlDictOwns(c_src_dict, c_node.content):
 */
  __pyx_t_1 = (__pyx_v_c_node->content != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":463
 *                                              tree.xmlDict* c_dict) nogil:
 *     if c_node.content is not NULL and \
 *            c_node.content is not <char*>&c_node.properties:             # <<<<<<<<<<<<<<
 *         if tree.xmlDictOwns(c_src_dict, c_node.content):
 *             # result can be NULL on memory error, but we don't handle that here
 */
    __pyx_t_2 = (__pyx_v_c_node->content != ((char *)(&__pyx_v_c_node->properties)));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":464
 *     if c_node.content is not NULL and \
 *            c_node.content is not <char*>&c_node.properties:
 *         if tree.xmlDictOwns(c_src_dict, c_node.content):             # <<<<<<<<<<<<<<
 *             # result can be NULL on memory error, but we don't handle that here
 *             c_node.content = tree.xmlDictLookup(c_dict, c_node.content, -1)
 */
    __pyx_t_4 = xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_node->content);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":466
 *         if tree.xmlDictOwns(c_src_dict, c_node.content):
 *             # result can be NULL on memory error, but we don't handle that here
 *             c_node.content = tree.xmlDictLookup(c_dict, c_node.content, -1)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void fixThreadDictNsForNode(xmlNode* c_node,
 */
      __pyx_v_c_node->content = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->content, -1);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":468
 *             c_node.content = tree.xmlDictLookup(c_dict, c_node.content, -1)
 * 
 * cdef inline void fixThreadDictNsForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                                         tree.xmlDict* c_src_dict,
 *                                         tree.xmlDict* c_dict) nogil:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *__pyx_v_c_node, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {
  xmlNs *__pyx_v_c_ns;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":471
 *                                         tree.xmlDict* c_src_dict,
 *                                         tree.xmlDict* c_dict) nogil:
 *     cdef xmlNs* c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
 *     while c_ns is not NULL:
 *         if c_ns.href is not NULL:
 */
  __pyx_v_c_ns = __pyx_v_c_node->nsDef;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":472
 *                                         tree.xmlDict* c_dict) nogil:
 *     cdef xmlNs* c_ns = c_node.nsDef
 *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
 *         if c_ns.href is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.href):
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_ns != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":473
 *     cdef xmlNs* c_ns = c_node.nsDef
 *     while c_ns is not NULL:
 *         if c_ns.href is not NULL:             # <<<<<<<<<<<<<<
 *             if tree.xmlDictOwns(c_src_dict, c_ns.href):
 *                 c_ns.href = tree.xmlDictLookup(c_dict, c_ns.href, -1)
 */
    __pyx_t_1 = (__pyx_v_c_ns->href != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":474
 *     while c_ns is not NULL:
 *         if c_ns.href is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.href):             # <<<<<<<<<<<<<<
 *                 c_ns.href = tree.xmlDictLookup(c_dict, c_ns.href, -1)
 *         if c_ns.prefix is not NULL:
 */
      __pyx_t_2 = xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_ns->href);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":475
 *         if c_ns.href is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.href):
 *                 c_ns.href = tree.xmlDictLookup(c_dict, c_ns.href, -1)             # <<<<<<<<<<<<<<
 *         if c_ns.prefix is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.prefix):
 */
        __pyx_v_c_ns->href = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_ns->href, -1);
        goto __pyx_L6;
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":476
 *             if tree.xmlDictOwns(c_src_dict, c_ns.href):
 *                 c_ns.href = tree.xmlDictLookup(c_dict, c_ns.href, -1)
 *         if c_ns.prefix is not NULL:             # <<<<<<<<<<<<<<
 *             if tree.xmlDictOwns(c_src_dict, c_ns.prefix):
 *                 c_ns.prefix = tree.xmlDictLookup(c_dict, c_ns.prefix, -1)
 */
    __pyx_t_1 = (__pyx_v_c_ns->prefix != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":477
 *                 c_ns.href = tree.xmlDictLookup(c_dict, c_ns.href, -1)
 *         if c_ns.prefix is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.prefix):             # <<<<<<<<<<<<<<
 *                 c_ns.prefix = tree.xmlDictLookup(c_dict, c_ns.prefix, -1)
 *         c_ns = c_ns.next
 */
      __pyx_t_2 = xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_ns->prefix);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":478
 *         if c_ns.prefix is not NULL:
 *             if tree.xmlDictOwns(c_src_dict, c_ns.prefix):
 *                 c_ns.prefix = tree.xmlDictLookup(c_dict, c_ns.prefix, -1)             # <<<<<<<<<<<<<<
 *         c_ns = c_ns.next
 */
        __pyx_v_c_ns->prefix = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_ns->prefix, -1);
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/proxy.pxi":479
 *             if tree.xmlDictOwns(c_src_dict, c_ns.prefix):
 *                 c_ns.prefix = tree.xmlDictLookup(c_dict, c_ns.prefix, -1)
 *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
 */
    __pyx_v_c_ns = __pyx_v_c_ns->next;
  }

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":3
 * # Private/public helper functions for API functions
 * 
 * cdef void displayNode(xmlNode* c_node, indent):             # <<<<<<<<<<<<<<
 *     # to help with debugging
 *     cdef xmlNode* c_child
 */

static  void __pyx_f_4lxml_5etree_displayNode(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_indent) {
  xmlNode *__pyx_v_c_child;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("displayNode");
  __Pyx_INCREF(__pyx_v_indent);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":6
 *     # to help with debugging
 *     cdef xmlNode* c_child
 *     print indent * u' ', <long>c_node             # <<<<<<<<<<<<<<
 *     c_child = c_node.children
 *     while c_child is not NULL:
 */
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_indent, ((PyObject *)__pyx_kp_u_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromLong(((long)__pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  if (__Pyx_Print(__pyx_t_3, 1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":7
 *     cdef xmlNode* c_child
 *     print indent * u' ', <long>c_node
 *     c_child = c_node.children             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         displayNode(c_child, indent + 1)
 */
  __pyx_v_c_child = __pyx_v_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":8
 *     print indent * u' ', <long>c_node
 *     c_child = c_node.children
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         displayNode(c_child, indent + 1)
 *         c_child = c_child.next
 */
  while (1) {
    __pyx_t_4 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_4) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":9
 *     c_child = c_node.children
 *     while c_child is not NULL:
 *         displayNode(c_child, indent + 1)             # <<<<<<<<<<<<<<
 *         c_child = c_child.next
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_v_indent, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_f_4lxml_5etree_displayNode(__pyx_v_c_child, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":10
 *     while c_child is not NULL:
 *         displayNode(c_child, indent + 1)
 *         c_child = c_child.next             # <<<<<<<<<<<<<<
 * 
 * cdef _Document _documentOrRaise(object input):
 */
    __pyx_v_c_child = __pyx_v_c_child->next;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("lxml.etree.displayNode");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_indent);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":12
 *         c_child = c_child.next
 * 
 * cdef _Document _documentOrRaise(object input):             # <<<<<<<<<<<<<<
 *     u"""Call this to get the document of a _Document, _ElementTree or _Element
 *     object, or to raise an exception if it can't be determined.
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__documentOrRaise(PyObject *__pyx_v_input) {
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_element;
  struct LxmlDocument *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_documentOrRaise");
  __Pyx_INCREF(__pyx_v_input);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":20
 *     cdef _Document doc
 *     cdef _Element element
 *     if isinstance(input, _ElementTree):             # <<<<<<<<<<<<<<
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":21
 *     cdef _Element element
 *     if isinstance(input, _ElementTree):
 *         element = (<_ElementTree>input)._context_node             # <<<<<<<<<<<<<<
 *         if element is not None:
 *             doc = element._doc
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node));
    __Pyx_DECREF(((PyObject *)__pyx_v_element));
    __pyx_v_element = ((struct LxmlElementTree *)__pyx_v_input)->_context_node;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":22
 *     if isinstance(input, _ElementTree):
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:             # <<<<<<<<<<<<<<
 *             doc = element._doc
 *     elif isinstance(input, _Element):
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":23
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:
 *             doc = element._doc             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Element):
 *         doc = (<_Element>input)._doc
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_element->_doc));
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = __pyx_v_element->_doc;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":24
 *         if element is not None:
 *             doc = element._doc
 *     elif isinstance(input, _Element):             # <<<<<<<<<<<<<<
 *         doc = (<_Element>input)._doc
 *     elif isinstance(input, _Document):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":25
 *             doc = element._doc
 *     elif isinstance(input, _Element):
 *         doc = (<_Element>input)._doc             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Document):
 *         doc = <_Document>input
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_input)->_doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlElement *)__pyx_v_input)->_doc;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":26
 *     elif isinstance(input, _Element):
 *         doc = (<_Element>input)._doc
 *     elif isinstance(input, _Document):             # <<<<<<<<<<<<<<
 *         doc = <_Document>input
 *     else:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":27
 *         doc = (<_Element>input)._doc
 *     elif isinstance(input, _Document):
 *         doc = <_Document>input             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Invalid input object: %s" % \
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlDocument *)__pyx_v_input)));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_v_input);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":30
 *     else:
 *         raise TypeError, u"Invalid input object: %s" % \
 *             python._fqtypename(input)             # <<<<<<<<<<<<<<
 *     if doc is None:
 *         raise ValueError, u"Input object has no document: %s" % \
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_input)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":31
 *         raise TypeError, u"Invalid input object: %s" % \
 *             python._fqtypename(input)
 *     if doc is None:             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Input object has no document: %s" % \
 *             python._fqtypename(input)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":33
 *     if doc is None:
 *         raise ValueError, u"Input object has no document: %s" % \
 *             python._fqtypename(input)             # <<<<<<<<<<<<<<
 *     else:
 *         return doc
 */
    __pyx_t_3 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_input)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_7), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_2, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":35
 *             python._fqtypename(input)
 *     else:
 *         return doc             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _rootNodeOrRaise(object input):
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_doc));
    __pyx_r = __pyx_v_doc;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._documentOrRaise");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_input);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":37
 *         return doc
 * 
 * cdef _Element _rootNodeOrRaise(object input):             # <<<<<<<<<<<<<<
 *     u"""Call this to get the root node of a _Document, _ElementTree or
 *      _Element object, or to raise an exception if it can't be determined.
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOrRaise(PyObject *__pyx_v_input) {
  struct LxmlElement *__pyx_v_node;
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_rootNodeOrRaise");
  __Pyx_INCREF(__pyx_v_input);
  __pyx_v_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":44
 *      """
 *     cdef _Element node
 *     if isinstance(input, _ElementTree):             # <<<<<<<<<<<<<<
 *         node = (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":45
 *     cdef _Element node
 *     if isinstance(input, _ElementTree):
 *         node = (<_ElementTree>input)._context_node             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Element):
 *         node = <_Element>input
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node));
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElementTree *)__pyx_v_input)->_context_node;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":46
 *     if isinstance(input, _ElementTree):
 *         node = (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):             # <<<<<<<<<<<<<<
 *         node = <_Element>input
 *     elif isinstance(input, _Document):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":47
 *         node = (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):
 *         node = <_Element>input             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Document):
 *         node = (<_Document>input).getroot()
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_input)));
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElement *)__pyx_v_input);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":48
 *     elif isinstance(input, _Element):
 *         node = <_Element>input
 *     elif isinstance(input, _Document):             # <<<<<<<<<<<<<<
 *         node = (<_Document>input).getroot()
 *     else:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":49
 *         node = <_Element>input
 *     elif isinstance(input, _Document):
 *         node = (<_Document>input).getroot()             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Invalid input object: %s" % \
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct LxmlDocument *)__pyx_v_input)->__pyx_vtab)->getroot(((struct LxmlDocument *)__pyx_v_input)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":52
 *     else:
 *         raise TypeError, u"Invalid input object: %s" % \
 *             python._fqtypename(input)             # <<<<<<<<<<<<<<
 *     if node is None:
 *         raise ValueError, u"Input object has no element: %s" % \
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_input)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_6), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":53
 *         raise TypeError, u"Invalid input object: %s" % \
 *             python._fqtypename(input)
 *     if node is None:             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Input object has no element: %s" % \
 *             python._fqtypename(input)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_node) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":55
 *     if node is None:
 *         raise ValueError, u"Input object has no element: %s" % \
 *             python._fqtypename(input)             # <<<<<<<<<<<<<<
 *     else:
 *         return node
 */
    __pyx_t_3 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_input)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_8), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_2, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":57
 *             python._fqtypename(input)
 *     else:
 *         return node             # <<<<<<<<<<<<<<
 * 
 * cdef _Document _documentOf(object input):
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_node));
    __pyx_r = __pyx_v_node;
    goto __pyx_L0;
  }
  __pyx_L4:;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._rootNodeOrRaise");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_input);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":59
 *         return node
 * 
 * cdef _Document _documentOf(object input):             # <<<<<<<<<<<<<<
 *     # call this to get the document of a
 *     # _Document, _ElementTree or _Element object
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__documentOf(PyObject *__pyx_v_input) {
  struct LxmlElement *__pyx_v_element;
  struct LxmlDocument *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_documentOf");
  __Pyx_INCREF(__pyx_v_input);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":64
 *     # may return None!
 *     cdef _Element element
 *     if isinstance(input, _ElementTree):             # <<<<<<<<<<<<<<
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":65
 *     cdef _Element element
 *     if isinstance(input, _ElementTree):
 *         element = (<_ElementTree>input)._context_node             # <<<<<<<<<<<<<<
 *         if element is not None:
 *             return element._doc
 */
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node));
    __Pyx_DECREF(((PyObject *)__pyx_v_element));
    __pyx_v_element = ((struct LxmlElementTree *)__pyx_v_input)->_context_node;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":66
 *     if isinstance(input, _ElementTree):
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:             # <<<<<<<<<<<<<<
 *             return element._doc
 *     elif isinstance(input, _Element):
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":67
 *         element = (<_ElementTree>input)._context_node
 *         if element is not None:
 *             return element._doc             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Element):
 *         return (<_Element>input)._doc
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __Pyx_INCREF(((PyObject *)__pyx_v_element->_doc));
      __pyx_r = __pyx_v_element->_doc;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":68
 *         if element is not None:
 *             return element._doc
 *     elif isinstance(input, _Element):             # <<<<<<<<<<<<<<
 *         return (<_Element>input)._doc
 *     elif isinstance(input, _Document):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":69
 *             return element._doc
 *     elif isinstance(input, _Element):
 *         return (<_Element>input)._doc             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Document):
 *         return <_Document>input
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_input)->_doc));
    __pyx_r = ((struct LxmlElement *)__pyx_v_input)->_doc;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":70
 *     elif isinstance(input, _Element):
 *         return (<_Element>input)._doc
 *     elif isinstance(input, _Document):             # <<<<<<<<<<<<<<
 *         return <_Document>input
 *     return None
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":71
 *         return (<_Element>input)._doc
 *     elif isinstance(input, _Document):
 *         return <_Document>input             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)((struct LxmlDocument *)__pyx_v_input)));
    __pyx_r = ((struct LxmlDocument *)__pyx_v_input);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":72
 *     elif isinstance(input, _Document):
 *         return <_Document>input
 *     return None             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _rootNodeOf(object input):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(Py_None);
  __pyx_r = ((struct LxmlDocument *)Py_None);
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_input);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":74
 *     return None
 * 
 * cdef _Element _rootNodeOf(object input):             # <<<<<<<<<<<<<<
 *     # call this to get the root node of a
 *     # _Document, _ElementTree or _Element object
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__rootNodeOf(PyObject *__pyx_v_input) {
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_rootNodeOf");
  __Pyx_INCREF(__pyx_v_input);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":78
 *     # _Document, _ElementTree or _Element object
 *     # may return None!
 *     if isinstance(input, _ElementTree):             # <<<<<<<<<<<<<<
 *         return (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":79
 *     # may return None!
 *     if isinstance(input, _ElementTree):
 *         return (<_ElementTree>input)._context_node             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Element):
 *         return <_Element>input
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_input)->_context_node));
    __pyx_r = ((struct LxmlElementTree *)__pyx_v_input)->_context_node;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":80
 *     if isinstance(input, _ElementTree):
 *         return (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):             # <<<<<<<<<<<<<<
 *         return <_Element>input
 *     elif isinstance(input, _Document):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":81
 *         return (<_ElementTree>input)._context_node
 *     elif isinstance(input, _Element):
 *         return <_Element>input             # <<<<<<<<<<<<<<
 *     elif isinstance(input, _Document):
 *         return (<_Document>input).getroot()
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_input)));
    __pyx_r = ((struct LxmlElement *)__pyx_v_input);
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":82
 *     elif isinstance(input, _Element):
 *         return <_Element>input
 *     elif isinstance(input, _Document):             # <<<<<<<<<<<<<<
 *         return (<_Document>input).getroot()
 *     else:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_input, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":83
 *         return <_Element>input
 *     elif isinstance(input, _Document):
 *         return (<_Document>input).getroot()             # <<<<<<<<<<<<<<
 *     else:
 *         return None
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct LxmlDocument *)__pyx_v_input)->__pyx_vtab)->getroot(((struct LxmlDocument *)__pyx_v_input)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":85
 *         return (<_Document>input).getroot()
 *     else:
 *         return None             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _makeElement(tag, xmlDoc* c_doc, _Document doc,
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct LxmlElement *)Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._rootNodeOf");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_input);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":87
 *         return None
 * 
 * cdef _Element _makeElement(tag, xmlDoc* c_doc, _Document doc,             # <<<<<<<<<<<<<<
 *                            _BaseParser parser, text, tail, attrib, nsmap,
 *                            extra_attrs):
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__makeElement(PyObject *__pyx_v_tag, xmlDoc *__pyx_v_c_doc, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v_extra_attrs) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  xmlDoc *__pyx_t_8;
  xmlDoc *__pyx_t_9;
  xmlNode *__pyx_t_10;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("_makeElement");
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF(__pyx_v_tail);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);
  __Pyx_INCREF(__pyx_v_extra_attrs);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":105
 *     """
 *     cdef xmlNode* c_node
 *     if doc is not None:             # <<<<<<<<<<<<<<
 *         c_doc = doc._c_doc
 *     ns_utf, name_utf = _getNsTag(tag)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":106
 *     cdef xmlNode* c_node
 *     if doc is not None:
 *         c_doc = doc._c_doc             # <<<<<<<<<<<<<<
 *     ns_utf, name_utf = _getNsTag(tag)
 *     if parser is not None and parser._for_html:
 */
    __pyx_v_c_doc = __pyx_v_doc->_c_doc;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":107
 *     if doc is not None:
 *         c_doc = doc._c_doc
 *     ns_utf, name_utf = _getNsTag(tag)             # <<<<<<<<<<<<<<
 *     if parser is not None and parser._for_html:
 *         _htmlTagValidOrRaise(name_utf)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
    PyObject* tuple = __pyx_t_2;
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_name_utf);
    __pyx_v_name_utf = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_name_utf);
    __pyx_v_name_utf = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":108
 *         c_doc = doc._c_doc
 *     ns_utf, name_utf = _getNsTag(tag)
 *     if parser is not None and parser._for_html:             # <<<<<<<<<<<<<<
 *         _htmlTagValidOrRaise(name_utf)
 *         if c_doc is NULL:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) != Py_None);
  if (__pyx_t_1) {
    __pyx_t_6 = __pyx_v_parser->_for_html;
  } else {
    __pyx_t_6 = __pyx_t_1;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":109
 *     ns_utf, name_utf = _getNsTag(tag)
 *     if parser is not None and parser._for_html:
 *         _htmlTagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 *         if c_doc is NULL:
 *             c_doc = _newHTMLDoc()
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":110
 *     if parser is not None and parser._for_html:
 *         _htmlTagValidOrRaise(name_utf)
 *         if c_doc is NULL:             # <<<<<<<<<<<<<<
 *             c_doc = _newHTMLDoc()
 *     else:
 */
    __pyx_t_6 = (__pyx_v_c_doc == NULL);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":111
 *         _htmlTagValidOrRaise(name_utf)
 *         if c_doc is NULL:
 *             c_doc = _newHTMLDoc()             # <<<<<<<<<<<<<<
 *     else:
 *         _tagValidOrRaise(name_utf)
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__newHTMLDoc(); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_c_doc = __pyx_t_8;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":113
 *             c_doc = _newHTMLDoc()
 *     else:
 *         _tagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 *         if c_doc is NULL:
 *             c_doc = _newXMLDoc()
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":114
 *     else:
 *         _tagValidOrRaise(name_utf)
 *         if c_doc is NULL:             # <<<<<<<<<<<<<<
 *             c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)
 */
    __pyx_t_6 = (__pyx_v_c_doc == NULL);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":115
 *         _tagValidOrRaise(name_utf)
 *         if c_doc is NULL:
 *             c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:
 */
      __pyx_t_9 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_c_doc = __pyx_t_9;
      goto __pyx_L6;
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":116
 *         if c_doc is NULL:
 *             c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         if doc is None and c_doc is not NULL:
 */
  __pyx_t_10 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_10;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":117
 *             c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         if doc is None and c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)
 */
  __pyx_t_6 = (__pyx_v_c_node == NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":118
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:
 *         if doc is None and c_doc is not NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()
 */
    __pyx_t_6 = (((PyObject *)__pyx_v_doc) == Py_None);
    if (__pyx_t_6) {
      __pyx_t_1 = (__pyx_v_c_doc != NULL);
      __pyx_t_11 = __pyx_t_1;
    } else {
      __pyx_t_11 = __pyx_t_6;
    }
    if (__pyx_t_11) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":119
 *     if c_node is NULL:
 *         if doc is None and c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 *     try:
 */
      xmlFreeDoc(__pyx_v_c_doc);
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":120
 *         if doc is None and c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     try:
 *         if doc is None:
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":121
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()
 *     try:             # <<<<<<<<<<<<<<
 *         if doc is None:
 *             tree.xmlDocSetRootElement(c_doc, c_node)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":122
 *         return python.PyErr_NoMemory()
 *     try:
 *         if doc is None:             # <<<<<<<<<<<<<<
 *             tree.xmlDocSetRootElement(c_doc, c_node)
 *             doc = _documentFactory(c_doc, parser)
 */
      __pyx_t_11 = (((PyObject *)__pyx_v_doc) == Py_None);
      if (__pyx_t_11) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":123
 *     try:
 *         if doc is None:
 *             tree.xmlDocSetRootElement(c_doc, c_node)             # <<<<<<<<<<<<<<
 *             doc = _documentFactory(c_doc, parser)
 *         if text is not None:
 */
        xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_node);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":124
 *         if doc is None:
 *             tree.xmlDocSetRootElement(c_doc, c_node)
 *             doc = _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 *         if text is not None:
 *             _setNodeText(c_node, text)
 */
        __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_v_doc));
        __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
        __pyx_t_2 = 0;
        goto __pyx_L17;
      }
      __pyx_L17:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":125
 *             tree.xmlDocSetRootElement(c_doc, c_node)
 *             doc = _documentFactory(c_doc, parser)
 *         if text is not None:             # <<<<<<<<<<<<<<
 *             _setNodeText(c_node, text)
 *         if tail is not None:
 */
      __pyx_t_11 = (__pyx_v_text != Py_None);
      if (__pyx_t_11) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":126
 *             doc = _documentFactory(c_doc, parser)
 *         if text is not None:
 *             _setNodeText(c_node, text)             # <<<<<<<<<<<<<<
 *         if tail is not None:
 *             _setTailText(c_node, tail)
 */
        __pyx_t_7 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":127
 *         if text is not None:
 *             _setNodeText(c_node, text)
 *         if tail is not None:             # <<<<<<<<<<<<<<
 *             _setTailText(c_node, tail)
 *         # add namespaces to node if necessary
 */
      __pyx_t_11 = (__pyx_v_tail != Py_None);
      if (__pyx_t_11) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":128
 *             _setNodeText(c_node, text)
 *         if tail is not None:
 *             _setTailText(c_node, tail)             # <<<<<<<<<<<<<<
 *         # add namespaces to node if necessary
 *         _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 */
        __pyx_t_7 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_tail); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":130
 *             _setTailText(c_node, tail)
 *         # add namespaces to node if necessary
 *         _initNodeNamespaces(c_node, doc, ns_utf, nsmap)             # <<<<<<<<<<<<<<
 *         _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *         return _elementFactory(doc, c_node)
 */
      __pyx_t_7 = __pyx_f_4lxml_5etree__initNodeNamespaces(__pyx_v_c_node, __pyx_v_doc, __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L9_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":131
 *         # add namespaces to node if necessary
 *         _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 *         _initNodeAttributes(c_node, doc, attrib, extra_attrs)             # <<<<<<<<<<<<<<
 *         return _elementFactory(doc, c_node)
 *     except:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, __pyx_v_doc, __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":132
 *         _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 *         _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *         return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 *     except:
 *         # free allocated c_node/c_doc unless Python does it for us
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = ((struct LxmlElement *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L13_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L16_try_end;
    __pyx_L13_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L9_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":133
 *         _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *         return _elementFactory(doc, c_node)
 *     except:             # <<<<<<<<<<<<<<
 *         # free allocated c_node/c_doc unless Python does it for us
 *         if c_node.doc is not c_doc:
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._makeElement");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":135
 *     except:
 *         # free allocated c_node/c_doc unless Python does it for us
 *         if c_node.doc is not c_doc:             # <<<<<<<<<<<<<<
 *             # node not yet in document => will not be freed by document
 *             if tail is not None:
 */
      __pyx_t_11 = (__pyx_v_c_node->doc != __pyx_v_c_doc);
      if (__pyx_t_11) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":137
 *         if c_node.doc is not c_doc:
 *             # node not yet in document => will not be freed by document
 *             if tail is not None:             # <<<<<<<<<<<<<<
 *                 _removeText(c_node.next) # tail
 *             tree.xmlFreeNode(c_node)
 */
        __pyx_t_11 = (__pyx_v_tail != Py_None);
        if (__pyx_t_11) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":138
 *             # node not yet in document => will not be freed by document
 *             if tail is not None:
 *                 _removeText(c_node.next) # tail             # <<<<<<<<<<<<<<
 *             tree.xmlFreeNode(c_node)
 *         if doc is None:
 */
          __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
          goto __pyx_L23;
        }
        __pyx_L23:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":139
 *             if tail is not None:
 *                 _removeText(c_node.next) # tail
 *             tree.xmlFreeNode(c_node)             # <<<<<<<<<<<<<<
 *         if doc is None:
 *             # c_doc will not be freed by doc
 */
        xmlFreeNode(__pyx_v_c_node);
        goto __pyx_L22;
      }
      __pyx_L22:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":140
 *                 _removeText(c_node.next) # tail
 *             tree.xmlFreeNode(c_node)
 *         if doc is None:             # <<<<<<<<<<<<<<
 *             # c_doc will not be freed by doc
 *             tree.xmlFreeDoc(c_doc)
 */
      __pyx_t_11 = (((PyObject *)__pyx_v_doc) == Py_None);
      if (__pyx_t_11) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":142
 *         if doc is None:
 *             # c_doc will not be freed by doc
 *             tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 *         raise
 * 
 */
        xmlFreeDoc(__pyx_v_c_doc);
        goto __pyx_L24;
      }
      __pyx_L24:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":143
 *             # c_doc will not be freed by doc
 *             tree.xmlFreeDoc(c_doc)
 *         raise             # <<<<<<<<<<<<<<
 * 
 * cdef int _initNewElement(_Element element, bint is_html, name_utf, ns_utf,
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_2, __pyx_t_4, __pyx_t_3);
      __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L10_exception_handled;
    }
    __pyx_L11_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L10_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L16_try_end:;
  }

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._makeElement");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_tail);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_DECREF(__pyx_v_extra_attrs);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":145
 *         raise
 * 
 * cdef int _initNewElement(_Element element, bint is_html, name_utf, ns_utf,             # <<<<<<<<<<<<<<
 *                          _BaseParser parser, attrib, nsmap, extra_attrs) except -1:
 *     u"""Initialise a new Element object.
 */

static  int __pyx_f_4lxml_5etree__initNewElement(struct LxmlElement *__pyx_v_element, int __pyx_v_is_html, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v_extra_attrs) {
  xmlDoc *__pyx_v_c_doc;
  xmlNode *__pyx_v_c_node;
  struct LxmlDocument *__pyx_v_doc;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  xmlDoc *__pyx_t_4;
  xmlNode *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_initNewElement");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_ns_utf);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);
  __Pyx_INCREF(__pyx_v_extra_attrs);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":155
 *     cdef xmlNode* c_node
 *     cdef _Document doc
 *     if is_html:             # <<<<<<<<<<<<<<
 *         _htmlTagValidOrRaise(name_utf)
 *         c_doc = _newHTMLDoc()
 */
  __pyx_t_1 = __pyx_v_is_html;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":156
 *     cdef _Document doc
 *     if is_html:
 *         _htmlTagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 *         c_doc = _newHTMLDoc()
 *     else:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":157
 *     if is_html:
 *         _htmlTagValidOrRaise(name_utf)
 *         c_doc = _newHTMLDoc()             # <<<<<<<<<<<<<<
 *     else:
 *         _tagValidOrRaise(name_utf)
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__newHTMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_doc = __pyx_t_3;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":159
 *         c_doc = _newHTMLDoc()
 *     else:
 *         _tagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 *         c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":160
 *     else:
 *         _tagValidOrRaise(name_utf)
 *         c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_doc = __pyx_t_4;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":161
 *         _tagValidOrRaise(name_utf)
 *         c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         if c_doc is not NULL:
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":162
 *         c_doc = _newXMLDoc()
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         if c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":163
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:
 *         if c_doc is not NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()
 */
    __pyx_t_1 = (__pyx_v_c_doc != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":164
 *     if c_node is NULL:
 *         if c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(c_doc, c_node)
 */
      xmlFreeDoc(__pyx_v_c_doc);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":165
 *         if c_doc is not NULL:
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     tree.xmlDocSetRootElement(c_doc, c_node)
 *     doc = _documentFactory(c_doc, parser)
 */
    __pyx_t_6 = PyErr_NoMemory(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_6); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":166
 *             tree.xmlFreeDoc(c_doc)
 *         return python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(c_doc, c_node)             # <<<<<<<<<<<<<<
 *     doc = _documentFactory(c_doc, parser)
 *     # add namespaces to node if necessary
 */
  xmlDocSetRootElement(__pyx_v_c_doc, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":167
 *         return python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(c_doc, c_node)
 *     doc = _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 *     # add namespaces to node if necessary
 *     _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 */
  __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":169
 *     doc = _documentFactory(c_doc, parser)
 *     # add namespaces to node if necessary
 *     _initNodeNamespaces(c_node, doc, ns_utf, nsmap)             # <<<<<<<<<<<<<<
 *     _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *     _registerProxy(element, doc, c_node)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__initNodeNamespaces(__pyx_v_c_node, __pyx_v_doc, __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":170
 *     # add namespaces to node if necessary
 *     _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 *     _initNodeAttributes(c_node, doc, attrib, extra_attrs)             # <<<<<<<<<<<<<<
 *     _registerProxy(element, doc, c_node)
 *     element._init()
 */
  __pyx_t_6 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, __pyx_v_doc, __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":171
 *     _initNodeNamespaces(c_node, doc, ns_utf, nsmap)
 *     _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *     _registerProxy(element, doc, c_node)             # <<<<<<<<<<<<<<
 *     element._init()
 *     return 0
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__registerProxy(__pyx_v_element, __pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":172
 *     _initNodeAttributes(c_node, doc, attrib, extra_attrs)
 *     _registerProxy(element, doc, c_node)
 *     element._init()             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s___init); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":173
 *     _registerProxy(element, doc, c_node)
 *     element._init()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _makeSubElement(_Element parent, tag, text, tail,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._initNewElement");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_DECREF(__pyx_v_extra_attrs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":175
 *     return 0
 * 
 * cdef _Element _makeSubElement(_Element parent, tag, text, tail,             # <<<<<<<<<<<<<<
 *                               attrib, nsmap, extra_attrs):
 *     u"""Create a new child element and initialize text content, namespaces and
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject *__pyx_v_tag, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap, PyObject *__pyx_v_extra_attrs) {
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  xmlNode *__pyx_t_9;
  __Pyx_RefNannySetupContext("_makeSubElement");
  __Pyx_INCREF((PyObject *)__pyx_v_parent);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF(__pyx_v_tail);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);
  __Pyx_INCREF(__pyx_v_extra_attrs);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":182
 *     cdef xmlNode* c_node
 *     cdef xmlDoc* c_doc
 *     if parent is None or parent._doc is None:             # <<<<<<<<<<<<<<
 *         return None
 *     ns_utf, name_utf = _getNsTag(tag)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parent) == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_2 = (((PyObject *)__pyx_v_parent->_doc) == Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":183
 *     cdef xmlDoc* c_doc
 *     if parent is None or parent._doc is None:
 *         return None             # <<<<<<<<<<<<<<
 *     ns_utf, name_utf = _getNsTag(tag)
 *     c_doc = parent._doc._c_doc
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct LxmlElement *)Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":184
 *     if parent is None or parent._doc is None:
 *         return None
 *     ns_utf, name_utf = _getNsTag(tag)             # <<<<<<<<<<<<<<
 *     c_doc = parent._doc._c_doc
 * 
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
    PyObject* tuple = __pyx_t_4;
    __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_name_utf);
    __pyx_v_name_utf = __pyx_t_6;
    __pyx_t_6 = 0;
  } else {
    __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_name_utf);
    __pyx_v_name_utf = __pyx_t_6;
    __pyx_t_6 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":185
 *         return None
 *     ns_utf, name_utf = _getNsTag(tag)
 *     c_doc = parent._doc._c_doc             # <<<<<<<<<<<<<<
 * 
 *     if parent._doc._parser is not None and parent._doc._parser._for_html:
 */
  __pyx_v_c_doc = __pyx_v_parent->_doc->_c_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":187
 *     c_doc = parent._doc._c_doc
 * 
 *     if parent._doc._parser is not None and parent._doc._parser._for_html:             # <<<<<<<<<<<<<<
 *         _htmlTagValidOrRaise(name_utf)
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_parent->_doc->_parser) != Py_None);
  if (__pyx_t_3) {
    __pyx_t_1 = __pyx_v_parent->_doc->_parser->_for_html;
  } else {
    __pyx_t_1 = __pyx_t_3;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":188
 * 
 *     if parent._doc._parser is not None and parent._doc._parser._for_html:
 *         _htmlTagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 *     else:
 *         _tagValidOrRaise(name_utf)
 */
    __pyx_t_8 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":190
 *         _htmlTagValidOrRaise(name_utf)
 *     else:
 *         _tagValidOrRaise(name_utf)             # <<<<<<<<<<<<<<
 * 
 *     c_node = _createElement(c_doc, name_utf)
 */
    __pyx_t_8 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name_utf); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":192
 *         _tagValidOrRaise(name_utf)
 * 
 *     c_node = _createElement(c_doc, name_utf)             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         return python.PyErr_NoMemory()
 */
  __pyx_t_9 = __pyx_f_4lxml_5etree__createElement(__pyx_v_c_doc, __pyx_v_name_utf); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_9;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":193
 * 
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 *     tree.xmlAddChild(parent._c_node, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":194
 *     c_node = _createElement(c_doc, name_utf)
 *     if c_node is NULL:
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     tree.xmlAddChild(parent._c_node, c_node)
 * 
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_4 = PyErr_NoMemory(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = ((struct LxmlElement *)__pyx_t_4);
    __pyx_t_4 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":195
 *     if c_node is NULL:
 *         return python.PyErr_NoMemory()
 *     tree.xmlAddChild(parent._c_node, c_node)             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":197
 *     tree.xmlAddChild(parent._c_node, c_node)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if text is not None:
 *             _setNodeText(c_node, text)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":198
 * 
 *     try:
 *         if text is not None:             # <<<<<<<<<<<<<<
 *             _setNodeText(c_node, text)
 *         if tail is not None:
 */
      __pyx_t_1 = (__pyx_v_text != Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":199
 *     try:
 *         if text is not None:
 *             _setNodeText(c_node, text)             # <<<<<<<<<<<<<<
 *         if tail is not None:
 *             _setTailText(c_node, tail)
 */
        __pyx_t_8 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
        goto __pyx_L14;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":200
 *         if text is not None:
 *             _setNodeText(c_node, text)
 *         if tail is not None:             # <<<<<<<<<<<<<<
 *             _setTailText(c_node, tail)
 * 
 */
      __pyx_t_1 = (__pyx_v_tail != Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":201
 *             _setNodeText(c_node, text)
 *         if tail is not None:
 *             _setTailText(c_node, tail)             # <<<<<<<<<<<<<<
 * 
 *         # add namespaces to node if necessary
 */
        __pyx_t_8 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_tail); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
        goto __pyx_L15;
      }
      __pyx_L15:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":204
 * 
 *         # add namespaces to node if necessary
 *         _initNodeNamespaces(c_node, parent._doc, ns_utf, nsmap)             # <<<<<<<<<<<<<<
 *         _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs)
 *         return _elementFactory(parent._doc, c_node)
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__initNodeNamespaces(__pyx_v_c_node, __pyx_v_parent->_doc, __pyx_v_ns_utf, __pyx_v_nsmap); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L6_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":205
 *         # add namespaces to node if necessary
 *         _initNodeNamespaces(c_node, parent._doc, ns_utf, nsmap)
 *         _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs)             # <<<<<<<<<<<<<<
 *         return _elementFactory(parent._doc, c_node)
 *     except:
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__initNodeAttributes(__pyx_v_c_node, __pyx_v_parent->_doc, __pyx_v_attrib, __pyx_v_extra_attrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":206
 *         _initNodeNamespaces(c_node, parent._doc, ns_utf, nsmap)
 *         _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs)
 *         return _elementFactory(parent._doc, c_node)             # <<<<<<<<<<<<<<
 *     except:
 *         # make sure we clean up in case of an error
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_parent->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_r = ((struct LxmlElement *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L10_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":207
 *         _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs)
 *         return _elementFactory(parent._doc, c_node)
 *     except:             # <<<<<<<<<<<<<<
 *         # make sure we clean up in case of an error
 *         _removeNode(parent._doc, c_node)
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._makeSubElement");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":209
 *     except:
 *         # make sure we clean up in case of an error
 *         _removeNode(parent._doc, c_node)             # <<<<<<<<<<<<<<
 *         raise
 * 
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_parent->_doc, __pyx_v_c_node); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":210
 *         # make sure we clean up in case of an error
 *         _removeNode(parent._doc, c_node)
 *         raise             # <<<<<<<<<<<<<<
 * 
 * cdef int _initNodeNamespaces(xmlNode* c_node, _Document doc,
 */
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_5);
      __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; 
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._makeSubElement");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_parent);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_tail);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_DECREF(__pyx_v_extra_attrs);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":212
 *         raise
 * 
 * cdef int _initNodeNamespaces(xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
 *                              object node_ns_utf, object nsmap) except -1:
 *     u"""Lookup current namespace prefixes, then set namespace structure for
 */

static  int __pyx_f_4lxml_5etree__initNodeNamespaces(xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_node_ns_utf, PyObject *__pyx_v_nsmap) {
  xmlNs *__pyx_v_c_ns;
  char *__pyx_v_c_prefix;
  char *__pyx_v_c_href;
  PyObject *__pyx_v_nsdefs;
  PyObject *__pyx_v_item;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_v_href;
  PyObject *__pyx_v_href_utf;
  PyObject *__pyx_v_prefix_utf;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  __Pyx_RefNannySetupContext("_initNodeNamespaces");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF(__pyx_v_node_ns_utf);
  __Pyx_INCREF(__pyx_v_nsmap);
  __pyx_v_nsdefs = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_href = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_href_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":223
 *     cdef char*  c_href
 *     cdef list nsdefs
 *     if not nsmap:             # <<<<<<<<<<<<<<
 *         if node_ns_utf is not None:
 *             doc._setNodeNs(c_node, _cstr(node_ns_utf))
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":224
 *     cdef list nsdefs
 *     if not nsmap:
 *         if node_ns_utf is not None:             # <<<<<<<<<<<<<<
 *             doc._setNodeNs(c_node, _cstr(node_ns_utf))
 *         return 0
 */
    __pyx_t_2 = (__pyx_v_node_ns_utf != Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":225
 *     if not nsmap:
 *         if node_ns_utf is not None:
 *             doc._setNodeNs(c_node, _cstr(node_ns_utf))             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->_setNodeNs(__pyx_v_doc, __pyx_v_c_node, PyString_AS_STRING(__pyx_v_node_ns_utf)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":226
 *         if node_ns_utf is not None:
 *             doc._setNodeNs(c_node, _cstr(node_ns_utf))
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     nsdefs = list(nsmap.items())
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":228
 *         return 0
 * 
 *     nsdefs = list(nsmap.items())             # <<<<<<<<<<<<<<
 *     if None in nsmap and python.PyList_GET_SIZE(nsdefs) > 1:
 *         # Move the default namespace to the end.  This makes sure libxml2
 */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_nsmap, __pyx_n_s__items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_v_nsdefs));
  __pyx_v_nsdefs = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":229
 * 
 *     nsdefs = list(nsmap.items())
 *     if None in nsmap and python.PyList_GET_SIZE(nsdefs) > 1:             # <<<<<<<<<<<<<<
 *         # Move the default namespace to the end.  This makes sure libxml2
 *         # prefers a prefix if the ns is defined redundantly on the same
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_nsmap, Py_None))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)__pyx_v_nsdefs)) > 1);
    __pyx_t_6 = __pyx_t_1;
  } else {
    __pyx_t_6 = __pyx_t_2;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":236
 *         # elements serialise without prefix (i.e. into the non-default
 *         # namespace).
 *         item = (None, nsmap[None])             # <<<<<<<<<<<<<<
 *         nsdefs.remove(item)
 *         nsdefs.append(item)
 */
    __pyx_t_5 = PyObject_GetItem(__pyx_v_nsmap, Py_None); if (!__pyx_t_5) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":237
 *         # namespace).
 *         item = (None, nsmap[None])
 *         nsdefs.remove(item)             # <<<<<<<<<<<<<<
 *         nsdefs.append(item)
 * 
 */
    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_nsdefs), __pyx_n_s__remove); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_item);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_item);
    __Pyx_GIVEREF(__pyx_v_item);
    __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":238
 *         item = (None, nsmap[None])
 *         nsdefs.remove(item)
 *         nsdefs.append(item)             # <<<<<<<<<<<<<<
 * 
 *     for prefix, href in nsdefs:
 */
    if (unlikely(__pyx_v_nsdefs == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_nsdefs), __pyx_v_item); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":240
 *         nsdefs.append(item)
 * 
 *     for prefix, href in nsdefs:             # <<<<<<<<<<<<<<
 *         href_utf = _utf8(href)
 *         c_href = _cstr(href_utf)
 */
  if (likely(((PyObject *)__pyx_v_nsdefs) != Py_None)) {
    __pyx_t_8 = 0; __pyx_t_7 = ((PyObject *)__pyx_v_nsdefs); __Pyx_INCREF(__pyx_t_7);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_7)) break;
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++;
    if (PyTuple_CheckExact(__pyx_t_5) && likely(PyTuple_GET_SIZE(__pyx_t_5) == 2)) {
      PyObject* tuple = __pyx_t_5;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_9 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = __pyx_t_9;
      __pyx_t_9 = 0;
    } else {
      __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_10, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_10, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_EndUnpack(__pyx_t_10) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = __pyx_t_9;
      __pyx_t_9 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":241
 * 
 *     for prefix, href in nsdefs:
 *         href_utf = _utf8(href)             # <<<<<<<<<<<<<<
 *         c_href = _cstr(href_utf)
 *         if prefix is not None:
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__utf8(__pyx_v_href); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_v_href_utf);
    __pyx_v_href_utf = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":242
 *     for prefix, href in nsdefs:
 *         href_utf = _utf8(href)
 *         c_href = _cstr(href_utf)             # <<<<<<<<<<<<<<
 *         if prefix is not None:
 *             prefix_utf = _utf8(prefix)
 */
    __pyx_v_c_href = PyString_AS_STRING(__pyx_v_href_utf);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":243
 *         href_utf = _utf8(href)
 *         c_href = _cstr(href_utf)
 *         if prefix is not None:             # <<<<<<<<<<<<<<
 *             prefix_utf = _utf8(prefix)
 *             _prefixValidOrRaise(prefix_utf)
 */
    __pyx_t_6 = (__pyx_v_prefix != Py_None);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":244
 *         c_href = _cstr(href_utf)
 *         if prefix is not None:
 *             prefix_utf = _utf8(prefix)             # <<<<<<<<<<<<<<
 *             _prefixValidOrRaise(prefix_utf)
 *             c_prefix = _cstr(prefix_utf)
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_prefix_utf);
      __pyx_v_prefix_utf = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":245
 *         if prefix is not None:
 *             prefix_utf = _utf8(prefix)
 *             _prefixValidOrRaise(prefix_utf)             # <<<<<<<<<<<<<<
 *             c_prefix = _cstr(prefix_utf)
 *         else:
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix_utf); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":246
 *             prefix_utf = _utf8(prefix)
 *             _prefixValidOrRaise(prefix_utf)
 *             c_prefix = _cstr(prefix_utf)             # <<<<<<<<<<<<<<
 *         else:
 *             c_prefix = NULL
 */
      __pyx_v_c_prefix = PyString_AS_STRING(__pyx_v_prefix_utf);
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":248
 *             c_prefix = _cstr(prefix_utf)
 *         else:
 *             c_prefix = NULL             # <<<<<<<<<<<<<<
 *         # add namespace with prefix if it is not already known
 *         c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix)
 */
      __pyx_v_c_prefix = NULL;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":250
 *             c_prefix = NULL
 *         # add namespace with prefix if it is not already known
 *         c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix)             # <<<<<<<<<<<<<<
 *         if c_ns is NULL or \
 *                 c_ns.href is NULL or \
 */
    __pyx_v_c_ns = xmlSearchNs(__pyx_v_doc->_c_doc, __pyx_v_c_node, __pyx_v_c_prefix);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":251
 *         # add namespace with prefix if it is not already known
 *         c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix)
 *         if c_ns is NULL or \             # <<<<<<<<<<<<<<
 *                 c_ns.href is NULL or \
 *                 cstd.strcmp(c_ns.href, c_href) != 0:
 */
    __pyx_t_6 = (__pyx_v_c_ns == NULL);
    if (!__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":252
 *         c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix)
 *         if c_ns is NULL or \
 *                 c_ns.href is NULL or \             # <<<<<<<<<<<<<<
 *                 cstd.strcmp(c_ns.href, c_href) != 0:
 *             c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 */
      __pyx_t_2 = (__pyx_v_c_ns->href == NULL);
      if (!__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":253
 *         if c_ns is NULL or \
 *                 c_ns.href is NULL or \
 *                 cstd.strcmp(c_ns.href, c_href) != 0:             # <<<<<<<<<<<<<<
 *             c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 *         if href_utf == node_ns_utf:
 */
        __pyx_t_1 = (strcmp(__pyx_v_c_ns->href, __pyx_v_c_href) != 0);
        __pyx_t_11 = __pyx_t_1;
      } else {
        __pyx_t_11 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_11;
    } else {
      __pyx_t_2 = __pyx_t_6;
    }
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":254
 *                 c_ns.href is NULL or \
 *                 cstd.strcmp(c_ns.href, c_href) != 0:
 *             c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)             # <<<<<<<<<<<<<<
 *         if href_utf == node_ns_utf:
 *             tree.xmlSetNs(c_node, c_ns)
 */
      __pyx_v_c_ns = xmlNewNs(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_prefix);
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":255
 *                 cstd.strcmp(c_ns.href, c_href) != 0:
 *             c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 *         if href_utf == node_ns_utf:             # <<<<<<<<<<<<<<
 *             tree.xmlSetNs(c_node, c_ns)
 *             node_ns_utf = None
 */
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_href_utf, __pyx_v_node_ns_utf, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":256
 *             c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 *         if href_utf == node_ns_utf:
 *             tree.xmlSetNs(c_node, c_ns)             # <<<<<<<<<<<<<<
 *             node_ns_utf = None
 * 
 */
      xmlSetNs(__pyx_v_c_node, __pyx_v_c_ns);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":257
 *         if href_utf == node_ns_utf:
 *             tree.xmlSetNs(c_node, c_ns)
 *             node_ns_utf = None             # <<<<<<<<<<<<<<
 * 
 *     if node_ns_utf is not None:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_node_ns_utf);
      __pyx_v_node_ns_utf = Py_None;
      goto __pyx_L10;
    }
    __pyx_L10:;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":259
 *             node_ns_utf = None
 * 
 *     if node_ns_utf is not None:             # <<<<<<<<<<<<<<
 *         doc._setNodeNs(c_node, _cstr(node_ns_utf))
 *     return 0
 */
  __pyx_t_2 = (__pyx_v_node_ns_utf != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":260
 * 
 *     if node_ns_utf is not None:
 *         doc._setNodeNs(c_node, _cstr(node_ns_utf))             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->_setNodeNs(__pyx_v_doc, __pyx_v_c_node, PyString_AS_STRING(__pyx_v_node_ns_utf)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":261
 *     if node_ns_utf is not None:
 *         doc._setNodeNs(c_node, _cstr(node_ns_utf))
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef _initNodeAttributes(xmlNode* c_node, _Document doc, attrib, extra):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("lxml.etree._initNodeNamespaces");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_nsdefs);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_href);
  __Pyx_DECREF(__pyx_v_href_utf);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_node_ns_utf);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":263
 *     return 0
 * 
 * cdef _initNodeAttributes(xmlNode* c_node, _Document doc, attrib, extra):             # <<<<<<<<<<<<<<
 *     u"""Initialise the attributes of an element node.
 *     """
 */

static  PyObject *__pyx_f_4lxml_5etree__initNodeAttributes(xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_attrib, PyObject *__pyx_v_extra) {
  int __pyx_v_is_html;
  xmlNs *__pyx_v_c_ns;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_attr_ns_utf;
  PyObject *__pyx_v_attr_name_utf;
  PyObject *__pyx_v_value_utf;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  xmlNs *__pyx_t_11;
  __Pyx_RefNannySetupContext("_initNodeAttributes");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_extra);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_attr_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_attr_name_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":269
 *     cdef xmlNs* c_ns
 *     # 'extra' is not checked here (expected to be a keyword dict)
 *     if attrib is not None and not hasattr(attrib, u'items'):             # <<<<<<<<<<<<<<
 *         raise TypeError, u"Invalid attribute dictionary: %s" % \
 *             python._fqtypename(attrib)
 */
  __pyx_t_1 = (__pyx_v_attrib != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = PyObject_HasAttr(__pyx_v_attrib, ((PyObject *)__pyx_n_u__items)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (!__pyx_t_2);
    __pyx_t_2 = __pyx_t_3;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":271
 *     if attrib is not None and not hasattr(attrib, u'items'):
 *         raise TypeError, u"Invalid attribute dictionary: %s" % \
 *             python._fqtypename(attrib)             # <<<<<<<<<<<<<<
 *     if extra is not None and extra:
 *         if attrib is None:
 */
    __pyx_t_4 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_attrib)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_9), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_5, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":272
 *         raise TypeError, u"Invalid attribute dictionary: %s" % \
 *             python._fqtypename(attrib)
 *     if extra is not None and extra:             # <<<<<<<<<<<<<<
 *         if attrib is None:
 *             attrib = extra
 */
  __pyx_t_2 = (__pyx_v_extra != Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_extra); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":273
 *             python._fqtypename(attrib)
 *     if extra is not None and extra:
 *         if attrib is None:             # <<<<<<<<<<<<<<
 *             attrib = extra
 *         else:
 */
    __pyx_t_3 = (__pyx_v_attrib == Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":274
 *     if extra is not None and extra:
 *         if attrib is None:
 *             attrib = extra             # <<<<<<<<<<<<<<
 *         else:
 *             attrib.update(extra)
 */
      __Pyx_INCREF(__pyx_v_extra);
      __Pyx_DECREF(__pyx_v_attrib);
      __pyx_v_attrib = __pyx_v_extra;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":276
 *             attrib = extra
 *         else:
 *             attrib.update(extra)             # <<<<<<<<<<<<<<
 *     if attrib:
 *         is_html = doc._parser._for_html
 */
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_attrib, __pyx_n_s__update); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_extra);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_extra);
      __Pyx_GIVEREF(__pyx_v_extra);
      __pyx_t_6 = PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":277
 *         else:
 *             attrib.update(extra)
 *     if attrib:             # <<<<<<<<<<<<<<
 *         is_html = doc._parser._for_html
 *         for name, value in attrib.items():
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":278
 *             attrib.update(extra)
 *     if attrib:
 *         is_html = doc._parser._for_html             # <<<<<<<<<<<<<<
 *         for name, value in attrib.items():
 *             attr_ns_utf, attr_name_utf = _getNsTag(name)
 */
    __pyx_v_is_html = __pyx_v_doc->_parser->_for_html;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":279
 *     if attrib:
 *         is_html = doc._parser._for_html
 *         for name, value in attrib.items():             # <<<<<<<<<<<<<<
 *             attr_ns_utf, attr_name_utf = _getNsTag(name)
 *             if not is_html:
 */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_attrib, __pyx_n_s__items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_7 = 0; __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++;
      } else {
        __pyx_t_4 = PyIter_Next(__pyx_t_6);
        if (!__pyx_t_4) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
        PyObject* tuple = __pyx_t_4;
        __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
        __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_name);
        __pyx_v_name = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_value);
        __pyx_v_value = __pyx_t_8;
        __pyx_t_8 = 0;
      } else {
        __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_EndUnpack(__pyx_t_9) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_v_name);
        __pyx_v_name = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_value);
        __pyx_v_value = __pyx_t_8;
        __pyx_t_8 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":280
 *         is_html = doc._parser._for_html
 *         for name, value in attrib.items():
 *             attr_ns_utf, attr_name_utf = _getNsTag(name)             # <<<<<<<<<<<<<<
 *             if not is_html:
 *                 _attributeValidOrRaise(attr_name_utf)
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
        PyObject* tuple = __pyx_t_4;
        __pyx_t_8 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_8);
        __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_attr_ns_utf);
        __pyx_v_attr_ns_utf = __pyx_t_8;
        __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_attr_name_utf);
        __pyx_v_attr_name_utf = __pyx_t_5;
        __pyx_t_5 = 0;
      } else {
        __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_EndUnpack(__pyx_t_9) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_v_attr_ns_utf);
        __pyx_v_attr_ns_utf = __pyx_t_8;
        __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_attr_name_utf);
        __pyx_v_attr_name_utf = __pyx_t_5;
        __pyx_t_5 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":281
 *         for name, value in attrib.items():
 *             attr_ns_utf, attr_name_utf = _getNsTag(name)
 *             if not is_html:             # <<<<<<<<<<<<<<
 *                 _attributeValidOrRaise(attr_name_utf)
 *             value_utf = _utf8(value)
 */
      __pyx_t_3 = (!__pyx_v_is_html);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":282
 *             attr_ns_utf, attr_name_utf = _getNsTag(name)
 *             if not is_html:
 *                 _attributeValidOrRaise(attr_name_utf)             # <<<<<<<<<<<<<<
 *             value_utf = _utf8(value)
 *             if attr_ns_utf is None:
 */
        __pyx_t_10 = __pyx_f_4lxml_5etree__attributeValidOrRaise(__pyx_v_attr_name_utf); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":283
 *             if not is_html:
 *                 _attributeValidOrRaise(attr_name_utf)
 *             value_utf = _utf8(value)             # <<<<<<<<<<<<<<
 *             if attr_ns_utf is None:
 *                 tree.xmlNewProp(c_node, _cstr(attr_name_utf), _cstr(value_utf))
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_value_utf);
      __pyx_v_value_utf = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":284
 *                 _attributeValidOrRaise(attr_name_utf)
 *             value_utf = _utf8(value)
 *             if attr_ns_utf is None:             # <<<<<<<<<<<<<<
 *                 tree.xmlNewProp(c_node, _cstr(attr_name_utf), _cstr(value_utf))
 *             else:
 */
      __pyx_t_3 = (__pyx_v_attr_ns_utf == Py_None);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":285
 *             value_utf = _utf8(value)
 *             if attr_ns_utf is None:
 *                 tree.xmlNewProp(c_node, _cstr(attr_name_utf), _cstr(value_utf))             # <<<<<<<<<<<<<<
 *             else:
 *                 c_ns = doc._findOrBuildNodeNs(c_node, _cstr(attr_ns_utf), NULL)
 */
        xmlNewProp(__pyx_v_c_node, PyString_AS_STRING(__pyx_v_attr_name_utf), PyString_AS_STRING(__pyx_v_value_utf));
        goto __pyx_L10;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":287
 *                 tree.xmlNewProp(c_node, _cstr(attr_name_utf), _cstr(value_utf))
 *             else:
 *                 c_ns = doc._findOrBuildNodeNs(c_node, _cstr(attr_ns_utf), NULL)             # <<<<<<<<<<<<<<
 *                 tree.xmlNewNsProp(c_node, c_ns,
 *                                   _cstr(attr_name_utf), _cstr(value_utf))
 */
        __pyx_t_11 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_node, PyString_AS_STRING(__pyx_v_attr_ns_utf), NULL); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_v_c_ns = __pyx_t_11;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":289
 *                 c_ns = doc._findOrBuildNodeNs(c_node, _cstr(attr_ns_utf), NULL)
 *                 tree.xmlNewNsProp(c_node, c_ns,
 *                                   _cstr(attr_name_utf), _cstr(value_utf))             # <<<<<<<<<<<<<<
 * 
 * ctypedef struct _ns_node_ref:
 */
        xmlNewNsProp(__pyx_v_c_node, __pyx_v_c_ns, PyString_AS_STRING(__pyx_v_attr_name_utf), PyString_AS_STRING(__pyx_v_value_utf));
      }
      __pyx_L10:;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree._initNodeAttributes");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_attr_ns_utf);
  __Pyx_DECREF(__pyx_v_attr_name_utf);
  __Pyx_DECREF(__pyx_v_value_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_extra);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":295
 *     xmlNode* node
 * 
 * cdef int _removeUnusedNamespaceDeclarations(xmlNode* c_element) except -1:             # <<<<<<<<<<<<<<
 *     u"""Remove any namespace declarations from a subtree that do not used
 *     by any of its elements (or attributes).
 */

static  int __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(xmlNode *__pyx_v_c_element) {
  __pyx_t_4lxml_5etree__ns_node_ref *__pyx_v_c_ns_list;
  __pyx_t_4lxml_5etree__ns_node_ref *__pyx_v_c_nsref_ptr;
  xmlNs *__pyx_v_c_nsdef;
  xmlNode *__pyx_v_c_node;
  size_t __pyx_v_c_ns_list_size;
  size_t __pyx_v_c_ns_list_len;
  size_t __pyx_v_i;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  __Pyx_RefNannySetupContext("_removeUnusedNamespaceDeclarations");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":307
 *     cdef size_t i
 * 
 *     c_ns_list = NULL             # <<<<<<<<<<<<<<
 *     c_ns_list_size = 0
 *     c_ns_list_len  = 0
 */
  __pyx_v_c_ns_list = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":308
 * 
 *     c_ns_list = NULL
 *     c_ns_list_size = 0             # <<<<<<<<<<<<<<
 *     c_ns_list_len  = 0
 * 
 */
  __pyx_v_c_ns_list_size = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":309
 *     c_ns_list = NULL
 *     c_ns_list_size = 0
 *     c_ns_list_len  = 0             # <<<<<<<<<<<<<<
 * 
 *     if c_element.parent is not NULL and \
 */
  __pyx_v_c_ns_list_len = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":311
 *     c_ns_list_len  = 0
 * 
 *     if c_element.parent is not NULL and \             # <<<<<<<<<<<<<<
 *             c_element.parent.type == tree.XML_DOCUMENT_NODE:
 *         # include the document node
 */
  __pyx_t_1 = (__pyx_v_c_element->parent != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":312
 * 
 *     if c_element.parent is not NULL and \
 *             c_element.parent.type == tree.XML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
 *         # include the document node
 *         c_nsdef = c_element.parent.nsDef
 */
    __pyx_t_2 = (__pyx_v_c_element->parent->type == XML_DOCUMENT_NODE);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":314
 *             c_element.parent.type == tree.XML_DOCUMENT_NODE:
 *         # include the document node
 *         c_nsdef = c_element.parent.nsDef             # <<<<<<<<<<<<<<
 *         while c_nsdef is not NULL:
 *             if c_ns_list_len >= c_ns_list_size:
 */
    __pyx_v_c_nsdef = __pyx_v_c_element->parent->nsDef;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":315
 *         # include the document node
 *         c_nsdef = c_element.parent.nsDef
 *         while c_nsdef is not NULL:             # <<<<<<<<<<<<<<
 *             if c_ns_list_len >= c_ns_list_size:
 *                 if c_ns_list is NULL:
 */
    while (1) {
      __pyx_t_3 = (__pyx_v_c_nsdef != NULL);
      if (!__pyx_t_3) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":316
 *         c_nsdef = c_element.parent.nsDef
 *         while c_nsdef is not NULL:
 *             if c_ns_list_len >= c_ns_list_size:             # <<<<<<<<<<<<<<
 *                 if c_ns_list is NULL:
 *                     c_ns_list_size = 20
 */
      __pyx_t_3 = (__pyx_v_c_ns_list_len >= __pyx_v_c_ns_list_size);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":317
 *         while c_nsdef is not NULL:
 *             if c_ns_list_len >= c_ns_list_size:
 *                 if c_ns_list is NULL:             # <<<<<<<<<<<<<<
 *                     c_ns_list_size = 20
 *                 else:
 */
        __pyx_t_3 = (__pyx_v_c_ns_list == NULL);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":318
 *             if c_ns_list_len >= c_ns_list_size:
 *                 if c_ns_list is NULL:
 *                     c_ns_list_size = 20             # <<<<<<<<<<<<<<
 *                 else:
 *                     c_ns_list_size *= 2
 */
          __pyx_v_c_ns_list_size = 20;
          goto __pyx_L7;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":320
 *                     c_ns_list_size = 20
 *                 else:
 *                     c_ns_list_size *= 2             # <<<<<<<<<<<<<<
 *                 c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                     c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 */
          __pyx_v_c_ns_list_size *= 2;
        }
        __pyx_L7:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":322
 *                     c_ns_list_size *= 2
 *                 c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                     c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))             # <<<<<<<<<<<<<<
 *                 if c_nsref_ptr is NULL:
 *                     if c_ns_list is not NULL:
 */
        __pyx_v_c_nsref_ptr = ((__pyx_t_4lxml_5etree__ns_node_ref *)realloc(__pyx_v_c_ns_list, (__pyx_v_c_ns_list_size * (sizeof(__pyx_t_4lxml_5etree__ns_node_ref)))));

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":323
 *                 c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                     c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 *                 if c_nsref_ptr is NULL:             # <<<<<<<<<<<<<<
 *                     if c_ns_list is not NULL:
 *                         cstd.free(c_ns_list)
 */
        __pyx_t_3 = (__pyx_v_c_nsref_ptr == NULL);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":324
 *                     c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 *                 if c_nsref_ptr is NULL:
 *                     if c_ns_list is not NULL:             # <<<<<<<<<<<<<<
 *                         cstd.free(c_ns_list)
 *                     python.PyErr_NoMemory()
 */
          __pyx_t_3 = (__pyx_v_c_ns_list != NULL);
          if (__pyx_t_3) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":325
 *                 if c_nsref_ptr is NULL:
 *                     if c_ns_list is not NULL:
 *                         cstd.free(c_ns_list)             # <<<<<<<<<<<<<<
 *                     python.PyErr_NoMemory()
 *                     return -1
 */
            free(__pyx_v_c_ns_list);
            goto __pyx_L9;
          }
          __pyx_L9:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":326
 *                     if c_ns_list is not NULL:
 *                         cstd.free(c_ns_list)
 *                     python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *                     return -1
 *                 c_ns_list = c_nsref_ptr
 */
          __pyx_t_4 = PyErr_NoMemory(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":327
 *                         cstd.free(c_ns_list)
 *                     python.PyErr_NoMemory()
 *                     return -1             # <<<<<<<<<<<<<<
 *                 c_ns_list = c_nsref_ptr
 * 
 */
          __pyx_r = -1;
          goto __pyx_L0;
          goto __pyx_L8;
        }
        __pyx_L8:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":328
 *                     python.PyErr_NoMemory()
 *                     return -1
 *                 c_ns_list = c_nsref_ptr             # <<<<<<<<<<<<<<
 * 
 *             c_ns_list[c_ns_list_len].ns   = c_nsdef
 */
        __pyx_v_c_ns_list = __pyx_v_c_nsref_ptr;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":330
 *                 c_ns_list = c_nsref_ptr
 * 
 *             c_ns_list[c_ns_list_len].ns   = c_nsdef             # <<<<<<<<<<<<<<
 *             c_ns_list[c_ns_list_len].node = c_element.parent
 *             c_ns_list_len += 1
 */
      (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).ns = __pyx_v_c_nsdef;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":331
 * 
 *             c_ns_list[c_ns_list_len].ns   = c_nsdef
 *             c_ns_list[c_ns_list_len].node = c_element.parent             # <<<<<<<<<<<<<<
 *             c_ns_list_len += 1
 *             c_nsdef = c_nsdef.next
 */
      (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).node = __pyx_v_c_element->parent;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":332
 *             c_ns_list[c_ns_list_len].ns   = c_nsdef
 *             c_ns_list[c_ns_list_len].node = c_element.parent
 *             c_ns_list_len += 1             # <<<<<<<<<<<<<<
 *             c_nsdef = c_nsdef.next
 * 
 */
      __pyx_v_c_ns_list_len += 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":333
 *             c_ns_list[c_ns_list_len].node = c_element.parent
 *             c_ns_list_len += 1
 *             c_nsdef = c_nsdef.next             # <<<<<<<<<<<<<<
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_element, c_element, 1)
 */
      __pyx_v_c_nsdef = __pyx_v_c_nsdef->next;
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":335
 *             c_nsdef = c_nsdef.next
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_element, c_element, 1)             # <<<<<<<<<<<<<<
 *     # collect all new namespace declarations into the ns list
 *     c_nsdef = c_element.nsDef
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":337
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_element, c_element, 1)
 *     # collect all new namespace declarations into the ns list
 *     c_nsdef = c_element.nsDef             # <<<<<<<<<<<<<<
 *     while c_nsdef is not NULL:
 *         if c_ns_list_len >= c_ns_list_size:
 */
  __pyx_v_c_nsdef = __pyx_v_c_element->nsDef;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":338
 *     # collect all new namespace declarations into the ns list
 *     c_nsdef = c_element.nsDef
 *     while c_nsdef is not NULL:             # <<<<<<<<<<<<<<
 *         if c_ns_list_len >= c_ns_list_size:
 *             if c_ns_list is NULL:
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_nsdef != NULL);
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":339
 *     c_nsdef = c_element.nsDef
 *     while c_nsdef is not NULL:
 *         if c_ns_list_len >= c_ns_list_size:             # <<<<<<<<<<<<<<
 *             if c_ns_list is NULL:
 *                 c_ns_list_size = 20
 */
    __pyx_t_3 = (__pyx_v_c_ns_list_len >= __pyx_v_c_ns_list_size);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":340
 *     while c_nsdef is not NULL:
 *         if c_ns_list_len >= c_ns_list_size:
 *             if c_ns_list is NULL:             # <<<<<<<<<<<<<<
 *                 c_ns_list_size = 20
 *             else:
 */
      __pyx_t_3 = (__pyx_v_c_ns_list == NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":341
 *         if c_ns_list_len >= c_ns_list_size:
 *             if c_ns_list is NULL:
 *                 c_ns_list_size = 20             # <<<<<<<<<<<<<<
 *             else:
 *                 c_ns_list_size *= 2
 */
        __pyx_v_c_ns_list_size = 20;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":343
 *                 c_ns_list_size = 20
 *             else:
 *                 c_ns_list_size *= 2             # <<<<<<<<<<<<<<
 *             c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                 c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 */
        __pyx_v_c_ns_list_size *= 2;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":345
 *                 c_ns_list_size *= 2
 *             c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                 c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))             # <<<<<<<<<<<<<<
 *             if c_nsref_ptr is NULL:
 *                 if c_ns_list is not NULL:
 */
      __pyx_v_c_nsref_ptr = ((__pyx_t_4lxml_5etree__ns_node_ref *)realloc(__pyx_v_c_ns_list, (__pyx_v_c_ns_list_size * (sizeof(__pyx_t_4lxml_5etree__ns_node_ref)))));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":346
 *             c_nsref_ptr = <_ns_node_ref*> cstd.realloc(
 *                 c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 *             if c_nsref_ptr is NULL:             # <<<<<<<<<<<<<<
 *                 if c_ns_list is not NULL:
 *                     cstd.free(c_ns_list)
 */
      __pyx_t_3 = (__pyx_v_c_nsref_ptr == NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":347
 *                 c_ns_list, c_ns_list_size * sizeof(_ns_node_ref))
 *             if c_nsref_ptr is NULL:
 *                 if c_ns_list is not NULL:             # <<<<<<<<<<<<<<
 *                     cstd.free(c_ns_list)
 *                 python.PyErr_NoMemory()
 */
        __pyx_t_3 = (__pyx_v_c_ns_list != NULL);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":348
 *             if c_nsref_ptr is NULL:
 *                 if c_ns_list is not NULL:
 *                     cstd.free(c_ns_list)             # <<<<<<<<<<<<<<
 *                 python.PyErr_NoMemory()
 *                 return -1
 */
          free(__pyx_v_c_ns_list);
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":349
 *                 if c_ns_list is not NULL:
 *                     cstd.free(c_ns_list)
 *                 python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *                 return -1
 *             c_ns_list = c_nsref_ptr
 */
        __pyx_t_4 = PyErr_NoMemory(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":350
 *                     cstd.free(c_ns_list)
 *                 python.PyErr_NoMemory()
 *                 return -1             # <<<<<<<<<<<<<<
 *             c_ns_list = c_nsref_ptr
 * 
 */
        __pyx_r = -1;
        goto __pyx_L0;
        goto __pyx_L14;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":351
 *                 python.PyErr_NoMemory()
 *                 return -1
 *             c_ns_list = c_nsref_ptr             # <<<<<<<<<<<<<<
 * 
 *         c_ns_list[c_ns_list_len].ns   = c_nsdef
 */
      __pyx_v_c_ns_list = __pyx_v_c_nsref_ptr;
      goto __pyx_L12;
    }
    __pyx_L12:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":353
 *             c_ns_list = c_nsref_ptr
 * 
 *         c_ns_list[c_ns_list_len].ns   = c_nsdef             # <<<<<<<<<<<<<<
 *         c_ns_list[c_ns_list_len].node = c_element
 *         c_ns_list_len += 1
 */
    (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).ns = __pyx_v_c_nsdef;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":354
 * 
 *         c_ns_list[c_ns_list_len].ns   = c_nsdef
 *         c_ns_list[c_ns_list_len].node = c_element             # <<<<<<<<<<<<<<
 *         c_ns_list_len += 1
 *         c_nsdef = c_nsdef.next
 */
    (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).node = __pyx_v_c_element;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":355
 *         c_ns_list[c_ns_list_len].ns   = c_nsdef
 *         c_ns_list[c_ns_list_len].node = c_element
 *         c_ns_list_len += 1             # <<<<<<<<<<<<<<
 *         c_nsdef = c_nsdef.next
 * 
 */
    __pyx_v_c_ns_list_len += 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":356
 *         c_ns_list[c_ns_list_len].node = c_element
 *         c_ns_list_len += 1
 *         c_nsdef = c_nsdef.next             # <<<<<<<<<<<<<<
 * 
 *     # remove all namespace declarations from the list that are referenced
 */
    __pyx_v_c_nsdef = __pyx_v_c_nsdef->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":359
 * 
 *     # remove all namespace declarations from the list that are referenced
 *     if c_element.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         c_node = c_element
 *         while c_node is not NULL:
 */
  __pyx_t_3 = (__pyx_v_c_element->type == XML_ELEMENT_NODE);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":360
 *     # remove all namespace declarations from the list that are referenced
 *     if c_element.type == tree.XML_ELEMENT_NODE:
 *         c_node = c_element             # <<<<<<<<<<<<<<
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:
 */
    __pyx_v_c_node = __pyx_v_c_element;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":361
 *     if c_element.type == tree.XML_ELEMENT_NODE:
 *         c_node = c_element
 *         while c_node is not NULL:             # <<<<<<<<<<<<<<
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_list_len:
 */
    while (1) {
      __pyx_t_3 = (__pyx_v_c_node != NULL);
      if (!__pyx_t_3) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":362
 *         c_node = c_element
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < c_ns_list_len:
 *                     if c_node.ns is c_ns_list[i].ns:
 */
      __pyx_t_3 = (__pyx_v_c_node->ns != NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":363
 *         while c_node is not NULL:
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_list_len:             # <<<<<<<<<<<<<<
 *                     if c_node.ns is c_ns_list[i].ns:
 *                         c_ns_list_len -= 1
 */
        __pyx_t_5 = __pyx_v_c_ns_list_len;
        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":364
 *             if c_node.ns is not NULL:
 *                 for i from 0 <= i < c_ns_list_len:
 *                     if c_node.ns is c_ns_list[i].ns:             # <<<<<<<<<<<<<<
 *                         c_ns_list_len -= 1
 *                         c_ns_list[i].ns   = c_ns_list[c_ns_list_len].ns
 */
          __pyx_t_3 = (__pyx_v_c_node->ns == (__pyx_v_c_ns_list[__pyx_v_i]).ns);
          if (__pyx_t_3) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":365
 *                 for i from 0 <= i < c_ns_list_len:
 *                     if c_node.ns is c_ns_list[i].ns:
 *                         c_ns_list_len -= 1             # <<<<<<<<<<<<<<
 *                         c_ns_list[i].ns   = c_ns_list[c_ns_list_len].ns
 *                         c_ns_list[i].node = c_ns_list[c_ns_list_len].node
 */
            __pyx_v_c_ns_list_len -= 1;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":366
 *                     if c_node.ns is c_ns_list[i].ns:
 *                         c_ns_list_len -= 1
 *                         c_ns_list[i].ns   = c_ns_list[c_ns_list_len].ns             # <<<<<<<<<<<<<<
 *                         c_ns_list[i].node = c_ns_list[c_ns_list_len].node
 *                         c_ns_list[c_ns_list_len].ns   = NULL
 */
            (__pyx_v_c_ns_list[__pyx_v_i]).ns = (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).ns;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":367
 *                         c_ns_list_len -= 1
 *                         c_ns_list[i].ns   = c_ns_list[c_ns_list_len].ns
 *                         c_ns_list[i].node = c_ns_list[c_ns_list_len].node             # <<<<<<<<<<<<<<
 *                         c_ns_list[c_ns_list_len].ns   = NULL
 *                         c_ns_list[c_ns_list_len].node = NULL
 */
            (__pyx_v_c_ns_list[__pyx_v_i]).node = (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).node;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":368
 *                         c_ns_list[i].ns   = c_ns_list[c_ns_list_len].ns
 *                         c_ns_list[i].node = c_ns_list[c_ns_list_len].node
 *                         c_ns_list[c_ns_list_len].ns   = NULL             # <<<<<<<<<<<<<<
 *                         c_ns_list[c_ns_list_len].node = NULL
 *                         break
 */
            (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).ns = NULL;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":369
 *                         c_ns_list[i].node = c_ns_list[c_ns_list_len].node
 *                         c_ns_list[c_ns_list_len].ns   = NULL
 *                         c_ns_list[c_ns_list_len].node = NULL             # <<<<<<<<<<<<<<
 *                         break
 *             if c_node is c_element:
 */
            (__pyx_v_c_ns_list[__pyx_v_c_ns_list_len]).node = NULL;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":370
 *                         c_ns_list[c_ns_list_len].ns   = NULL
 *                         c_ns_list[c_ns_list_len].node = NULL
 *                         break             # <<<<<<<<<<<<<<
 *             if c_node is c_element:
 *                 # continue with attributes
 */
            goto __pyx_L21_break;
            goto __pyx_L22;
          }
          __pyx_L22:;
        }
        __pyx_L21_break:;
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":371
 *                         c_ns_list[c_ns_list_len].node = NULL
 *                         break
 *             if c_node is c_element:             # <<<<<<<<<<<<<<
 *                 # continue with attributes
 *                 c_node = <xmlNode*>c_element.properties
 */
      __pyx_t_3 = (__pyx_v_c_node == __pyx_v_c_element);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":373
 *             if c_node is c_element:
 *                 # continue with attributes
 *                 c_node = <xmlNode*>c_element.properties             # <<<<<<<<<<<<<<
 *             else:
 *                 c_node = c_node.next
 */
        __pyx_v_c_node = ((xmlNode *)__pyx_v_c_element->properties);
        goto __pyx_L23;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":375
 *                 c_node = <xmlNode*>c_element.properties
 *             else:
 *                 c_node = c_node.next             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_element)
 * 
 */
        __pyx_v_c_node = __pyx_v_c_node->next;
      }
      __pyx_L23:;
    }
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":376
 *             else:
 *                 c_node = c_node.next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_element)             # <<<<<<<<<<<<<<
 * 
 *     if c_ns_list is NULL:
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":378
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_element)
 * 
 *     if c_ns_list is NULL:             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_3 = (__pyx_v_c_ns_list == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":379
 * 
 *     if c_ns_list is NULL:
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # free all namespace declarations that remained in the list
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L24;
  }
  __pyx_L24:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":382
 * 
 *     # free all namespace declarations that remained in the list
 *     for i from 0 <= i < c_ns_list_len:             # <<<<<<<<<<<<<<
 *         c_node = c_ns_list[i].node
 *         c_nsdef = c_node.nsDef
 */
  __pyx_t_5 = __pyx_v_c_ns_list_len;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":383
 *     # free all namespace declarations that remained in the list
 *     for i from 0 <= i < c_ns_list_len:
 *         c_node = c_ns_list[i].node             # <<<<<<<<<<<<<<
 *         c_nsdef = c_node.nsDef
 *         if c_nsdef is c_ns_list[i].ns:
 */
    __pyx_v_c_node = (__pyx_v_c_ns_list[__pyx_v_i]).node;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":384
 *     for i from 0 <= i < c_ns_list_len:
 *         c_node = c_ns_list[i].node
 *         c_nsdef = c_node.nsDef             # <<<<<<<<<<<<<<
 *         if c_nsdef is c_ns_list[i].ns:
 *             c_node.nsDef = c_node.nsDef.next
 */
    __pyx_v_c_nsdef = __pyx_v_c_node->nsDef;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":385
 *         c_node = c_ns_list[i].node
 *         c_nsdef = c_node.nsDef
 *         if c_nsdef is c_ns_list[i].ns:             # <<<<<<<<<<<<<<
 *             c_node.nsDef = c_node.nsDef.next
 *         else:
 */
    __pyx_t_3 = (__pyx_v_c_nsdef == (__pyx_v_c_ns_list[__pyx_v_i]).ns);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":386
 *         c_nsdef = c_node.nsDef
 *         if c_nsdef is c_ns_list[i].ns:
 *             c_node.nsDef = c_node.nsDef.next             # <<<<<<<<<<<<<<
 *         else:
 *             while c_nsdef.next is not c_ns_list[i].ns:
 */
      __pyx_v_c_node->nsDef = __pyx_v_c_node->nsDef->next;
      goto __pyx_L27;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":388
 *             c_node.nsDef = c_node.nsDef.next
 *         else:
 *             while c_nsdef.next is not c_ns_list[i].ns:             # <<<<<<<<<<<<<<
 *                 c_nsdef = c_nsdef.next
 *             c_nsdef.next = c_nsdef.next.next
 */
      while (1) {
        __pyx_t_3 = (__pyx_v_c_nsdef->next != (__pyx_v_c_ns_list[__pyx_v_i]).ns);
        if (!__pyx_t_3) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":389
 *         else:
 *             while c_nsdef.next is not c_ns_list[i].ns:
 *                 c_nsdef = c_nsdef.next             # <<<<<<<<<<<<<<
 *             c_nsdef.next = c_nsdef.next.next
 *         tree.xmlFreeNs(c_ns_list[i].ns)
 */
        __pyx_v_c_nsdef = __pyx_v_c_nsdef->next;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":390
 *             while c_nsdef.next is not c_ns_list[i].ns:
 *                 c_nsdef = c_nsdef.next
 *             c_nsdef.next = c_nsdef.next.next             # <<<<<<<<<<<<<<
 *         tree.xmlFreeNs(c_ns_list[i].ns)
 * 
 */
      __pyx_v_c_nsdef->next = __pyx_v_c_nsdef->next->next;
    }
    __pyx_L27:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":391
 *                 c_nsdef = c_nsdef.next
 *             c_nsdef.next = c_nsdef.next.next
 *         tree.xmlFreeNs(c_ns_list[i].ns)             # <<<<<<<<<<<<<<
 * 
 *     if c_ns_list is not NULL:
 */
    xmlFreeNs((__pyx_v_c_ns_list[__pyx_v_i]).ns);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":393
 *         tree.xmlFreeNs(c_ns_list[i].ns)
 * 
 *     if c_ns_list is not NULL:             # <<<<<<<<<<<<<<
 *         cstd.free(c_ns_list)
 *     return 0
 */
  __pyx_t_3 = (__pyx_v_c_ns_list != NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":394
 * 
 *     if c_ns_list is not NULL:
 *         cstd.free(c_ns_list)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    free(__pyx_v_c_ns_list);
    goto __pyx_L30;
  }
  __pyx_L30:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":395
 *     if c_ns_list is not NULL:
 *         cstd.free(c_ns_list)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _replaceNodeByChildren(_Document doc, xmlNode* c_node) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._removeUnusedNamespaceDeclarations");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":397
 *     return 0
 * 
 * cdef int _replaceNodeByChildren(_Document doc, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
 *     # NOTE: this does not deallocate the node, just unlink it!
 *     cdef xmlNode* c_parent
 */

static  int __pyx_f_4lxml_5etree__replaceNodeByChildren(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_parent;
  xmlNode *__pyx_v_c_child;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_replaceNodeByChildren");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":401
 *     cdef xmlNode* c_parent
 *     cdef xmlNode* c_child
 *     if c_node.children is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlUnlinkNode(c_node)
 *         return 0
 */
  __pyx_t_1 = (__pyx_v_c_node->children == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":402
 *     cdef xmlNode* c_child
 *     if c_node.children is NULL:
 *         tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    xmlUnlinkNode(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":403
 *     if c_node.children is NULL:
 *         tree.xmlUnlinkNode(c_node)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     c_parent = c_node.parent
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":405
 *         return 0
 * 
 *     c_parent = c_node.parent             # <<<<<<<<<<<<<<
 *     # fix parent links of children
 *     c_child = c_node.children
 */
  __pyx_v_c_parent = __pyx_v_c_node->parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":407
 *     c_parent = c_node.parent
 *     # fix parent links of children
 *     c_child = c_node.children             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         c_child.parent = c_parent
 */
  __pyx_v_c_child = __pyx_v_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":408
 *     # fix parent links of children
 *     c_child = c_node.children
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         c_child.parent = c_parent
 *         c_child = c_child.next
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":409
 *     c_child = c_node.children
 *     while c_child is not NULL:
 *         c_child.parent = c_parent             # <<<<<<<<<<<<<<
 *         c_child = c_child.next
 * 
 */
    __pyx_v_c_child->parent = __pyx_v_c_parent;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":410
 *     while c_child is not NULL:
 *         c_child.parent = c_parent
 *         c_child = c_child.next             # <<<<<<<<<<<<<<
 * 
 *     # fix namespace references of children if their parent's namespace
 */
    __pyx_v_c_child = __pyx_v_c_child->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":414
 *     # fix namespace references of children if their parent's namespace
 *     # declarations get lost
 *     if c_node.nsDef is not NULL:             # <<<<<<<<<<<<<<
 *         c_child = c_node.children
 *         while c_child is not NULL:
 */
  __pyx_t_1 = (__pyx_v_c_node->nsDef != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":415
 *     # declarations get lost
 *     if c_node.nsDef is not NULL:
 *         c_child = c_node.children             # <<<<<<<<<<<<<<
 *         while c_child is not NULL:
 *             moveNodeToDocument(doc, doc._c_doc, c_child)
 */
    __pyx_v_c_child = __pyx_v_c_node->children;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":416
 *     if c_node.nsDef is not NULL:
 *         c_child = c_node.children
 *         while c_child is not NULL:             # <<<<<<<<<<<<<<
 *             moveNodeToDocument(doc, doc._c_doc, c_child)
 *             c_child = c_child.next
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":417
 *         c_child = c_node.children
 *         while c_child is not NULL:
 *             moveNodeToDocument(doc, doc._c_doc, c_child)             # <<<<<<<<<<<<<<
 *             c_child = c_child.next
 * 
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_doc->_c_doc, __pyx_v_c_child); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":418
 *         while c_child is not NULL:
 *             moveNodeToDocument(doc, doc._c_doc, c_child)
 *             c_child = c_child.next             # <<<<<<<<<<<<<<
 * 
 *     # fix sibling links to/from child slice
 */
      __pyx_v_c_child = __pyx_v_c_child->next;
    }
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":421
 * 
 *     # fix sibling links to/from child slice
 *     if c_node.prev is NULL:             # <<<<<<<<<<<<<<
 *         c_parent.children = c_node.children
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node->prev == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":422
 *     # fix sibling links to/from child slice
 *     if c_node.prev is NULL:
 *         c_parent.children = c_node.children             # <<<<<<<<<<<<<<
 *     else:
 *         c_node.prev.next = c_node.children
 */
    __pyx_v_c_parent->children = __pyx_v_c_node->children;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":424
 *         c_parent.children = c_node.children
 *     else:
 *         c_node.prev.next = c_node.children             # <<<<<<<<<<<<<<
 *         c_node.children.prev = c_node.prev
 *     if c_node.next is NULL:
 */
    __pyx_v_c_node->prev->next = __pyx_v_c_node->children;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":425
 *     else:
 *         c_node.prev.next = c_node.children
 *         c_node.children.prev = c_node.prev             # <<<<<<<<<<<<<<
 *     if c_node.next is NULL:
 *         c_parent.last = c_node.last
 */
    __pyx_v_c_node->children->prev = __pyx_v_c_node->prev;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":426
 *         c_node.prev.next = c_node.children
 *         c_node.children.prev = c_node.prev
 *     if c_node.next is NULL:             # <<<<<<<<<<<<<<
 *         c_parent.last = c_node.last
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node->next == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":427
 *         c_node.children.prev = c_node.prev
 *     if c_node.next is NULL:
 *         c_parent.last = c_node.last             # <<<<<<<<<<<<<<
 *     else:
 *         c_node.next.prev = c_node.last
 */
    __pyx_v_c_parent->last = __pyx_v_c_node->last;
    goto __pyx_L10;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":429
 *         c_parent.last = c_node.last
 *     else:
 *         c_node.next.prev = c_node.last             # <<<<<<<<<<<<<<
 *         c_node.last.next = c_node.next
 * 
 */
    __pyx_v_c_node->next->prev = __pyx_v_c_node->last;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":430
 *     else:
 *         c_node.next.prev = c_node.last
 *         c_node.last.next = c_node.next             # <<<<<<<<<<<<<<
 * 
 *     # unlink c_node
 */
    __pyx_v_c_node->last->next = __pyx_v_c_node->next;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":433
 * 
 *     # unlink c_node
 *     c_node.children = c_node.last = NULL             # <<<<<<<<<<<<<<
 *     c_node.parent = c_node.next = c_node.prev = NULL
 *     return 0
 */
  __pyx_v_c_node->children = NULL;
  __pyx_v_c_node->last = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":434
 *     # unlink c_node
 *     c_node.children = c_node.last = NULL
 *     c_node.parent = c_node.next = c_node.prev = NULL             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_c_node->parent = NULL;
  __pyx_v_c_node->next = NULL;
  __pyx_v_c_node->prev = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":435
 *     c_node.children = c_node.last = NULL
 *     c_node.parent = c_node.next = c_node.prev = NULL
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef object _attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._replaceNodeByChildren");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":437
 *     return 0
 * 
 * cdef object _attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):             # <<<<<<<<<<<<<<
 *     cdef char* value
 *     cdef char* c_href
 */

static  PyObject *__pyx_f_4lxml_5etree__attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_node) {
  char *__pyx_v_value;
  char *__pyx_v_c_href;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_attributeValue");
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":440
 *     cdef char* value
 *     cdef char* c_href
 *     c_href = _getNs(<xmlNode*>c_attrib_node)             # <<<<<<<<<<<<<<
 *     value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href)
 *     try:
 */
  __pyx_v_c_href = _getNs(((xmlNode *)__pyx_v_c_attrib_node));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":441
 *     cdef char* c_href
 *     c_href = _getNs(<xmlNode*>c_attrib_node)
 *     value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href)             # <<<<<<<<<<<<<<
 *     try:
 *         result = funicode(value)
 */
  __pyx_v_value = xmlGetNsProp(__pyx_v_c_element, __pyx_v_c_attrib_node->name, __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":442
 *     c_href = _getNs(<xmlNode*>c_attrib_node)
 *     value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href)
 *     try:             # <<<<<<<<<<<<<<
 *         result = funicode(value)
 *     finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":443
 *     value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href)
 *     try:
 *         result = funicode(value)             # <<<<<<<<<<<<<<
 *     finally:
 *         tree.xmlFree(value)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L4;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":445
 *         result = funicode(value)
 *     finally:
 *         tree.xmlFree(value)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    xmlFree(__pyx_v_value);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":446
 *     finally:
 *         tree.xmlFree(value)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef object _attributeValueFromNsName(xmlNode* c_element,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._attributeValue");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":448
 *     return result
 * 
 * cdef object _attributeValueFromNsName(xmlNode* c_element,             # <<<<<<<<<<<<<<
 *                                       char* c_href, char* c_name):
 *     cdef char* c_result = tree.xmlGetNsProp(c_element, c_name, c_href)
 */

static  PyObject *__pyx_f_4lxml_5etree__attributeValueFromNsName(xmlNode *__pyx_v_c_element, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  char *__pyx_v_c_result;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_attributeValueFromNsName");
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":450
 * cdef object _attributeValueFromNsName(xmlNode* c_element,
 *                                       char* c_href, char* c_name):
 *     cdef char* c_result = tree.xmlGetNsProp(c_element, c_name, c_href)             # <<<<<<<<<<<<<<
 *     if c_result is NULL:
 *         return None
 */
  __pyx_v_c_result = xmlGetNsProp(__pyx_v_c_element, __pyx_v_c_name, __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":451
 *                                       char* c_href, char* c_name):
 *     cdef char* c_result = tree.xmlGetNsProp(c_element, c_name, c_href)
 *     if c_result is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     try:
 */
  __pyx_t_1 = (__pyx_v_c_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":452
 *     cdef char* c_result = tree.xmlGetNsProp(c_element, c_name, c_href)
 *     if c_result is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     try:
 *         result = funicode(c_result)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":453
 *     if c_result is NULL:
 *         return None
 *     try:             # <<<<<<<<<<<<<<
 *         result = funicode(c_result)
 *     finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":454
 *         return None
 *     try:
 *         result = funicode(c_result)             # <<<<<<<<<<<<<<
 *     finally:
 *         tree.xmlFree(c_result)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L6;
    __pyx_L5: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":456
 *         result = funicode(c_result)
 *     finally:
 *         tree.xmlFree(c_result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    xmlFree(__pyx_v_c_result);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":457
 *     finally:
 *         tree.xmlFree(c_result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef object _getNodeAttributeValue(xmlNode* c_node, key, default):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._attributeValueFromNsName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":459
 *     return result
 * 
 * cdef object _getNodeAttributeValue(xmlNode* c_node, key, default):             # <<<<<<<<<<<<<<
 *     cdef char* c_result
 *     cdef char* c_href
 */

static  PyObject *__pyx_f_4lxml_5etree__getNodeAttributeValue(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
  char *__pyx_v_c_result;
  char *__pyx_v_c_href;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_getNodeAttributeValue");
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":462
 *     cdef char* c_result
 *     cdef char* c_href
 *     ns, tag = _getNsTag(key)             # <<<<<<<<<<<<<<
 *     c_href = NULL if ns is None else _cstr(ns)
 *     c_result = tree.xmlGetNsProp(c_node, _cstr(tag), c_href)
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":463
 *     cdef char* c_href
 *     ns, tag = _getNsTag(key)
 *     c_href = NULL if ns is None else _cstr(ns)             # <<<<<<<<<<<<<<
 *     c_result = tree.xmlGetNsProp(c_node, _cstr(tag), c_href)
 *     if c_result is NULL:
 */
  __pyx_t_6 = (__pyx_v_ns == Py_None);
  if (__pyx_t_6) {
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_5 = PyString_AS_STRING(__pyx_v_ns);
  }
  __pyx_v_c_href = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":464
 *     ns, tag = _getNsTag(key)
 *     c_href = NULL if ns is None else _cstr(ns)
 *     c_result = tree.xmlGetNsProp(c_node, _cstr(tag), c_href)             # <<<<<<<<<<<<<<
 *     if c_result is NULL:
 *         # XXX free namespace that is not in use..?
 */
  __pyx_v_c_result = xmlGetNsProp(__pyx_v_c_node, PyString_AS_STRING(__pyx_v_tag), __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":465
 *     c_href = NULL if ns is None else _cstr(ns)
 *     c_result = tree.xmlGetNsProp(c_node, _cstr(tag), c_href)
 *     if c_result is NULL:             # <<<<<<<<<<<<<<
 *         # XXX free namespace that is not in use..?
 *         return default
 */
  __pyx_t_6 = (__pyx_v_c_result == NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":467
 *     if c_result is NULL:
 *         # XXX free namespace that is not in use..?
 *         return default             # <<<<<<<<<<<<<<
 *     try:
 *         result = funicode(c_result)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":468
 *         # XXX free namespace that is not in use..?
 *         return default
 *     try:             # <<<<<<<<<<<<<<
 *         result = funicode(c_result)
 *     finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":469
 *         return default
 *     try:
 *         result = funicode(c_result)             # <<<<<<<<<<<<<<
 *     finally:
 *         tree.xmlFree(c_result)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_result); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L6;
    __pyx_L5: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":471
 *         result = funicode(c_result)
 *     finally:
 *         tree.xmlFree(c_result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    xmlFree(__pyx_v_c_result);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":472
 *     finally:
 *         tree.xmlFree(c_result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _getAttributeValue(_Element element, key, default):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._getNodeAttributeValue");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":474
 *     return result
 * 
 * cdef inline object _getAttributeValue(_Element element, key, default):             # <<<<<<<<<<<<<<
 *     return _getNodeAttributeValue(element._c_node, key, default)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_getAttributeValue");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":475
 * 
 * cdef inline object _getAttributeValue(_Element element, key, default):
 *     return _getNodeAttributeValue(element._c_node, key, default)             # <<<<<<<<<<<<<<
 * 
 * cdef int _setAttributeValue(_Element element, key, value) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNodeAttributeValue(__pyx_v_element->_c_node, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._getAttributeValue");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":477
 *     return _getNodeAttributeValue(element._c_node, key, default)
 * 
 * cdef int _setAttributeValue(_Element element, key, value) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNs* c_ns
 *     cdef char* c_value
 */

static  int __pyx_f_4lxml_5etree__setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  xmlNs *__pyx_v_c_ns;
  char *__pyx_v_c_value;
  char *__pyx_v_c_tag;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  xmlNs *__pyx_t_7;
  __Pyx_RefNannySetupContext("_setAttributeValue");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":481
 *     cdef char* c_value
 *     cdef char* c_tag
 *     ns, tag = _getNsTag(key)             # <<<<<<<<<<<<<<
 *     if not element._doc._parser._for_html:
 *         _attributeValidOrRaise(tag)
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":482
 *     cdef char* c_tag
 *     ns, tag = _getNsTag(key)
 *     if not element._doc._parser._for_html:             # <<<<<<<<<<<<<<
 *         _attributeValidOrRaise(tag)
 *     c_tag = _cstr(tag)
 */
  __pyx_t_5 = (!__pyx_v_element->_doc->_parser->_for_html);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":483
 *     ns, tag = _getNsTag(key)
 *     if not element._doc._parser._for_html:
 *         _attributeValidOrRaise(tag)             # <<<<<<<<<<<<<<
 *     c_tag = _cstr(tag)
 *     if isinstance(value, QName):
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__attributeValidOrRaise(__pyx_v_tag); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":484
 *     if not element._doc._parser._for_html:
 *         _attributeValidOrRaise(tag)
 *     c_tag = _cstr(tag)             # <<<<<<<<<<<<<<
 *     if isinstance(value, QName):
 *         value = _resolveQNameText(element, value)
 */
  __pyx_v_c_tag = PyString_AS_STRING(__pyx_v_tag);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":485
 *         _attributeValidOrRaise(tag)
 *     c_tag = _cstr(tag)
 *     if isinstance(value, QName):             # <<<<<<<<<<<<<<
 *         value = _resolveQNameText(element, value)
 *     else:
 */
  __pyx_t_5 = PyObject_TypeCheck(__pyx_v_value, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":486
 *     c_tag = _cstr(tag)
 *     if isinstance(value, QName):
 *         value = _resolveQNameText(element, value)             # <<<<<<<<<<<<<<
 *     else:
 *         value = _utf8(value)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__resolveQNameText(__pyx_v_element, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":488
 *         value = _resolveQNameText(element, value)
 *     else:
 *         value = _utf8(value)             # <<<<<<<<<<<<<<
 *     c_value = _cstr(value)
 *     if ns is None:
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":489
 *     else:
 *         value = _utf8(value)
 *     c_value = _cstr(value)             # <<<<<<<<<<<<<<
 *     if ns is None:
 *         c_ns = NULL
 */
  __pyx_v_c_value = PyString_AS_STRING(__pyx_v_value);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":490
 *         value = _utf8(value)
 *     c_value = _cstr(value)
 *     if ns is None:             # <<<<<<<<<<<<<<
 *         c_ns = NULL
 *     else:
 */
  __pyx_t_5 = (__pyx_v_ns == Py_None);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":491
 *     c_value = _cstr(value)
 *     if ns is None:
 *         c_ns = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         c_ns = element._doc._findOrBuildNodeNs(element._c_node,
 */
    __pyx_v_c_ns = NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":494
 *     else:
 *         c_ns = element._doc._findOrBuildNodeNs(element._c_node,
 *                                                _cstr(ns), NULL)             # <<<<<<<<<<<<<<
 *     tree.xmlSetNsProp(element._c_node, c_ns, c_tag, c_value)
 *     return 0
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_element->_doc->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, PyString_AS_STRING(__pyx_v_ns), NULL); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_ns = __pyx_t_7;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":495
 *         c_ns = element._doc._findOrBuildNodeNs(element._c_node,
 *                                                _cstr(ns), NULL)
 *     tree.xmlSetNsProp(element._c_node, c_ns, c_tag, c_value)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  xmlSetNsProp(__pyx_v_element->_c_node, __pyx_v_c_ns, __pyx_v_c_tag, __pyx_v_c_value);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":496
 *                                                _cstr(ns), NULL)
 *     tree.xmlSetNsProp(element._c_node, c_ns, c_tag, c_value)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _delAttribute(_Element element, key) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._setAttributeValue");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":498
 *     return 0
 * 
 * cdef int _delAttribute(_Element element, key) except -1:             # <<<<<<<<<<<<<<
 *     cdef char* c_href
 *     ns, tag = _getNsTag(key)
 */

static  int __pyx_f_4lxml_5etree__delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
  char *__pyx_v_c_href;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_delAttribute");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_key);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":500
 * cdef int _delAttribute(_Element element, key) except -1:
 *     cdef char* c_href
 *     ns, tag = _getNsTag(key)             # <<<<<<<<<<<<<<
 *     c_href = NULL if ns is None else _cstr(ns)
 *     if _delAttributeFromNsName(element._c_node, c_href, _cstr(tag)):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":501
 *     cdef char* c_href
 *     ns, tag = _getNsTag(key)
 *     c_href = NULL if ns is None else _cstr(ns)             # <<<<<<<<<<<<<<
 *     if _delAttributeFromNsName(element._c_node, c_href, _cstr(tag)):
 *         raise KeyError, key
 */
  __pyx_t_6 = (__pyx_v_ns == Py_None);
  if (__pyx_t_6) {
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_5 = PyString_AS_STRING(__pyx_v_ns);
  }
  __pyx_v_c_href = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":502
 *     ns, tag = _getNsTag(key)
 *     c_href = NULL if ns is None else _cstr(ns)
 *     if _delAttributeFromNsName(element._c_node, c_href, _cstr(tag)):             # <<<<<<<<<<<<<<
 *         raise KeyError, key
 *     return 0
 */
  __pyx_t_7 = __pyx_f_4lxml_5etree__delAttributeFromNsName(__pyx_v_element->_c_node, __pyx_v_c_href, PyString_AS_STRING(__pyx_v_tag));
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":503
 *     c_href = NULL if ns is None else _cstr(ns)
 *     if _delAttributeFromNsName(element._c_node, c_href, _cstr(tag)):
 *         raise KeyError, key             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":504
 *     if _delAttributeFromNsName(element._c_node, c_href, _cstr(tag)):
 *         raise KeyError, key
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _delAttributeFromNsName(xmlNode* c_node, char* c_href, char* c_name):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._delAttribute");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":506
 *     return 0
 * 
 * cdef int _delAttributeFromNsName(xmlNode* c_node, char* c_href, char* c_name):             # <<<<<<<<<<<<<<
 *     cdef xmlAttr* c_attr
 *     c_attr = tree.xmlHasNsProp(c_node, c_name, c_href)
 */

static  int __pyx_f_4lxml_5etree__delAttributeFromNsName(xmlNode *__pyx_v_c_node, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  xmlAttr *__pyx_v_c_attr;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_delAttributeFromNsName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":508
 * cdef int _delAttributeFromNsName(xmlNode* c_node, char* c_href, char* c_name):
 *     cdef xmlAttr* c_attr
 *     c_attr = tree.xmlHasNsProp(c_node, c_name, c_href)             # <<<<<<<<<<<<<<
 *     if c_attr is NULL:
 *         # XXX free namespace that is not in use..?
 */
  __pyx_v_c_attr = xmlHasNsProp(__pyx_v_c_node, __pyx_v_c_name, __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":509
 *     cdef xmlAttr* c_attr
 *     c_attr = tree.xmlHasNsProp(c_node, c_name, c_href)
 *     if c_attr is NULL:             # <<<<<<<<<<<<<<
 *         # XXX free namespace that is not in use..?
 *         return -1
 */
  __pyx_t_1 = (__pyx_v_c_attr == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":511
 *     if c_attr is NULL:
 *         # XXX free namespace that is not in use..?
 *         return -1             # <<<<<<<<<<<<<<
 *     tree.xmlRemoveProp(c_attr)
 *     return 0
 */
    __pyx_r = -1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":512
 *         # XXX free namespace that is not in use..?
 *         return -1
 *     tree.xmlRemoveProp(c_attr)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  xmlRemoveProp(__pyx_v_c_attr);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":513
 *         return -1
 *     tree.xmlRemoveProp(c_attr)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef object _collectAttributes(xmlNode* c_node, int collecttype):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":515
 *     return 0
 * 
 * cdef object _collectAttributes(xmlNode* c_node, int collecttype):             # <<<<<<<<<<<<<<
 *     u"""Collect all attributes of a node in a list.  Depending on collecttype,
 *     it collects either the name (1), the value (2) or the name-value tuples.
 */

static  PyObject *__pyx_f_4lxml_5etree__collectAttributes(xmlNode *__pyx_v_c_node, int __pyx_v_collecttype) {
  Py_ssize_t __pyx_v_count;
  xmlAttr *__pyx_v_c_attr;
  PyObject *__pyx_v_attributes;
  PyObject *__pyx_v_item;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_collectAttributes");
  __pyx_v_attributes = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":521
 *     cdef Py_ssize_t count
 *     cdef xmlAttr* c_attr
 *     c_attr = c_node.properties             # <<<<<<<<<<<<<<
 *     count = 0
 *     while c_attr is not NULL:
 */
  __pyx_v_c_attr = __pyx_v_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":522
 *     cdef xmlAttr* c_attr
 *     c_attr = c_node.properties
 *     count = 0             # <<<<<<<<<<<<<<
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":523
 *     c_attr = c_node.properties
 *     count = 0
 *     while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             count = count + 1
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":524
 *     count = 0
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *             count = count + 1
 *         c_attr = c_attr.next
 */
    __pyx_t_1 = (__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":525
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             count = count + 1             # <<<<<<<<<<<<<<
 *         c_attr = c_attr.next
 * 
 */
      __pyx_v_count = (__pyx_v_count + 1);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":526
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             count = count + 1
 *         c_attr = c_attr.next             # <<<<<<<<<<<<<<
 * 
 *     if count == 0:
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":528
 *         c_attr = c_attr.next
 * 
 *     if count == 0:             # <<<<<<<<<<<<<<
 *         return []
 * 
 */
  __pyx_t_1 = (__pyx_v_count == 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":529
 * 
 *     if count == 0:
 *         return []             # <<<<<<<<<<<<<<
 * 
 *     attributes = python.PyList_New(count)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_r = ((PyObject *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":531
 *         return []
 * 
 *     attributes = python.PyList_New(count)             # <<<<<<<<<<<<<<
 *     c_attr = c_node.properties
 *     count = 0
 */
  __pyx_t_2 = PyList_New(__pyx_v_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_attributes);
  __pyx_v_attributes = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":532
 * 
 *     attributes = python.PyList_New(count)
 *     c_attr = c_node.properties             # <<<<<<<<<<<<<<
 *     count = 0
 *     while c_attr is not NULL:
 */
  __pyx_v_c_attr = __pyx_v_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":533
 *     attributes = python.PyList_New(count)
 *     c_attr = c_node.properties
 *     count = 0             # <<<<<<<<<<<<<<
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":534
 *     c_attr = c_node.properties
 *     count = 0
 *     while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             if collecttype == 1:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":535
 *     count = 0
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *             if collecttype == 1:
 *                 item = _namespacedName(<xmlNode*>c_attr)
 */
    __pyx_t_1 = (__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":536
 *     while c_attr is not NULL:
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             if collecttype == 1:             # <<<<<<<<<<<<<<
 *                 item = _namespacedName(<xmlNode*>c_attr)
 *             elif collecttype == 2:
 */
      switch (__pyx_v_collecttype) {
        case 1:

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":537
 *         if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *             if collecttype == 1:
 *                 item = _namespacedName(<xmlNode*>c_attr)             # <<<<<<<<<<<<<<
 *             elif collecttype == 2:
 *                 item = _attributeValue(c_node, c_attr)
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_item);
        __pyx_v_item = __pyx_t_2;
        __pyx_t_2 = 0;
        break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":538
 *             if collecttype == 1:
 *                 item = _namespacedName(<xmlNode*>c_attr)
 *             elif collecttype == 2:             # <<<<<<<<<<<<<<
 *                 item = _attributeValue(c_node, c_attr)
 *             else:
 */
        case 2:

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":539
 *                 item = _namespacedName(<xmlNode*>c_attr)
 *             elif collecttype == 2:
 *                 item = _attributeValue(c_node, c_attr)             # <<<<<<<<<<<<<<
 *             else:
 *                 item = (_namespacedName(<xmlNode*>c_attr),
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_item);
        __pyx_v_item = __pyx_t_2;
        __pyx_t_2 = 0;
        break;
        default:

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":541
 *                 item = _attributeValue(c_node, c_attr)
 *             else:
 *                 item = (_namespacedName(<xmlNode*>c_attr),             # <<<<<<<<<<<<<<
 *                         _attributeValue(c_node, c_attr))
 * 
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":542
 *             else:
 *                 item = (_namespacedName(<xmlNode*>c_attr),
 *                         _attributeValue(c_node, c_attr))             # <<<<<<<<<<<<<<
 * 
 *             python.Py_INCREF(item)
 */
        __pyx_t_3 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_2 = 0;
        __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_v_item);
        __pyx_v_item = __pyx_t_4;
        __pyx_t_4 = 0;
        break;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":544
 *                         _attributeValue(c_node, c_attr))
 * 
 *             python.Py_INCREF(item)             # <<<<<<<<<<<<<<
 *             python.PyList_SET_ITEM(attributes, count, item)
 *             count = count + 1
 */
      Py_INCREF(__pyx_v_item);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":545
 * 
 *             python.Py_INCREF(item)
 *             python.PyList_SET_ITEM(attributes, count, item)             # <<<<<<<<<<<<<<
 *             count = count + 1
 *         c_attr = c_attr.next
 */
      PyList_SET_ITEM(__pyx_v_attributes, __pyx_v_count, __pyx_v_item);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":546
 *             python.Py_INCREF(item)
 *             python.PyList_SET_ITEM(attributes, count, item)
 *             count = count + 1             # <<<<<<<<<<<<<<
 *         c_attr = c_attr.next
 *     return attributes
 */
      __pyx_v_count = (__pyx_v_count + 1);
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":547
 *             python.PyList_SET_ITEM(attributes, count, item)
 *             count = count + 1
 *         c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *     return attributes
 * 
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":548
 *             count = count + 1
 *         c_attr = c_attr.next
 *     return attributes             # <<<<<<<<<<<<<<
 * 
 * cdef object __RE_XML_ENCODING
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_attributes);
  __pyx_r = __pyx_v_attributes;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._collectAttributes");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_attributes);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":560
 * __HAS_XML_ENCODING = __RE_XML_ENCODING.match
 * 
 * cdef object _stripEncodingDeclaration(object xml_string):             # <<<<<<<<<<<<<<
 *     # this is a hack to remove the XML encoding declaration from unicode
 *     return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)
 */

static  PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_v_xml_string) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_stripEncodingDeclaration");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":562
 * cdef object _stripEncodingDeclaration(object xml_string):
 *     # this is a hack to remove the XML encoding declaration from unicode
 *     return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)             # <<<<<<<<<<<<<<
 * 
 * cdef int _hasEncodingDeclaration(object xml_string):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_10));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_u_10));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_10));
  __Pyx_INCREF(__pyx_v_xml_string);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_xml_string);
  __Pyx_GIVEREF(__pyx_v_xml_string);
  __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._stripEncodingDeclaration");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":564
 *     return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)
 * 
 * cdef int _hasEncodingDeclaration(object xml_string):             # <<<<<<<<<<<<<<
 *     # check if a (unicode) string has an XML encoding declaration
 *     return __HAS_XML_ENCODING(xml_string) is not None
 */

static  int __pyx_f_4lxml_5etree__hasEncodingDeclaration(PyObject *__pyx_v_xml_string) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_hasEncodingDeclaration");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":566
 * cdef int _hasEncodingDeclaration(object xml_string):
 *     # check if a (unicode) string has an XML encoding declaration
 *     return __HAS_XML_ENCODING(xml_string) is not None             # <<<<<<<<<<<<<<
 * 
 * cdef object _stripDeclaration(object xml_string):
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xml_string);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_xml_string);
  __Pyx_GIVEREF(__pyx_v_xml_string);
  __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___HAS_XML_ENCODING, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._hasEncodingDeclaration");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":568
 *     return __HAS_XML_ENCODING(xml_string) is not None
 * 
 * cdef object _stripDeclaration(object xml_string):             # <<<<<<<<<<<<<<
 *     # this is a hack to remove the XML declaration when we encode to UTF-8
 *     xml_string = xml_string.strip()
 */

static  PyObject *__pyx_f_4lxml_5etree__stripDeclaration(PyObject *__pyx_v_xml_string) {
  PyObject *__pyx_v_i;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __Pyx_RefNannySetupContext("_stripDeclaration");
  __Pyx_INCREF(__pyx_v_xml_string);
  __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":570
 * cdef object _stripDeclaration(object xml_string):
 *     # this is a hack to remove the XML declaration when we encode to UTF-8
 *     xml_string = xml_string.strip()             # <<<<<<<<<<<<<<
 *     if xml_string[:5] == '<?xml':
 *         i = xml_string.find('?>')
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_xml_string, __pyx_n_s__strip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_xml_string);
  __pyx_v_xml_string = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":571
 *     # this is a hack to remove the XML declaration when we encode to UTF-8
 *     xml_string = xml_string.strip()
 *     if xml_string[:5] == '<?xml':             # <<<<<<<<<<<<<<
 *         i = xml_string.find('?>')
 *         if i != -1:
 */
  __pyx_t_2 = PySequence_GetSlice(__pyx_v_xml_string, 0, 5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_kp_s_11), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":572
 *     xml_string = xml_string.strip()
 *     if xml_string[:5] == '<?xml':
 *         i = xml_string.find('?>')             # <<<<<<<<<<<<<<
 *         if i != -1:
 *             i = i + 2
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_xml_string, __pyx_n_s__find); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_12));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12));
    __pyx_t_4 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_i);
    __pyx_v_i = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":573
 *     if xml_string[:5] == '<?xml':
 *         i = xml_string.find('?>')
 *         if i != -1:             # <<<<<<<<<<<<<<
 *             i = i + 2
 *             while xml_string[i:i+1] in '\n\r ':
 */
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_i, __pyx_int_neg_1, Py_NE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":574
 *         i = xml_string.find('?>')
 *         if i != -1:
 *             i = i + 2             # <<<<<<<<<<<<<<
 *             while xml_string[i:i+1] in '\n\r ':
 *                 i = i+1
 */
      __pyx_t_4 = PyNumber_Add(__pyx_v_i, __pyx_int_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_i);
      __pyx_v_i = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":575
 *         if i != -1:
 *             i = i + 2
 *             while xml_string[i:i+1] in '\n\r ':             # <<<<<<<<<<<<<<
 *                 i = i+1
 *             xml_string = xml_string[i:]
 */
      while (1) {
        __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_4 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PySequence_GetSlice(__pyx_v_xml_string, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = ((PySequence_Contains(((PyObject *)__pyx_kp_s_13), __pyx_t_4))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (!__pyx_t_3) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":576
 *             i = i + 2
 *             while xml_string[i:i+1] in '\n\r ':
 *                 i = i+1             # <<<<<<<<<<<<<<
 *             xml_string = xml_string[i:]
 *     return xml_string
 */
        __pyx_t_4 = PyNumber_Add(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_v_i);
        __pyx_v_i = __pyx_t_4;
        __pyx_t_4 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":577
 *             while xml_string[i:i+1] in '\n\r ':
 *                 i = i+1
 *             xml_string = xml_string[i:]             # <<<<<<<<<<<<<<
 *     return xml_string
 * 
 */
      __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_4 = PySequence_GetSlice(__pyx_v_xml_string, __pyx_t_6, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_xml_string);
      __pyx_v_xml_string = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":578
 *                 i = i+1
 *             xml_string = xml_string[i:]
 *     return xml_string             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _hasText(xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xml_string);
  __pyx_r = __pyx_v_xml_string;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._stripDeclaration");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_i);
  __Pyx_DECREF(__pyx_v_xml_string);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":580
 *     return xml_string
 * 
 * cdef inline int _hasText(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasText(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_hasText");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":581
 * 
 * cdef inline int _hasText(xmlNode* c_node):
 *     return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _hasTail(xmlNode* c_node):
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->children) != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":583
 *     return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL
 * 
 * cdef inline int _hasTail(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasTail(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_hasTail");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":584
 * 
 * cdef inline int _hasTail(xmlNode* c_node):
 *     return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL             # <<<<<<<<<<<<<<
 * 
 * cdef _collectText(xmlNode* c_node):
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next) != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":586
 *     return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL
 * 
 * cdef _collectText(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Collect all text nodes and return them as a unicode string.
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree__collectText(xmlNode *__pyx_v_c_node) {
  Py_ssize_t __pyx_v_scount;
  char *__pyx_v_c_text;
  xmlNode *__pyx_v_c_node_cur;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  xmlNode *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  char *__pyx_t_5;
  __Pyx_RefNannySetupContext("_collectText");
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":597
 *     cdef xmlNode* c_node_cur
 *     # check for multiple text nodes
 *     scount = 0             # <<<<<<<<<<<<<<
 *     c_text = NULL
 *     c_node_cur = c_node = _textNodeOrSkip(c_node)
 */
  __pyx_v_scount = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":598
 *     # check for multiple text nodes
 *     scount = 0
 *     c_text = NULL             # <<<<<<<<<<<<<<
 *     c_node_cur = c_node = _textNodeOrSkip(c_node)
 *     while c_node_cur is not NULL:
 */
  __pyx_v_c_text = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":599
 *     scount = 0
 *     c_text = NULL
 *     c_node_cur = c_node = _textNodeOrSkip(c_node)             # <<<<<<<<<<<<<<
 *     while c_node_cur is not NULL:
 *         if c_node_cur.content[0] != c'\0':
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node);
  __pyx_v_c_node_cur = __pyx_t_1;
  __pyx_v_c_node = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":600
 *     c_text = NULL
 *     c_node_cur = c_node = _textNodeOrSkip(c_node)
 *     while c_node_cur is not NULL:             # <<<<<<<<<<<<<<
 *         if c_node_cur.content[0] != c'\0':
 *             c_text = c_node_cur.content
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_node_cur != NULL);
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":601
 *     c_node_cur = c_node = _textNodeOrSkip(c_node)
 *     while c_node_cur is not NULL:
 *         if c_node_cur.content[0] != c'\0':             # <<<<<<<<<<<<<<
 *             c_text = c_node_cur.content
 *         scount = scount + 1
 */
    __pyx_t_2 = ((__pyx_v_c_node_cur->content[0]) != '\x00');
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":602
 *     while c_node_cur is not NULL:
 *         if c_node_cur.content[0] != c'\0':
 *             c_text = c_node_cur.content             # <<<<<<<<<<<<<<
 *         scount = scount + 1
 *         c_node_cur = _textNodeOrSkip(c_node_cur.next)
 */
      __pyx_v_c_text = __pyx_v_c_node_cur->content;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":603
 *         if c_node_cur.content[0] != c'\0':
 *             c_text = c_node_cur.content
 *         scount = scount + 1             # <<<<<<<<<<<<<<
 *         c_node_cur = _textNodeOrSkip(c_node_cur.next)
 * 
 */
    __pyx_v_scount = (__pyx_v_scount + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":604
 *             c_text = c_node_cur.content
 *         scount = scount + 1
 *         c_node_cur = _textNodeOrSkip(c_node_cur.next)             # <<<<<<<<<<<<<<
 * 
 *     # handle two most common cases first
 */
    __pyx_v_c_node_cur = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node_cur->next);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":607
 * 
 *     # handle two most common cases first
 *     if c_text is NULL:             # <<<<<<<<<<<<<<
 *         if scount > 0:
 *             if python.IS_PYTHON3:
 */
  __pyx_t_2 = (__pyx_v_c_text == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":608
 *     # handle two most common cases first
 *     if c_text is NULL:
 *         if scount > 0:             # <<<<<<<<<<<<<<
 *             if python.IS_PYTHON3:
 *                 return u''
 */
    __pyx_t_2 = (__pyx_v_scount > 0);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":609
 *     if c_text is NULL:
 *         if scount > 0:
 *             if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *                 return u''
 *             else:
 */
      __pyx_t_2 = IS_PYTHON3;
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":610
 *         if scount > 0:
 *             if python.IS_PYTHON3:
 *                 return u''             # <<<<<<<<<<<<<<
 *             else:
 *                 return ''
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
        __pyx_r = ((PyObject *)__pyx_kp_u_14);
        goto __pyx_L0;
        goto __pyx_L8;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":612
 *                 return u''
 *             else:
 *                 return ''             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
        __pyx_r = ((PyObject *)__pyx_kp_s_14);
        goto __pyx_L0;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":614
 *                 return ''
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 *     if scount == 1:
 *         return funicode(c_text)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":615
 *         else:
 *             return None
 *     if scount == 1:             # <<<<<<<<<<<<<<
 *         return funicode(c_text)
 * 
 */
  __pyx_t_2 = (__pyx_v_scount == 1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":616
 *             return None
 *     if scount == 1:
 *         return funicode(c_text)             # <<<<<<<<<<<<<<
 * 
 *     # the rest is not performance critical anymore
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":619
 * 
 *     # the rest is not performance critical anymore
 *     result = ''             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         result = result + c_node.content
 */
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
  __Pyx_DECREF(__pyx_v_result);
  __pyx_v_result = ((PyObject *)__pyx_kp_s_14);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":620
 *     # the rest is not performance critical anymore
 *     result = ''
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         result = result + c_node.content
 *         c_node = _textNodeOrSkip(c_node.next)
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":621
 *     result = ''
 *     while c_node is not NULL:
 *         result = result + c_node.content             # <<<<<<<<<<<<<<
 *         c_node = _textNodeOrSkip(c_node.next)
 *     return funicode(result)
 */
    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_c_node->content); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_4 = PyNumber_Add(__pyx_v_result, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":622
 *     while c_node is not NULL:
 *         result = result + c_node.content
 *         c_node = _textNodeOrSkip(c_node.next)             # <<<<<<<<<<<<<<
 *     return funicode(result)
 * 
 */
    __pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":623
 *         result = result + c_node.content
 *         c_node = _textNodeOrSkip(c_node.next)
 *     return funicode(result)             # <<<<<<<<<<<<<<
 * 
 * cdef void _removeText(xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyBytes_AsString(__pyx_v_result); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._collectText");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":625
 *     return funicode(result)
 * 
 * cdef void _removeText(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Remove all text nodes.
 * 
 */

static  void __pyx_f_4lxml_5etree__removeText(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_next;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_removeText");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":631
 *     """
 *     cdef xmlNode* c_next
 *     c_node = _textNodeOrSkip(c_node)             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         c_next = _textNodeOrSkip(c_node.next)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":632
 *     cdef xmlNode* c_next
 *     c_node = _textNodeOrSkip(c_node)
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         c_next = _textNodeOrSkip(c_node.next)
 *         tree.xmlUnlinkNode(c_node)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":633
 *     c_node = _textNodeOrSkip(c_node)
 *     while c_node is not NULL:
 *         c_next = _textNodeOrSkip(c_node.next)             # <<<<<<<<<<<<<<
 *         tree.xmlUnlinkNode(c_node)
 *         tree.xmlFreeNode(c_node)
 */
    __pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":634
 *     while c_node is not NULL:
 *         c_next = _textNodeOrSkip(c_node.next)
 *         tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *         tree.xmlFreeNode(c_node)
 *         c_node = c_next
 */
    xmlUnlinkNode(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":635
 *         c_next = _textNodeOrSkip(c_node.next)
 *         tree.xmlUnlinkNode(c_node)
 *         tree.xmlFreeNode(c_node)             # <<<<<<<<<<<<<<
 *         c_node = c_next
 * 
 */
    xmlFreeNode(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":636
 *         tree.xmlUnlinkNode(c_node)
 *         tree.xmlFreeNode(c_node)
 *         c_node = c_next             # <<<<<<<<<<<<<<
 * 
 * cdef int _setNodeText(xmlNode* c_node, value) except -1:
 */
    __pyx_v_c_node = __pyx_v_c_next;
  }

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":638
 *         c_node = c_next
 * 
 * cdef int _setNodeText(xmlNode* c_node, value) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_text_node
 *     # remove all text nodes at the start first
 */

static  int __pyx_f_4lxml_5etree__setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_value) {
  xmlNode *__pyx_v_c_text_node;
  PyObject *__pyx_v_text;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_setNodeText");
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":641
 *     cdef xmlNode* c_text_node
 *     # remove all text nodes at the start first
 *     _removeText(c_node.children)             # <<<<<<<<<<<<<<
 *     if value is None:
 *         return 0
 */
  __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->children);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":642
 *     # remove all text nodes at the start first
 *     _removeText(c_node.children)
 *     if value is None:             # <<<<<<<<<<<<<<
 *         return 0
 *     # now add new text node with value at start
 */
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":643
 *     _removeText(c_node.children)
 *     if value is None:
 *         return 0             # <<<<<<<<<<<<<<
 *     # now add new text node with value at start
 *     if python._isString(value):
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":645
 *         return 0
 *     # now add new text node with value at start
 *     if python._isString(value):             # <<<<<<<<<<<<<<
 *         text = _utf8(value)
 *         c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 */
  __pyx_t_1 = _isString(__pyx_v_value);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":646
 *     # now add new text node with value at start
 *     if python._isString(value):
 *         text = _utf8(value)             # <<<<<<<<<<<<<<
 *         c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 *     elif isinstance(value, CDATA):
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_text);
    __pyx_v_text = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":647
 *     if python._isString(value):
 *         text = _utf8(value)
 *         c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))             # <<<<<<<<<<<<<<
 *     elif isinstance(value, CDATA):
 *         c_text_node = tree.xmlNewCDataBlock(
 */
    __pyx_v_c_text_node = xmlNewDocText(__pyx_v_c_node->doc, PyString_AS_STRING(__pyx_v_text));
    goto __pyx_L4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":648
 *         text = _utf8(value)
 *         c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 *     elif isinstance(value, CDATA):             # <<<<<<<<<<<<<<
 *         c_text_node = tree.xmlNewCDataBlock(
 *             c_node.doc, _cstr((<CDATA>value)._utf8_data),
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_value, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_CDATA))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":651
 *         c_text_node = tree.xmlNewCDataBlock(
 *             c_node.doc, _cstr((<CDATA>value)._utf8_data),
 *             python.PyString_GET_SIZE((<CDATA>value)._utf8_data))             # <<<<<<<<<<<<<<
 *     else:
 *         # this will raise the right error
 */
    __pyx_v_c_text_node = xmlNewCDataBlock(__pyx_v_c_node->doc, PyString_AS_STRING(((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_value)->_utf8_data), PyString_GET_SIZE(((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_value)->_utf8_data));
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":654
 *     else:
 *         # this will raise the right error
 *        _utf8(value)             # <<<<<<<<<<<<<<
 *        return -1
 *     if c_node.children is NULL:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":655
 *         # this will raise the right error
 *        _utf8(value)
 *        return -1             # <<<<<<<<<<<<<<
 *     if c_node.children is NULL:
 *         tree.xmlAddChild(c_node, c_text_node)
 */
    __pyx_r = -1;
    goto __pyx_L0;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":656
 *        _utf8(value)
 *        return -1
 *     if c_node.children is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlAddChild(c_node, c_text_node)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node->children == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":657
 *        return -1
 *     if c_node.children is NULL:
 *         tree.xmlAddChild(c_node, c_text_node)             # <<<<<<<<<<<<<<
 *     else:
 *         tree.xmlAddPrevSibling(c_node.children, c_text_node)
 */
    xmlAddChild(__pyx_v_c_node, __pyx_v_c_text_node);
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":659
 *         tree.xmlAddChild(c_node, c_text_node)
 *     else:
 *         tree.xmlAddPrevSibling(c_node.children, c_text_node)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    xmlAddPrevSibling(__pyx_v_c_node->children, __pyx_v_c_text_node);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":660
 *     else:
 *         tree.xmlAddPrevSibling(c_node.children, c_text_node)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _setTailText(xmlNode* c_node, value) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._setNodeText");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":662
 *     return 0
 * 
 * cdef int _setTailText(xmlNode* c_node, value) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_text_node
 *     # remove all text nodes at the start first
 */

static  int __pyx_f_4lxml_5etree__setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_value) {
  xmlNode *__pyx_v_c_text_node;
  PyObject *__pyx_v_text;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_setTailText");
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":665
 *     cdef xmlNode* c_text_node
 *     # remove all text nodes at the start first
 *     _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *     if value is None:
 *         return 0
 */
  __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":666
 *     # remove all text nodes at the start first
 *     _removeText(c_node.next)
 *     if value is None:             # <<<<<<<<<<<<<<
 *         return 0
 *     text = _utf8(value)
 */
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":667
 *     _removeText(c_node.next)
 *     if value is None:
 *         return 0             # <<<<<<<<<<<<<<
 *     text = _utf8(value)
 *     c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":668
 *     if value is None:
 *         return 0
 *     text = _utf8(value)             # <<<<<<<<<<<<<<
 *     c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 *     # XXX what if we're the top element?
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_text);
  __pyx_v_text = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":669
 *         return 0
 *     text = _utf8(value)
 *     c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))             # <<<<<<<<<<<<<<
 *     # XXX what if we're the top element?
 *     tree.xmlAddNextSibling(c_node, c_text_node)
 */
  __pyx_v_c_text_node = xmlNewDocText(__pyx_v_c_node->doc, PyString_AS_STRING(__pyx_v_text));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":671
 *     c_text_node = tree.xmlNewDocText(c_node.doc, _cstr(text))
 *     # XXX what if we're the top element?
 *     tree.xmlAddNextSibling(c_node, c_text_node)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  xmlAddNextSibling(__pyx_v_c_node, __pyx_v_c_text_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":672
 *     # XXX what if we're the top element?
 *     tree.xmlAddNextSibling(c_node, c_text_node)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef _resolveQNameText(_Element element, value):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._setTailText");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":674
 *     return 0
 * 
 * cdef _resolveQNameText(_Element element, value):             # <<<<<<<<<<<<<<
 *     cdef xmlNs* c_ns
 *     ns, tag = _getNsTag(value)
 */

static  PyObject *__pyx_f_4lxml_5etree__resolveQNameText(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_value) {
  xmlNs *__pyx_v_c_ns;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  xmlNs *__pyx_t_6;
  __Pyx_RefNannySetupContext("_resolveQNameText");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":676
 * cdef _resolveQNameText(_Element element, value):
 *     cdef xmlNs* c_ns
 *     ns, tag = _getNsTag(value)             # <<<<<<<<<<<<<<
 *     if ns is None:
 *         return tag
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":677
 *     cdef xmlNs* c_ns
 *     ns, tag = _getNsTag(value)
 *     if ns is None:             # <<<<<<<<<<<<<<
 *         return tag
 *     else:
 */
  __pyx_t_5 = (__pyx_v_ns == Py_None);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":678
 *     ns, tag = _getNsTag(value)
 *     if ns is None:
 *         return tag             # <<<<<<<<<<<<<<
 *     else:
 *         c_ns = element._doc._findOrBuildNodeNs(
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_tag);
    __pyx_r = __pyx_v_tag;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":681
 *     else:
 *         c_ns = element._doc._findOrBuildNodeNs(
 *             element._c_node, _cstr(ns), NULL)             # <<<<<<<<<<<<<<
 *         return python.PyString_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
 * 
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_element->_doc->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, PyString_AS_STRING(__pyx_v_ns), NULL); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_ns = __pyx_t_6;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":682
 *         c_ns = element._doc._findOrBuildNodeNs(
 *             element._c_node, _cstr(ns), NULL)
 *         return python.PyString_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint _hasChild(xmlNode* c_node):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyString_FromFormat(__pyx_k_15, __pyx_v_c_ns->prefix, PyString_AS_STRING(__pyx_v_tag)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._resolveQNameText");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":684
 *         return python.PyString_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
 * 
 * cdef inline bint _hasChild(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__hasChild(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_hasChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":685
 * 
 * cdef inline bint _hasChild(xmlNode* c_node):
 *     return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline Py_ssize_t _countElements(xmlNode* c_node):
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, 0) != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":687
 *     return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL
 * 
 * cdef inline Py_ssize_t _countElements(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"Counts the elements within the following siblings and the node itself."
 *     cdef Py_ssize_t count
 */

static CYTHON_INLINE Py_ssize_t __pyx_f_4lxml_5etree__countElements(xmlNode *__pyx_v_c_node) {
  Py_ssize_t __pyx_v_count;
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_countElements");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":690
 *     u"Counts the elements within the following siblings and the node itself."
 *     cdef Py_ssize_t count
 *     count = 0             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":691
 *     cdef Py_ssize_t count
 *     count = 0
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         if _isElement(c_node):
 *             count = count + 1
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":692
 *     count = 0
 *     while c_node is not NULL:
 *         if _isElement(c_node):             # <<<<<<<<<<<<<<
 *             count = count + 1
 *         c_node = c_node.next
 */
    __pyx_t_1 = _isElement(__pyx_v_c_node);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":693
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 *             count = count + 1             # <<<<<<<<<<<<<<
 *         c_node = c_node.next
 *     return count
 */
      __pyx_v_count = (__pyx_v_count + 1);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":694
 *         if _isElement(c_node):
 *             count = count + 1
 *         c_node = c_node.next             # <<<<<<<<<<<<<<
 *     return count
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":695
 *             count = count + 1
 *         c_node = c_node.next
 *     return count             # <<<<<<<<<<<<<<
 * 
 * cdef int _findChildSlice(
 */
  __pyx_r = __pyx_v_count;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":697
 *     return count
 * 
 * cdef int _findChildSlice(             # <<<<<<<<<<<<<<
 *     python.slice sliceobject, xmlNode* c_parent,
 *     xmlNode** c_start_node, Py_ssize_t* c_step, Py_ssize_t* c_length) except -1:
 */

static  int __pyx_f_4lxml_5etree__findChildSlice(PySliceObject *__pyx_v_sliceobject, xmlNode *__pyx_v_c_parent, xmlNode **__pyx_v_c_start_node, Py_ssize_t *__pyx_v_c_step, Py_ssize_t *__pyx_v_c_length) {
  Py_ssize_t __pyx_v_start;
  Py_ssize_t __pyx_v_stop;
  Py_ssize_t __pyx_v_childcount;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_findChildSlice");
  __Pyx_INCREF((PyObject *)__pyx_v_sliceobject);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":706
 *     """
 *     cdef Py_ssize_t start, stop, childcount
 *     childcount = _countElements(c_parent.children)             # <<<<<<<<<<<<<<
 *     if childcount == 0:
 *         c_start_node[0] = NULL
 */
  __pyx_v_childcount = __pyx_f_4lxml_5etree__countElements(__pyx_v_c_parent->children);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":707
 *     cdef Py_ssize_t start, stop, childcount
 *     childcount = _countElements(c_parent.children)
 *     if childcount == 0:             # <<<<<<<<<<<<<<
 *         c_start_node[0] = NULL
 *         c_length[0] = 0
 */
  __pyx_t_1 = (__pyx_v_childcount == 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":708
 *     childcount = _countElements(c_parent.children)
 *     if childcount == 0:
 *         c_start_node[0] = NULL             # <<<<<<<<<<<<<<
 *         c_length[0] = 0
 *         if sliceobject.step is None:
 */
    (__pyx_v_c_start_node[0]) = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":709
 *     if childcount == 0:
 *         c_start_node[0] = NULL
 *         c_length[0] = 0             # <<<<<<<<<<<<<<
 *         if sliceobject.step is None:
 *             c_step[0] = 1
 */
    (__pyx_v_c_length[0]) = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":710
 *         c_start_node[0] = NULL
 *         c_length[0] = 0
 *         if sliceobject.step is None:             # <<<<<<<<<<<<<<
 *             c_step[0] = 1
 *         else:
 */
    __pyx_t_1 = (__pyx_v_sliceobject->step == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":711
 *         c_length[0] = 0
 *         if sliceobject.step is None:
 *             c_step[0] = 1             # <<<<<<<<<<<<<<
 *         else:
 *             python._PyEval_SliceIndex(sliceobject.step, c_step)
 */
      (__pyx_v_c_step[0]) = 1;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":713
 *             c_step[0] = 1
 *         else:
 *             python._PyEval_SliceIndex(sliceobject.step, c_step)             # <<<<<<<<<<<<<<
 *         return 0
 *     python.PySlice_GetIndicesEx(
 */
      __pyx_t_2 = _PyEval_SliceIndex(__pyx_v_sliceobject->step, __pyx_v_c_step); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":714
 *         else:
 *             python._PyEval_SliceIndex(sliceobject.step, c_step)
 *         return 0             # <<<<<<<<<<<<<<
 *     python.PySlice_GetIndicesEx(
 *         sliceobject, childcount, &start, &stop, c_step, c_length)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":716
 *         return 0
 *     python.PySlice_GetIndicesEx(
 *         sliceobject, childcount, &start, &stop, c_step, c_length)             # <<<<<<<<<<<<<<
 *     if start > childcount / 2:
 *         c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
 */
  __pyx_t_2 = PySlice_GetIndicesEx(__pyx_v_sliceobject, __pyx_v_childcount, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_c_step, __pyx_v_c_length); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":717
 *     python.PySlice_GetIndicesEx(
 *         sliceobject, childcount, &start, &stop, c_step, c_length)
 *     if start > childcount / 2:             # <<<<<<<<<<<<<<
 *         c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_start > __Pyx_div_Py_ssize_t(__pyx_v_childcount, 2));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":718
 *         sliceobject, childcount, &start, &stop, c_step, c_length)
 *     if start > childcount / 2:
 *         c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)             # <<<<<<<<<<<<<<
 *     else:
 *         c_start_node[0] = _findChild(c_parent, start)
 */
    (__pyx_v_c_start_node[0]) = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_parent, ((__pyx_v_childcount - __pyx_v_start) - 1));
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":720
 *         c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
 *     else:
 *         c_start_node[0] = _findChild(c_parent, start)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    (__pyx_v_c_start_node[0]) = __pyx_f_4lxml_5etree__findChild(__pyx_v_c_parent, __pyx_v_start);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":721
 *     else:
 *         c_start_node[0] = _findChild(c_parent, start)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef bint _isFullSlice(python.slice sliceobject):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._findChildSlice");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_sliceobject);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":723
 *     return 0
 * 
 * cdef bint _isFullSlice(python.slice sliceobject):             # <<<<<<<<<<<<<<
 *     u"""Conservative guess if this slice is a full slice as in ``s[:]``.
 *     """
 */

static  int __pyx_f_4lxml_5etree__isFullSlice(PySliceObject *__pyx_v_sliceobject) {
  Py_ssize_t __pyx_v_step;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_isFullSlice");
  __Pyx_INCREF((PyObject *)__pyx_v_sliceobject);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":727
 *     """
 *     cdef Py_ssize_t step
 *     if sliceobject is None:             # <<<<<<<<<<<<<<
 *         return 0
 *     if sliceobject.start is None and \
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_sliceobject) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":728
 *     cdef Py_ssize_t step
 *     if sliceobject is None:
 *         return 0             # <<<<<<<<<<<<<<
 *     if sliceobject.start is None and \
 *             sliceobject.stop is None:
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":729
 *     if sliceobject is None:
 *         return 0
 *     if sliceobject.start is None and \             # <<<<<<<<<<<<<<
 *             sliceobject.stop is None:
 *         if sliceobject.step is None:
 */
  __pyx_t_1 = (__pyx_v_sliceobject->start == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":730
 *         return 0
 *     if sliceobject.start is None and \
 *             sliceobject.stop is None:             # <<<<<<<<<<<<<<
 *         if sliceobject.step is None:
 *             return 1
 */
    __pyx_t_2 = (__pyx_v_sliceobject->stop == Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":731
 *     if sliceobject.start is None and \
 *             sliceobject.stop is None:
 *         if sliceobject.step is None:             # <<<<<<<<<<<<<<
 *             return 1
 *         python._PyEval_SliceIndex(sliceobject.step, &step)
 */
    __pyx_t_3 = (__pyx_v_sliceobject->step == Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":732
 *             sliceobject.stop is None:
 *         if sliceobject.step is None:
 *             return 1             # <<<<<<<<<<<<<<
 *         python._PyEval_SliceIndex(sliceobject.step, &step)
 *         if step == 1:
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":733
 *         if sliceobject.step is None:
 *             return 1
 *         python._PyEval_SliceIndex(sliceobject.step, &step)             # <<<<<<<<<<<<<<
 *         if step == 1:
 *             return 1
 */
    __pyx_t_4 = _PyEval_SliceIndex(__pyx_v_sliceobject->step, (&__pyx_v_step)); if (unlikely(__pyx_t_4 == 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":734
 *             return 1
 *         python._PyEval_SliceIndex(sliceobject.step, &step)
 *         if step == 1:             # <<<<<<<<<<<<<<
 *             return 1
 *         return 0
 */
    __pyx_t_3 = (__pyx_v_step == 1);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":735
 *         python._PyEval_SliceIndex(sliceobject.step, &step)
 *         if step == 1:
 *             return 1             # <<<<<<<<<<<<<<
 *         return 0
 *     return 0
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":736
 *         if step == 1:
 *             return 1
 *         return 0             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":737
 *             return 1
 *         return 0
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef _collectChildren(_Element element):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree._isFullSlice");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_sliceobject);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":739
 *     return 0
 * 
 * cdef _collectChildren(_Element element):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     cdef list result = []
 */

static  PyObject *__pyx_f_4lxml_5etree__collectChildren(struct LxmlElement *__pyx_v_element) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_collectChildren");
  __Pyx_INCREF((PyObject *)__pyx_v_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":741
 * cdef _collectChildren(_Element element):
 *     cdef xmlNode* c_node
 *     cdef list result = []             # <<<<<<<<<<<<<<
 *     c_node = element._c_node.children
 *     if c_node is not NULL:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":742
 *     cdef xmlNode* c_node
 *     cdef list result = []
 *     c_node = element._c_node.children             # <<<<<<<<<<<<<<
 *     if c_node is not NULL:
 *         if not _isElement(c_node):
 */
  __pyx_v_c_node = __pyx_v_element->_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":743
 *     cdef list result = []
 *     c_node = element._c_node.children
 *     if c_node is not NULL:             # <<<<<<<<<<<<<<
 *         if not _isElement(c_node):
 *             c_node = _nextElement(c_node)
 */
  __pyx_t_2 = (__pyx_v_c_node != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":744
 *     c_node = element._c_node.children
 *     if c_node is not NULL:
 *         if not _isElement(c_node):             # <<<<<<<<<<<<<<
 *             c_node = _nextElement(c_node)
 *         while c_node is not NULL:
 */
    __pyx_t_2 = (!_isElement(__pyx_v_c_node));
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":745
 *     if c_node is not NULL:
 *         if not _isElement(c_node):
 *             c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *         while c_node is not NULL:
 *             result.append(_elementFactory(element._doc, c_node))
 */
      __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":746
 *         if not _isElement(c_node):
 *             c_node = _nextElement(c_node)
 *         while c_node is not NULL:             # <<<<<<<<<<<<<<
 *             result.append(_elementFactory(element._doc, c_node))
 *             c_node = _nextElement(c_node)
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_c_node != NULL);
      if (!__pyx_t_2) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":747
 *             c_node = _nextElement(c_node)
 *         while c_node is not NULL:
 *             result.append(_elementFactory(element._doc, c_node))             # <<<<<<<<<<<<<<
 *             c_node = _nextElement(c_node)
 *     return result
 */
      if (unlikely(__pyx_v_result == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_element->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_result), __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":748
 *         while c_node is not NULL:
 *             result.append(_elementFactory(element._doc, c_node))
 *             c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
      __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":749
 *             result.append(_elementFactory(element._doc, c_node))
 *             c_node = _nextElement(c_node)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._collectChildren");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":751
 *     return result
 * 
 * cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     if index < 0:
 *         return _findChildBackwards(c_node, -index - 1)
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_findChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":752
 * 
 * cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
 *     if index < 0:             # <<<<<<<<<<<<<<
 *         return _findChildBackwards(c_node, -index - 1)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_index < 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":753
 * cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
 *     if index < 0:
 *         return _findChildBackwards(c_node, -index - 1)             # <<<<<<<<<<<<<<
 *     else:
 *         return _findChildForwards(c_node, index)
 */
    __pyx_r = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_node, ((-__pyx_v_index) - 1));
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":755
 *         return _findChildBackwards(c_node, -index - 1)
 *     else:
 *         return _findChildForwards(c_node, index)             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _findChildForwards(xmlNode* c_node, Py_ssize_t index):
 */
    __pyx_r = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, __pyx_v_index);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":757
 *         return _findChildForwards(c_node, index)
 * 
 * cdef inline xmlNode* _findChildForwards(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     u"""Return child element of c_node with index, or return NULL if not found.
 *     """
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_v_c_child;
  Py_ssize_t __pyx_v_c;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_findChildForwards");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":762
 *     cdef xmlNode* c_child
 *     cdef Py_ssize_t c
 *     c_child = c_node.children             # <<<<<<<<<<<<<<
 *     c = 0
 *     while c_child is not NULL:
 */
  __pyx_v_c_child = __pyx_v_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":763
 *     cdef Py_ssize_t c
 *     c_child = c_node.children
 *     c = 0             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         if _isElement(c_child):
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":764
 *     c_child = c_node.children
 *     c = 0
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         if _isElement(c_child):
 *             if c == index:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":765
 *     c = 0
 *     while c_child is not NULL:
 *         if _isElement(c_child):             # <<<<<<<<<<<<<<
 *             if c == index:
 *                 return c_child
 */
    __pyx_t_1 = _isElement(__pyx_v_c_child);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":766
 *     while c_child is not NULL:
 *         if _isElement(c_child):
 *             if c == index:             # <<<<<<<<<<<<<<
 *                 return c_child
 *             c = c + 1
 */
      __pyx_t_1 = (__pyx_v_c == __pyx_v_index);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":767
 *         if _isElement(c_child):
 *             if c == index:
 *                 return c_child             # <<<<<<<<<<<<<<
 *             c = c + 1
 *         c_child = c_child.next
 */
        __pyx_r = __pyx_v_c_child;
        goto __pyx_L0;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":768
 *             if c == index:
 *                 return c_child
 *             c = c + 1             # <<<<<<<<<<<<<<
 *         c_child = c_child.next
 *     return NULL
 */
      __pyx_v_c = (__pyx_v_c + 1);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":769
 *                 return c_child
 *             c = c + 1
 *         c_child = c_child.next             # <<<<<<<<<<<<<<
 *     return NULL
 * 
 */
    __pyx_v_c_child = __pyx_v_c_child->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":770
 *             c = c + 1
 *         c_child = c_child.next
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _findChildBackwards(xmlNode* c_node, Py_ssize_t index):
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":772
 *     return NULL
 * 
 * cdef inline xmlNode* _findChildBackwards(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     u"""Return child element of c_node with index, or return NULL if not found.
 *     Search from the end.
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_v_c_child;
  Py_ssize_t __pyx_v_c;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_findChildBackwards");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":778
 *     cdef xmlNode* c_child
 *     cdef Py_ssize_t c
 *     c_child = c_node.last             # <<<<<<<<<<<<<<
 *     c = 0
 *     while c_child is not NULL:
 */
  __pyx_v_c_child = __pyx_v_c_node->last;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":779
 *     cdef Py_ssize_t c
 *     c_child = c_node.last
 *     c = 0             # <<<<<<<<<<<<<<
 *     while c_child is not NULL:
 *         if _isElement(c_child):
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":780
 *     c_child = c_node.last
 *     c = 0
 *     while c_child is not NULL:             # <<<<<<<<<<<<<<
 *         if _isElement(c_child):
 *             if c == index:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_child != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":781
 *     c = 0
 *     while c_child is not NULL:
 *         if _isElement(c_child):             # <<<<<<<<<<<<<<
 *             if c == index:
 *                 return c_child
 */
    __pyx_t_1 = _isElement(__pyx_v_c_child);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":782
 *     while c_child is not NULL:
 *         if _isElement(c_child):
 *             if c == index:             # <<<<<<<<<<<<<<
 *                 return c_child
 *             c = c + 1
 */
      __pyx_t_1 = (__pyx_v_c == __pyx_v_index);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":783
 *         if _isElement(c_child):
 *             if c == index:
 *                 return c_child             # <<<<<<<<<<<<<<
 *             c = c + 1
 *         c_child = c_child.prev
 */
        __pyx_r = __pyx_v_c_child;
        goto __pyx_L0;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":784
 *             if c == index:
 *                 return c_child
 *             c = c + 1             # <<<<<<<<<<<<<<
 *         c_child = c_child.prev
 *     return NULL
 */
      __pyx_v_c = (__pyx_v_c + 1);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":785
 *                 return c_child
 *             c = c + 1
 *         c_child = c_child.prev             # <<<<<<<<<<<<<<
 *     return NULL
 * 
 */
    __pyx_v_c_child = __pyx_v_c_child->prev;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":786
 *             c = c + 1
 *         c_child = c_child.prev
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _textNodeOrSkip(xmlNode* c_node) nogil:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":788
 *     return NULL
 * 
 * cdef inline xmlNode* _textNodeOrSkip(xmlNode* c_node) nogil:             # <<<<<<<<<<<<<<
 *     u"""Return the node if it's a text node.  Skip over ignorable nodes in a
 *     series of text nodes.  Return NULL if a non-ignorable node is found.
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__textNodeOrSkip(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":795
 *     nodes.
 *     """
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         if c_node.type == tree.XML_TEXT_NODE:
 *             return c_node
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":796
 *     """
 *     while c_node is not NULL:
 *         if c_node.type == tree.XML_TEXT_NODE:             # <<<<<<<<<<<<<<
 *             return c_node
 *         if c_node.type == tree.XML_CDATA_SECTION_NODE:
 */
    __pyx_t_1 = (__pyx_v_c_node->type == XML_TEXT_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":797
 *     while c_node is not NULL:
 *         if c_node.type == tree.XML_TEXT_NODE:
 *             return c_node             # <<<<<<<<<<<<<<
 *         if c_node.type == tree.XML_CDATA_SECTION_NODE:
 *             return c_node
 */
      __pyx_r = __pyx_v_c_node;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":798
 *         if c_node.type == tree.XML_TEXT_NODE:
 *             return c_node
 *         if c_node.type == tree.XML_CDATA_SECTION_NODE:             # <<<<<<<<<<<<<<
 *             return c_node
 *         elif c_node.type == tree.XML_XINCLUDE_START or \
 */
    __pyx_t_1 = (__pyx_v_c_node->type == XML_CDATA_SECTION_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":799
 *             return c_node
 *         if c_node.type == tree.XML_CDATA_SECTION_NODE:
 *             return c_node             # <<<<<<<<<<<<<<
 *         elif c_node.type == tree.XML_XINCLUDE_START or \
 *                  c_node.type == tree.XML_XINCLUDE_END:
 */
      __pyx_r = __pyx_v_c_node;
      goto __pyx_L0;
      goto __pyx_L6;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":800
 *         if c_node.type == tree.XML_CDATA_SECTION_NODE:
 *             return c_node
 *         elif c_node.type == tree.XML_XINCLUDE_START or \             # <<<<<<<<<<<<<<
 *                  c_node.type == tree.XML_XINCLUDE_END:
 *             c_node = c_node.next
 */
    __pyx_t_1 = (__pyx_v_c_node->type == XML_XINCLUDE_START);
    if (!__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":801
 *             return c_node
 *         elif c_node.type == tree.XML_XINCLUDE_START or \
 *                  c_node.type == tree.XML_XINCLUDE_END:             # <<<<<<<<<<<<<<
 *             c_node = c_node.next
 *         else:
 */
      __pyx_t_2 = (__pyx_v_c_node->type == XML_XINCLUDE_END);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":802
 *         elif c_node.type == tree.XML_XINCLUDE_START or \
 *                  c_node.type == tree.XML_XINCLUDE_END:
 *             c_node = c_node.next             # <<<<<<<<<<<<<<
 *         else:
 *             return NULL
 */
      __pyx_v_c_node = __pyx_v_c_node->next;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":804
 *             c_node = c_node.next
 *         else:
 *             return NULL             # <<<<<<<<<<<<<<
 *     return NULL
 * 
 */
      __pyx_r = NULL;
      goto __pyx_L0;
    }
    __pyx_L6:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":805
 *         else:
 *             return NULL
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _nextElement(xmlNode* c_node):
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":807
 *     return NULL
 * 
 * cdef inline xmlNode* _nextElement(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Given a node, find the next sibling that is an element.
 *     """
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__nextElement(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_nextElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":810
 *     u"""Given a node, find the next sibling that is an element.
 *     """
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return NULL
 *     c_node = c_node.next
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":811
 *     """
 *     if c_node is NULL:
 *         return NULL             # <<<<<<<<<<<<<<
 *     c_node = c_node.next
 *     while c_node is not NULL:
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":812
 *     if c_node is NULL:
 *         return NULL
 *     c_node = c_node.next             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 */
  __pyx_v_c_node = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":813
 *         return NULL
 *     c_node = c_node.next
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         if _isElement(c_node):
 *             return c_node
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":814
 *     c_node = c_node.next
 *     while c_node is not NULL:
 *         if _isElement(c_node):             # <<<<<<<<<<<<<<
 *             return c_node
 *         c_node = c_node.next
 */
    __pyx_t_1 = _isElement(__pyx_v_c_node);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":815
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 *             return c_node             # <<<<<<<<<<<<<<
 *         c_node = c_node.next
 *     return NULL
 */
      __pyx_r = __pyx_v_c_node;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":816
 *         if _isElement(c_node):
 *             return c_node
 *         c_node = c_node.next             # <<<<<<<<<<<<<<
 *     return NULL
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":817
 *             return c_node
 *         c_node = c_node.next
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _previousElement(xmlNode* c_node):
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":819
 *     return NULL
 * 
 * cdef inline xmlNode* _previousElement(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"""Given a node, find the next sibling that is an element.
 *     """
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__previousElement(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_previousElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":822
 *     u"""Given a node, find the next sibling that is an element.
 *     """
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return NULL
 *     c_node = c_node.prev
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":823
 *     """
 *     if c_node is NULL:
 *         return NULL             # <<<<<<<<<<<<<<
 *     c_node = c_node.prev
 *     while c_node is not NULL:
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":824
 *     if c_node is NULL:
 *         return NULL
 *     c_node = c_node.prev             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 */
  __pyx_v_c_node = __pyx_v_c_node->prev;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":825
 *         return NULL
 *     c_node = c_node.prev
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         if _isElement(c_node):
 *             return c_node
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":826
 *     c_node = c_node.prev
 *     while c_node is not NULL:
 *         if _isElement(c_node):             # <<<<<<<<<<<<<<
 *             return c_node
 *         c_node = c_node.prev
 */
    __pyx_t_1 = _isElement(__pyx_v_c_node);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":827
 *     while c_node is not NULL:
 *         if _isElement(c_node):
 *             return c_node             # <<<<<<<<<<<<<<
 *         c_node = c_node.prev
 *     return NULL
 */
      __pyx_r = __pyx_v_c_node;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":828
 *         if _isElement(c_node):
 *             return c_node
 *         c_node = c_node.prev             # <<<<<<<<<<<<<<
 *     return NULL
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->prev;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":829
 *             return c_node
 *         c_node = c_node.prev
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _parentElement(xmlNode* c_node):
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":831
 *     return NULL
 * 
 * cdef inline xmlNode* _parentElement(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"Given a node, find the parent element."
 *     if c_node is NULL or not _isElement(c_node):
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__parentElement(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_parentElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":833
 * cdef inline xmlNode* _parentElement(xmlNode* c_node):
 *     u"Given a node, find the parent element."
 *     if c_node is NULL or not _isElement(c_node):             # <<<<<<<<<<<<<<
 *         return NULL
 *     c_node = c_node.parent
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (!_isElement(__pyx_v_c_node));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":834
 *     u"Given a node, find the parent element."
 *     if c_node is NULL or not _isElement(c_node):
 *         return NULL             # <<<<<<<<<<<<<<
 *     c_node = c_node.parent
 *     if c_node is NULL or not _isElement(c_node):
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":835
 *     if c_node is NULL or not _isElement(c_node):
 *         return NULL
 *     c_node = c_node.parent             # <<<<<<<<<<<<<<
 *     if c_node is NULL or not _isElement(c_node):
 *         return NULL
 */
  __pyx_v_c_node = __pyx_v_c_node->parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":836
 *         return NULL
 *     c_node = c_node.parent
 *     if c_node is NULL or not _isElement(c_node):             # <<<<<<<<<<<<<<
 *         return NULL
 *     return c_node
 */
  __pyx_t_3 = (__pyx_v_c_node == NULL);
  if (!__pyx_t_3) {
    __pyx_t_1 = (!_isElement(__pyx_v_c_node));
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":837
 *     c_node = c_node.parent
 *     if c_node is NULL or not _isElement(c_node):
 *         return NULL             # <<<<<<<<<<<<<<
 *     return c_node
 * 
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":838
 *     if c_node is NULL or not _isElement(c_node):
 *         return NULL
 *     return c_node             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint _tagMatches(xmlNode* c_node, char* c_href, char* c_name):
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":840
 *     return c_node
 * 
 * cdef inline bint _tagMatches(xmlNode* c_node, char* c_href, char* c_name):             # <<<<<<<<<<<<<<
 *     u"""Tests if the node matches namespace URI and tag name.
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatches(xmlNode *__pyx_v_c_node, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  char *__pyx_v_c_node_href;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_tagMatches");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":855
 *     """
 *     cdef char* c_node_href
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return 0
 *     if c_node.type != tree.XML_ELEMENT_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":856
 *     cdef char* c_node_href
 *     if c_node is NULL:
 *         return 0             # <<<<<<<<<<<<<<
 *     if c_node.type != tree.XML_ELEMENT_NODE:
 *         # not an element, only succeed if we match everything
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":857
 *     if c_node is NULL:
 *         return 0
 *     if c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         # not an element, only succeed if we match everything
 *         return c_name is NULL and c_href is NULL
 */
  __pyx_t_1 = (__pyx_v_c_node->type != XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":859
 *     if c_node.type != tree.XML_ELEMENT_NODE:
 *         # not an element, only succeed if we match everything
 *         return c_name is NULL and c_href is NULL             # <<<<<<<<<<<<<<
 *     if c_name is NULL:
 *         if c_href is NULL:
 */
    __pyx_t_1 = (__pyx_v_c_name == NULL);
    if (__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c_href == NULL);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":860
 *         # not an element, only succeed if we match everything
 *         return c_name is NULL and c_href is NULL
 *     if c_name is NULL:             # <<<<<<<<<<<<<<
 *         if c_href is NULL:
 *             # always match
 */
  __pyx_t_3 = (__pyx_v_c_name == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":861
 *         return c_name is NULL and c_href is NULL
 *     if c_name is NULL:
 *         if c_href is NULL:             # <<<<<<<<<<<<<<
 *             # always match
 *             return 1
 */
    __pyx_t_3 = (__pyx_v_c_href == NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":863
 *         if c_href is NULL:
 *             # always match
 *             return 1             # <<<<<<<<<<<<<<
 *         else:
 *             c_node_href = _getNs(c_node)
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":865
 *             return 1
 *         else:
 *             c_node_href = _getNs(c_node)             # <<<<<<<<<<<<<<
 *             if c_node_href is NULL:
 *                 return c_href[0] == c'\0'
 */
      __pyx_v_c_node_href = _getNs(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":866
 *         else:
 *             c_node_href = _getNs(c_node)
 *             if c_node_href is NULL:             # <<<<<<<<<<<<<<
 *                 return c_href[0] == c'\0'
 *             else:
 */
      __pyx_t_3 = (__pyx_v_c_node_href == NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":867
 *             c_node_href = _getNs(c_node)
 *             if c_node_href is NULL:
 *                 return c_href[0] == c'\0'             # <<<<<<<<<<<<<<
 *             else:
 *                 return cstd.strcmp(c_node_href, c_href) == 0
 */
        __pyx_r = ((__pyx_v_c_href[0]) == '\x00');
        goto __pyx_L0;
        goto __pyx_L7;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":869
 *                 return c_href[0] == c'\0'
 *             else:
 *                 return cstd.strcmp(c_node_href, c_href) == 0             # <<<<<<<<<<<<<<
 *     elif c_href is NULL:
 *         if _getNs(c_node) is not NULL:
 */
        __pyx_r = (strcmp(__pyx_v_c_node_href, __pyx_v_c_href) == 0);
        goto __pyx_L0;
      }
      __pyx_L7:;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":870
 *             else:
 *                 return cstd.strcmp(c_node_href, c_href) == 0
 *     elif c_href is NULL:             # <<<<<<<<<<<<<<
 *         if _getNs(c_node) is not NULL:
 *             return 0
 */
  __pyx_t_3 = (__pyx_v_c_href == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":871
 *                 return cstd.strcmp(c_node_href, c_href) == 0
 *     elif c_href is NULL:
 *         if _getNs(c_node) is not NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0
 */
    __pyx_t_3 = (_getNs(__pyx_v_c_node) != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":872
 *     elif c_href is NULL:
 *         if _getNs(c_node) is not NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         return c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0
 *     elif c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0:
 */
      __pyx_r = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":873
 *         if _getNs(c_node) is not NULL:
 *             return 0
 *         return c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0             # <<<<<<<<<<<<<<
 *     elif c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0:
 *         c_node_href = _getNs(c_node)
 */
    __pyx_t_3 = (__pyx_v_c_node->name == __pyx_v_c_name);
    if (!__pyx_t_3) {
      __pyx_t_1 = (strcmp(__pyx_v_c_node->name, __pyx_v_c_name) == 0);
      __pyx_t_2 = __pyx_t_1;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":874
 *             return 0
 *         return c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0
 *     elif c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0:             # <<<<<<<<<<<<<<
 *         c_node_href = _getNs(c_node)
 *         if c_node_href is NULL:
 */
  __pyx_t_2 = (__pyx_v_c_node->name == __pyx_v_c_name);
  if (!__pyx_t_2) {
    __pyx_t_3 = (strcmp(__pyx_v_c_node->name, __pyx_v_c_name) == 0);
    __pyx_t_1 = __pyx_t_3;
  } else {
    __pyx_t_1 = __pyx_t_2;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":875
 *         return c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0
 *     elif c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0:
 *         c_node_href = _getNs(c_node)             # <<<<<<<<<<<<<<
 *         if c_node_href is NULL:
 *             return c_href[0] == c'\0'
 */
    __pyx_v_c_node_href = _getNs(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":876
 *     elif c_node.name == c_name or cstd.strcmp(c_node.name, c_name) == 0:
 *         c_node_href = _getNs(c_node)
 *         if c_node_href is NULL:             # <<<<<<<<<<<<<<
 *             return c_href[0] == c'\0'
 *         else:
 */
    __pyx_t_1 = (__pyx_v_c_node_href == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":877
 *         c_node_href = _getNs(c_node)
 *         if c_node_href is NULL:
 *             return c_href[0] == c'\0'             # <<<<<<<<<<<<<<
 *         else:
 *             return cstd.strcmp(c_node_href, c_href) == 0
 */
      __pyx_r = ((__pyx_v_c_href[0]) == '\x00');
      goto __pyx_L0;
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":879
 *             return c_href[0] == c'\0'
 *         else:
 *             return cstd.strcmp(c_node_href, c_href) == 0             # <<<<<<<<<<<<<<
 *     else:
 *         return 0
 */
      __pyx_r = (strcmp(__pyx_v_c_node_href, __pyx_v_c_href) == 0);
      goto __pyx_L0;
    }
    __pyx_L9:;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":881
 *             return cstd.strcmp(c_node_href, c_href) == 0
 *     else:
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint _tagMatchesExactly(xmlNode* c_node, char* c_href, char* c_name):
 */
    __pyx_r = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":883
 *         return 0
 * 
 * cdef inline bint _tagMatchesExactly(xmlNode* c_node, char* c_href, char* c_name):             # <<<<<<<<<<<<<<
 *     u"""Tests if the node matches namespace URI and tag name.
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__tagMatchesExactly(xmlNode *__pyx_v_c_node, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  char *__pyx_v_c_node_href;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_tagMatchesExactly");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":902
 *     """
 *     cdef char* c_node_href
 *     if c_name is not NULL and c_name is not c_node.name:             # <<<<<<<<<<<<<<
 *         return 0
 *     c_node_href = _getNs(c_node)
 */
  __pyx_t_1 = (__pyx_v_c_name != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_name != __pyx_v_c_node->name);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":903
 *     cdef char* c_node_href
 *     if c_name is not NULL and c_name is not c_node.name:
 *         return 0             # <<<<<<<<<<<<<<
 *     c_node_href = _getNs(c_node)
 *     if c_href is NULL:
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":904
 *     if c_name is not NULL and c_name is not c_node.name:
 *         return 0
 *     c_node_href = _getNs(c_node)             # <<<<<<<<<<<<<<
 *     if c_href is NULL:
 *         return c_node_href is NULL or c_node_href[0] == '\0'
 */
  __pyx_v_c_node_href = _getNs(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":905
 *         return 0
 *     c_node_href = _getNs(c_node)
 *     if c_href is NULL:             # <<<<<<<<<<<<<<
 *         return c_node_href is NULL or c_node_href[0] == '\0'
 *     elif c_node_href is NULL:
 */
  __pyx_t_3 = (__pyx_v_c_href == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":906
 *     c_node_href = _getNs(c_node)
 *     if c_href is NULL:
 *         return c_node_href is NULL or c_node_href[0] == '\0'             # <<<<<<<<<<<<<<
 *     elif c_node_href is NULL:
 *         return 0
 */
    __pyx_t_3 = (__pyx_v_c_node_href == NULL);
    if (!__pyx_t_3) {
      __pyx_t_1 = ((__pyx_v_c_node_href[0]) == '\x00');
      __pyx_t_2 = __pyx_t_1;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
    goto __pyx_L4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":907
 *     if c_href is NULL:
 *         return c_node_href is NULL or c_node_href[0] == '\0'
 *     elif c_node_href is NULL:             # <<<<<<<<<<<<<<
 *         return 0
 *     else:
 */
  __pyx_t_2 = (__pyx_v_c_node_href == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":908
 *         return c_node_href is NULL or c_node_href[0] == '\0'
 *     elif c_node_href is NULL:
 *         return 0             # <<<<<<<<<<<<<<
 *     else:
 *         return cstd.strcmp(c_href, c_node_href) == 0
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":910
 *         return 0
 *     else:
 *         return cstd.strcmp(c_href, c_node_href) == 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _removeNode(_Document doc, xmlNode* c_node) except -1:
 */
    __pyx_r = (strcmp(__pyx_v_c_href, __pyx_v_c_node_href) == 0);
    goto __pyx_L0;
  }
  __pyx_L4:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":912
 *         return cstd.strcmp(c_href, c_node_href) == 0
 * 
 * cdef int _removeNode(_Document doc, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
 *     u"""Unlink and free a node and subnodes if possible.  Otherwise, make sure
 *     it's self-contained.
 */

static  int __pyx_f_4lxml_5etree__removeNode(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_next;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_removeNode");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":917
 *     """
 *     cdef xmlNode* c_next
 *     c_next = c_node.next             # <<<<<<<<<<<<<<
 *     tree.xmlUnlinkNode(c_node)
 *     _moveTail(c_next, c_node)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":918
 *     cdef xmlNode* c_next
 *     c_next = c_node.next
 *     tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *     _moveTail(c_next, c_node)
 *     if not attemptDeallocation(c_node):
 */
  xmlUnlinkNode(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":919
 *     c_next = c_node.next
 *     tree.xmlUnlinkNode(c_node)
 *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *     if not attemptDeallocation(c_node):
 *         # make namespaces absolute
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":920
 *     tree.xmlUnlinkNode(c_node)
 *     _moveTail(c_next, c_node)
 *     if not attemptDeallocation(c_node):             # <<<<<<<<<<<<<<
 *         # make namespaces absolute
 *         moveNodeToDocument(doc, c_node.doc, c_node)
 */
  __pyx_t_1 = (!__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":922
 *     if not attemptDeallocation(c_node):
 *         # make namespaces absolute
 *         moveNodeToDocument(doc, c_node.doc, c_node)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":923
 *         # make namespaces absolute
 *         moveNodeToDocument(doc, c_node.doc, c_node)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _removeSiblings(xmlNode* c_element, int node_type, bint with_tail) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._removeNode");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":925
 *     return 0
 * 
 * cdef int _removeSiblings(xmlNode* c_element, int node_type, bint with_tail) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     cdef xmlNode* c_next
 */

static  int __pyx_f_4lxml_5etree__removeSiblings(xmlNode *__pyx_v_c_element, int __pyx_v_node_type, int __pyx_v_with_tail) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_removeSiblings");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":928
 *     cdef xmlNode* c_node
 *     cdef xmlNode* c_next
 *     c_node = c_element.next             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         c_next = _nextElement(c_node)
 */
  __pyx_v_c_node = __pyx_v_c_element->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":929
 *     cdef xmlNode* c_next
 *     c_node = c_element.next
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         c_next = _nextElement(c_node)
 *         if c_node.type == node_type:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":930
 *     c_node = c_element.next
 *     while c_node is not NULL:
 *         c_next = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *         if c_node.type == node_type:
 *             if with_tail:
 */
    __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":931
 *     while c_node is not NULL:
 *         c_next = _nextElement(c_node)
 *         if c_node.type == node_type:             # <<<<<<<<<<<<<<
 *             if with_tail:
 *                 _removeText(c_node.next)
 */
    __pyx_t_1 = (__pyx_v_c_node->type == __pyx_v_node_type);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":932
 *         c_next = _nextElement(c_node)
 *         if c_node.type == node_type:
 *             if with_tail:             # <<<<<<<<<<<<<<
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)
 */
      __pyx_t_1 = __pyx_v_with_tail;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":933
 *         if c_node.type == node_type:
 *             if with_tail:
 *                 _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)
 */
        __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":934
 *             if with_tail:
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *             attemptDeallocation(c_node)
 *         c_node = c_next
 */
      xmlUnlinkNode(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":935
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)             # <<<<<<<<<<<<<<
 *         c_node = c_next
 *     c_node = c_element.prev
 */
      __pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":936
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)
 *         c_node = c_next             # <<<<<<<<<<<<<<
 *     c_node = c_element.prev
 *     while c_node is not NULL:
 */
    __pyx_v_c_node = __pyx_v_c_next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":937
 *             attemptDeallocation(c_node)
 *         c_node = c_next
 *     c_node = c_element.prev             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         c_next = _previousElement(c_node)
 */
  __pyx_v_c_node = __pyx_v_c_element->prev;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":938
 *         c_node = c_next
 *     c_node = c_element.prev
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         c_next = _previousElement(c_node)
 *         if c_node.type == node_type:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":939
 *     c_node = c_element.prev
 *     while c_node is not NULL:
 *         c_next = _previousElement(c_node)             # <<<<<<<<<<<<<<
 *         if c_node.type == node_type:
 *             if with_tail:
 */
    __pyx_v_c_next = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":940
 *     while c_node is not NULL:
 *         c_next = _previousElement(c_node)
 *         if c_node.type == node_type:             # <<<<<<<<<<<<<<
 *             if with_tail:
 *                 _removeText(c_node.next)
 */
    __pyx_t_1 = (__pyx_v_c_node->type == __pyx_v_node_type);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":941
 *         c_next = _previousElement(c_node)
 *         if c_node.type == node_type:
 *             if with_tail:             # <<<<<<<<<<<<<<
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)
 */
      __pyx_t_1 = __pyx_v_with_tail;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":942
 *         if c_node.type == node_type:
 *             if with_tail:
 *                 _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)
 */
        __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":943
 *             if with_tail:
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *             attemptDeallocation(c_node)
 *         c_node = c_next
 */
      xmlUnlinkNode(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":944
 *                 _removeText(c_node.next)
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)             # <<<<<<<<<<<<<<
 *         c_node = c_next
 *     return 0
 */
      __pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node);
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":945
 *             tree.xmlUnlinkNode(c_node)
 *             attemptDeallocation(c_node)
 *         c_node = c_next             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_c_node = __pyx_v_c_next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":946
 *             attemptDeallocation(c_node)
 *         c_node = c_next
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":948
 *     return 0
 * 
 * cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_next
 *     # tail support: look for any text nodes trailing this node and
 */

static  void __pyx_f_4lxml_5etree__moveTail(xmlNode *__pyx_v_c_tail, xmlNode *__pyx_v_c_target) {
  xmlNode *__pyx_v_c_next;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_moveTail");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":952
 *     # tail support: look for any text nodes trailing this node and
 *     # move them too
 *     c_tail = _textNodeOrSkip(c_tail)             # <<<<<<<<<<<<<<
 *     while c_tail is not NULL:
 *         c_next = _textNodeOrSkip(c_tail.next)
 */
  __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":953
 *     # move them too
 *     c_tail = _textNodeOrSkip(c_tail)
 *     while c_tail is not NULL:             # <<<<<<<<<<<<<<
 *         c_next = _textNodeOrSkip(c_tail.next)
 *         tree.xmlUnlinkNode(c_tail)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_tail != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":954
 *     c_tail = _textNodeOrSkip(c_tail)
 *     while c_tail is not NULL:
 *         c_next = _textNodeOrSkip(c_tail.next)             # <<<<<<<<<<<<<<
 *         tree.xmlUnlinkNode(c_tail)
 *         tree.xmlAddNextSibling(c_target, c_tail)
 */
    __pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":955
 *     while c_tail is not NULL:
 *         c_next = _textNodeOrSkip(c_tail.next)
 *         tree.xmlUnlinkNode(c_tail)             # <<<<<<<<<<<<<<
 *         tree.xmlAddNextSibling(c_target, c_tail)
 *         c_target = c_tail
 */
    xmlUnlinkNode(__pyx_v_c_tail);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":956
 *         c_next = _textNodeOrSkip(c_tail.next)
 *         tree.xmlUnlinkNode(c_tail)
 *         tree.xmlAddNextSibling(c_target, c_tail)             # <<<<<<<<<<<<<<
 *         c_target = c_tail
 *         c_tail = c_next
 */
    xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_tail);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":957
 *         tree.xmlUnlinkNode(c_tail)
 *         tree.xmlAddNextSibling(c_target, c_tail)
 *         c_target = c_tail             # <<<<<<<<<<<<<<
 *         c_tail = c_next
 * 
 */
    __pyx_v_c_target = __pyx_v_c_tail;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":958
 *         tree.xmlAddNextSibling(c_target, c_tail)
 *         c_target = c_tail
 *         c_tail = c_next             # <<<<<<<<<<<<<<
 * 
 * cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1:
 */
    __pyx_v_c_tail = __pyx_v_c_next;
  }

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":960
 *         c_tail = c_next
 * 
 * cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_new_tail
 *     # tail copying support: look for any text nodes trailing this node and
 */

static  int __pyx_f_4lxml_5etree__copyTail(xmlNode *__pyx_v_c_tail, xmlNode *__pyx_v_c_target) {
  xmlNode *__pyx_v_c_new_tail;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_copyTail");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":964
 *     # tail copying support: look for any text nodes trailing this node and
 *     # copy it to the target node
 *     c_tail = _textNodeOrSkip(c_tail)             # <<<<<<<<<<<<<<
 *     while c_tail is not NULL:
 *         if c_target.doc is not c_tail.doc:
 */
  __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":965
 *     # copy it to the target node
 *     c_tail = _textNodeOrSkip(c_tail)
 *     while c_tail is not NULL:             # <<<<<<<<<<<<<<
 *         if c_target.doc is not c_tail.doc:
 *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_tail != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":966
 *     c_tail = _textNodeOrSkip(c_tail)
 *     while c_tail is not NULL:
 *         if c_target.doc is not c_tail.doc:             # <<<<<<<<<<<<<<
 *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
 *         else:
 */
    __pyx_t_1 = (__pyx_v_c_target->doc != __pyx_v_c_tail->doc);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":967
 *     while c_tail is not NULL:
 *         if c_target.doc is not c_tail.doc:
 *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)             # <<<<<<<<<<<<<<
 *         else:
 *             c_new_tail = tree.xmlCopyNode(c_tail, 0)
 */
      __pyx_v_c_new_tail = xmlDocCopyNode(__pyx_v_c_tail, __pyx_v_c_target->doc, 0);
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":969
 *             c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
 *         else:
 *             c_new_tail = tree.xmlCopyNode(c_tail, 0)             # <<<<<<<<<<<<<<
 *         if c_new_tail is NULL:
 *             python.PyErr_NoMemory()
 */
      __pyx_v_c_new_tail = xmlCopyNode(__pyx_v_c_tail, 0);
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":970
 *         else:
 *             c_new_tail = tree.xmlCopyNode(c_tail, 0)
 *         if c_new_tail is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         tree.xmlAddNextSibling(c_target, c_new_tail)
 */
    __pyx_t_1 = (__pyx_v_c_new_tail == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":971
 *             c_new_tail = tree.xmlCopyNode(c_tail, 0)
 *         if c_new_tail is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         tree.xmlAddNextSibling(c_target, c_new_tail)
 *         c_target = c_new_tail
 */
      __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":972
 *         if c_new_tail is NULL:
 *             python.PyErr_NoMemory()
 *         tree.xmlAddNextSibling(c_target, c_new_tail)             # <<<<<<<<<<<<<<
 *         c_target = c_new_tail
 *         c_tail = _textNodeOrSkip(c_tail.next)
 */
    xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_new_tail);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":973
 *             python.PyErr_NoMemory()
 *         tree.xmlAddNextSibling(c_target, c_new_tail)
 *         c_target = c_new_tail             # <<<<<<<<<<<<<<
 *         c_tail = _textNodeOrSkip(c_tail.next)
 *     return 0
 */
    __pyx_v_c_target = __pyx_v_c_new_tail;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":974
 *         tree.xmlAddNextSibling(c_target, c_new_tail)
 *         c_target = c_new_tail
 *         c_tail = _textNodeOrSkip(c_tail.next)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":975
 *         c_target = c_new_tail
 *         c_tail = _textNodeOrSkip(c_tail.next)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._copyTail");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":977
 *     return 0
 * 
 * cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_copy
 *     cdef xmlNode* c_sibling = c_node
 */

static  int __pyx_f_4lxml_5etree__copyNonElementSiblings(xmlNode *__pyx_v_c_node, xmlNode *__pyx_v_c_target) {
  xmlNode *__pyx_v_c_copy;
  xmlNode *__pyx_v_c_sibling;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_copyNonElementSiblings");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":979
 * cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:
 *     cdef xmlNode* c_copy
 *     cdef xmlNode* c_sibling = c_node             # <<<<<<<<<<<<<<
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 */
  __pyx_v_c_sibling = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":980
 *     cdef xmlNode* c_copy
 *     cdef xmlNode* c_sibling = c_node
 *     while c_sibling.prev != NULL and \             # <<<<<<<<<<<<<<
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_sibling->prev != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":981
 *     cdef xmlNode* c_sibling = c_node
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \             # <<<<<<<<<<<<<<
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev
 */
      __pyx_t_2 = (__pyx_v_c_sibling->prev->type == XML_PI_NODE);
      if (!__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":982
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.prev
 *     while c_sibling != c_node:
 */
        __pyx_t_3 = (__pyx_v_c_sibling->prev->type == XML_COMMENT_NODE);
        __pyx_t_4 = __pyx_t_3;
      } else {
        __pyx_t_4 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_4;
    } else {
      __pyx_t_2 = __pyx_t_1;
    }
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":983
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev             # <<<<<<<<<<<<<<
 *     while c_sibling != c_node:
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->prev;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":984
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev
 *     while c_sibling != c_node:             # <<<<<<<<<<<<<<
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_sibling != __pyx_v_c_node);
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":985
 *         c_sibling = c_sibling.prev
 *     while c_sibling != c_node:
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)             # <<<<<<<<<<<<<<
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()
 */
    __pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":986
 *     while c_sibling != c_node:
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         tree.xmlAddPrevSibling(c_target, c_copy)
 */
    __pyx_t_2 = (__pyx_v_c_copy == NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":987
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         tree.xmlAddPrevSibling(c_target, c_copy)
 *         c_sibling = c_sibling.next
 */
      __pyx_t_5 = PyErr_NoMemory(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":988
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()
 *         tree.xmlAddPrevSibling(c_target, c_copy)             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.next
 *     while c_sibling.next != NULL and \
 */
    xmlAddPrevSibling(__pyx_v_c_target, __pyx_v_c_copy);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":989
 *             python.PyErr_NoMemory()
 *         tree.xmlAddPrevSibling(c_target, c_copy)
 *         c_sibling = c_sibling.next             # <<<<<<<<<<<<<<
 *     while c_sibling.next != NULL and \
 *             (c_sibling.next.type == tree.XML_PI_NODE or \
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":990
 *         tree.xmlAddPrevSibling(c_target, c_copy)
 *         c_sibling = c_sibling.next
 *     while c_sibling.next != NULL and \             # <<<<<<<<<<<<<<
 *             (c_sibling.next.type == tree.XML_PI_NODE or \
 *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_sibling->next != NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":991
 *         c_sibling = c_sibling.next
 *     while c_sibling.next != NULL and \
 *             (c_sibling.next.type == tree.XML_PI_NODE or \             # <<<<<<<<<<<<<<
 *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.next
 */
      __pyx_t_1 = (__pyx_v_c_sibling->next->type == XML_PI_NODE);
      if (!__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":992
 *     while c_sibling.next != NULL and \
 *             (c_sibling.next.type == tree.XML_PI_NODE or \
 *                  c_sibling.next.type == tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.next
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 */
        __pyx_t_4 = (__pyx_v_c_sibling->next->type == XML_COMMENT_NODE);
        __pyx_t_3 = __pyx_t_4;
      } else {
        __pyx_t_3 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_3;
    } else {
      __pyx_t_1 = __pyx_t_2;
    }
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":993
 *             (c_sibling.next.type == tree.XML_PI_NODE or \
 *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.next             # <<<<<<<<<<<<<<
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->next;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":994
 *                  c_sibling.next.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.next
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)             # <<<<<<<<<<<<<<
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()
 */
    __pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":995
 *         c_sibling = c_sibling.next
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         tree.xmlAddNextSibling(c_target, c_copy)
 */
    __pyx_t_1 = (__pyx_v_c_copy == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":996
 *         c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         tree.xmlAddNextSibling(c_target, c_copy)
 * 
 */
      __pyx_t_5 = PyErr_NoMemory(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":997
 *         if c_copy is NULL:
 *             python.PyErr_NoMemory()
 *         tree.xmlAddNextSibling(c_target, c_copy)             # <<<<<<<<<<<<<<
 * 
 * cdef int _deleteSlice(_Document doc, xmlNode* c_node,
 */
    xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_copy);
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._copyNonElementSiblings");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":999
 *         tree.xmlAddNextSibling(c_target, c_copy)
 * 
 * cdef int _deleteSlice(_Document doc, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                       Py_ssize_t count, Py_ssize_t step) except -1:
 *     u"""Delete slice, ``count`` items starting with ``c_node`` with a step
 */

static  int __pyx_f_4lxml_5etree__deleteSlice(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_count, Py_ssize_t __pyx_v_step) {
  xmlNode *__pyx_v_c_next;
  Py_ssize_t __pyx_v_c;
  Py_ssize_t __pyx_v_i;
  _node_to_node_function __pyx_v_next_element;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_deleteSlice");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1007
 *     cdef Py_ssize_t c, i
 *     cdef _node_to_node_function next_element
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return 0
 *     if step > 0:
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1008
 *     cdef _node_to_node_function next_element
 *     if c_node is NULL:
 *         return 0             # <<<<<<<<<<<<<<
 *     if step > 0:
 *         next_element = _nextElement
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1009
 *     if c_node is NULL:
 *         return 0
 *     if step > 0:             # <<<<<<<<<<<<<<
 *         next_element = _nextElement
 *     else:
 */
  __pyx_t_1 = (__pyx_v_step > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1010
 *         return 0
 *     if step > 0:
 *         next_element = _nextElement             # <<<<<<<<<<<<<<
 *     else:
 *         step = -step
 */
    __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1012
 *         next_element = _nextElement
 *     else:
 *         step = -step             # <<<<<<<<<<<<<<
 *         next_element = _previousElement
 *     # now start deleting nodes
 */
    __pyx_v_step = (-__pyx_v_step);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1013
 *     else:
 *         step = -step
 *         next_element = _previousElement             # <<<<<<<<<<<<<<
 *     # now start deleting nodes
 *     c = 0
 */
    __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1015
 *         next_element = _previousElement
 *     # now start deleting nodes
 *     c = 0             # <<<<<<<<<<<<<<
 *     c_next = c_node
 *     while c_node is not NULL and c < count:
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1016
 *     # now start deleting nodes
 *     c = 0
 *     c_next = c_node             # <<<<<<<<<<<<<<
 *     while c_node is not NULL and c < count:
 *         for i from 0 <= i < step:
 */
  __pyx_v_c_next = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1017
 *     c = 0
 *     c_next = c_node
 *     while c_node is not NULL and c < count:             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c < __pyx_v_count);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1018
 *     c_next = c_node
 *     while c_node is not NULL and c < count:
 *         for i from 0 <= i < step:             # <<<<<<<<<<<<<<
 *             c_next = next_element(c_next)
 *         _removeNode(doc, c_node)
 */
    __pyx_t_4 = __pyx_v_step;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_4; __pyx_v_i++) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1019
 *     while c_node is not NULL and c < count:
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)             # <<<<<<<<<<<<<<
 *         _removeNode(doc, c_node)
 *         c = c + 1
 */
      __pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1020
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)
 *         _removeNode(doc, c_node)             # <<<<<<<<<<<<<<
 *         c = c + 1
 *         c_node = c_next
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1021
 *             c_next = next_element(c_next)
 *         _removeNode(doc, c_node)
 *         c = c + 1             # <<<<<<<<<<<<<<
 *         c_node = c_next
 *     return 0
 */
    __pyx_v_c = (__pyx_v_c + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1022
 *         _removeNode(doc, c_node)
 *         c = c + 1
 *         c_node = c_next             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_c_node = __pyx_v_c_next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1023
 *         c = c + 1
 *         c_node = c_next
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _replaceSlice(_Element parent, xmlNode* c_node,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._deleteSlice");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1025
 *     return 0
 * 
 * cdef int _replaceSlice(_Element parent, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                        Py_ssize_t slicelength, Py_ssize_t step,
 *                        bint left_to_right, elements) except -1:
 */

static  int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent, xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_slicelength, Py_ssize_t __pyx_v_step, int __pyx_v_left_to_right, PyObject *__pyx_v_elements) {
  xmlNode *__pyx_v_c_orig_neighbour;
  xmlNode *__pyx_v_c_next;
  xmlDoc *__pyx_v_c_source_doc;
  struct LxmlElement *__pyx_v_element;
  Py_ssize_t __pyx_v_seqlength;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_c;
  _node_to_node_function __pyx_v_next_element;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  __Pyx_RefNannySetupContext("_replaceSlice");
  __Pyx_INCREF((PyObject *)__pyx_v_parent);
  __Pyx_INCREF(__pyx_v_elements);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1040
 *     cdef Py_ssize_t seqlength, i, c
 *     cdef _node_to_node_function next_element
 *     assert step > 0             # <<<<<<<<<<<<<<
 *     if left_to_right:
 *         next_element = _nextElement
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_step > 0))) {
    PyErr_SetNone(PyExc_AssertionError);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1041
 *     cdef _node_to_node_function next_element
 *     assert step > 0
 *     if left_to_right:             # <<<<<<<<<<<<<<
 *         next_element = _nextElement
 *     else:
 */
  __pyx_t_1 = __pyx_v_left_to_right;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1042
 *     assert step > 0
 *     if left_to_right:
 *         next_element = _nextElement             # <<<<<<<<<<<<<<
 *     else:
 *         next_element = _previousElement
 */
    __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1044
 *         next_element = _nextElement
 *     else:
 *         next_element = _previousElement             # <<<<<<<<<<<<<<
 * 
 *     if not python.PyList_Check(elements) and \
 */
    __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1046
 *         next_element = _previousElement
 * 
 *     if not python.PyList_Check(elements) and \             # <<<<<<<<<<<<<<
 *             not python.PyTuple_Check(elements):
 *         elements = list(elements)
 */
  __pyx_t_1 = (!PyList_Check(__pyx_v_elements));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1047
 * 
 *     if not python.PyList_Check(elements) and \
 *             not python.PyTuple_Check(elements):             # <<<<<<<<<<<<<<
 *         elements = list(elements)
 * 
 */
    __pyx_t_2 = (!PyTuple_Check(__pyx_v_elements));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1048
 *     if not python.PyList_Check(elements) and \
 *             not python.PyTuple_Check(elements):
 *         elements = list(elements)             # <<<<<<<<<<<<<<
 * 
 *     if step > 1:
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_elements);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_elements);
    __Pyx_GIVEREF(__pyx_v_elements);
    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_elements);
    __pyx_v_elements = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1050
 *         elements = list(elements)
 * 
 *     if step > 1:             # <<<<<<<<<<<<<<
 *         # *replacing* children stepwise with list => check size!
 *         seqlength = len(elements)
 */
  __pyx_t_3 = (__pyx_v_step > 1);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1052
 *     if step > 1:
 *         # *replacing* children stepwise with list => check size!
 *         seqlength = len(elements)             # <<<<<<<<<<<<<<
 *         if seqlength != slicelength:
 *             raise ValueError, u"attempt to assign sequence of size %d " \
 */
    __pyx_t_6 = PyObject_Length(__pyx_v_elements); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_seqlength = __pyx_t_6;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1053
 *         # *replacing* children stepwise with list => check size!
 *         seqlength = len(elements)
 *         if seqlength != slicelength:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"attempt to assign sequence of size %d " \
 *                 u"to extended slice of size %d" % (seqlength, slicelength)
 */
    __pyx_t_3 = (__pyx_v_seqlength != __pyx_v_slicelength);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1055
 *         if seqlength != slicelength:
 *             raise ValueError, u"attempt to assign sequence of size %d " \
 *                 u"to extended slice of size %d" % (seqlength, slicelength)             # <<<<<<<<<<<<<<
 * 
 *     if c_node is NULL:
 */
      __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_seqlength); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_slicelength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_5 = 0;
      __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_16), __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_4, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1057
 *                 u"to extended slice of size %d" % (seqlength, slicelength)
 * 
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         # no children yet => add all elements straight away
 *         if left_to_right:
 */
  __pyx_t_3 = (__pyx_v_c_node == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1059
 *     if c_node is NULL:
 *         # no children yet => add all elements straight away
 *         if left_to_right:             # <<<<<<<<<<<<<<
 *             for element in elements:
 *                 assert element is not None, u"Node must not be None"
 */
    __pyx_t_3 = __pyx_v_left_to_right;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1060
 *         # no children yet => add all elements straight away
 *         if left_to_right:
 *             for element in elements:             # <<<<<<<<<<<<<<
 *                 assert element is not None, u"Node must not be None"
 *                 _appendChild(parent, element)
 */
      if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
        __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
      }
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
        } else {
          __pyx_t_7 = PyIter_Next(__pyx_t_4);
          if (!__pyx_t_7) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(((PyObject *)__pyx_v_element));
        __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
        __pyx_t_7 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1061
 *         if left_to_right:
 *             for element in elements:
 *                 assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *                 _appendChild(parent, element)
 *         else:
 */
        #ifndef PYREX_WITHOUT_ASSERTIONS
        __pyx_t_3 = (((PyObject *)__pyx_v_element) != Py_None);
        if (unlikely(!__pyx_t_3)) {
          PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1062
 *             for element in elements:
 *                 assert element is not None, u"Node must not be None"
 *                 _appendChild(parent, element)             # <<<<<<<<<<<<<<
 *         else:
 *             for element in elements:
 */
        __pyx_t_8 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1064
 *                 _appendChild(parent, element)
 *         else:
 *             for element in elements:             # <<<<<<<<<<<<<<
 *                 assert element is not None, u"Node must not be None"
 *                 _prependChild(parent, element)
 */
      if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
        __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
      }
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
        } else {
          __pyx_t_7 = PyIter_Next(__pyx_t_4);
          if (!__pyx_t_7) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(((PyObject *)__pyx_v_element));
        __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
        __pyx_t_7 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1065
 *         else:
 *             for element in elements:
 *                 assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *                 _prependChild(parent, element)
 *         return 0
 */
        #ifndef PYREX_WITHOUT_ASSERTIONS
        __pyx_t_3 = (((PyObject *)__pyx_v_element) != Py_None);
        if (unlikely(!__pyx_t_3)) {
          PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1066
 *             for element in elements:
 *                 assert element is not None, u"Node must not be None"
 *                 _prependChild(parent, element)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
        __pyx_t_8 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1067
 *                 assert element is not None, u"Node must not be None"
 *                 _prependChild(parent, element)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # remove the elements first as some might be re-added
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1070
 * 
 *     # remove the elements first as some might be re-added
 *     if left_to_right:             # <<<<<<<<<<<<<<
 *         # L->R, remember left neighbour
 *         c_orig_neighbour = _previousElement(c_node)
 */
  __pyx_t_3 = __pyx_v_left_to_right;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1072
 *     if left_to_right:
 *         # L->R, remember left neighbour
 *         c_orig_neighbour = _previousElement(c_node)             # <<<<<<<<<<<<<<
 *     else:
 *         # R->L, remember right neighbour
 */
    __pyx_v_c_orig_neighbour = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
    goto __pyx_L13;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1075
 *     else:
 *         # R->L, remember right neighbour
 *         c_orig_neighbour = _nextElement(c_node)             # <<<<<<<<<<<<<<
 * 
 *     # We remove the original slice elements one by one. Since we hold
 */
    __pyx_v_c_orig_neighbour = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1081
 *     # safe to let _removeNode() try (and fail) to free them even if
 *     # the element itself or one of its descendents will be reinserted.
 *     c = 0             # <<<<<<<<<<<<<<
 *     c_next = c_node
 *     while c_node is not NULL and c < slicelength:
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1082
 *     # the element itself or one of its descendents will be reinserted.
 *     c = 0
 *     c_next = c_node             # <<<<<<<<<<<<<<
 *     while c_node is not NULL and c < slicelength:
 *         for i from 0 <= i < step:
 */
  __pyx_v_c_next = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1083
 *     c = 0
 *     c_next = c_node
 *     while c_node is not NULL and c < slicelength:             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_node != NULL);
    if (__pyx_t_3) {
      __pyx_t_1 = (__pyx_v_c < __pyx_v_slicelength);
      __pyx_t_2 = __pyx_t_1;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1084
 *     c_next = c_node
 *     while c_node is not NULL and c < slicelength:
 *         for i from 0 <= i < step:             # <<<<<<<<<<<<<<
 *             c_next = next_element(c_next)
 *         _removeNode(parent._doc, c_node)
 */
    __pyx_t_6 = __pyx_v_step;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1085
 *     while c_node is not NULL and c < slicelength:
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)             # <<<<<<<<<<<<<<
 *         _removeNode(parent._doc, c_node)
 *         c = c + 1
 */
      __pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1086
 *         for i from 0 <= i < step:
 *             c_next = next_element(c_next)
 *         _removeNode(parent._doc, c_node)             # <<<<<<<<<<<<<<
 *         c = c + 1
 *         c_node = c_next
 */
    __pyx_t_8 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_parent->_doc, __pyx_v_c_node); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1087
 *             c_next = next_element(c_next)
 *         _removeNode(parent._doc, c_node)
 *         c = c + 1             # <<<<<<<<<<<<<<
 *         c_node = c_next
 * 
 */
    __pyx_v_c = (__pyx_v_c + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1088
 *         _removeNode(parent._doc, c_node)
 *         c = c + 1
 *         c_node = c_next             # <<<<<<<<<<<<<<
 * 
 *     # make sure each element is inserted only once
 */
    __pyx_v_c_node = __pyx_v_c_next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1091
 * 
 *     # make sure each element is inserted only once
 *     elements = iter(elements)             # <<<<<<<<<<<<<<
 * 
 *     # find the first node right of the new insertion point
 */
  __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_elements);
  __pyx_v_elements = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1094
 * 
 *     # find the first node right of the new insertion point
 *     if left_to_right:             # <<<<<<<<<<<<<<
 *         if c_orig_neighbour is not NULL:
 *             c_node = next_element(c_orig_neighbour)
 */
  __pyx_t_2 = __pyx_v_left_to_right;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1095
 *     # find the first node right of the new insertion point
 *     if left_to_right:
 *         if c_orig_neighbour is not NULL:             # <<<<<<<<<<<<<<
 *             c_node = next_element(c_orig_neighbour)
 *         else:
 */
    __pyx_t_2 = (__pyx_v_c_orig_neighbour != NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1096
 *     if left_to_right:
 *         if c_orig_neighbour is not NULL:
 *             c_node = next_element(c_orig_neighbour)             # <<<<<<<<<<<<<<
 *         else:
 *             # before the first element
 */
      __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_orig_neighbour);
      goto __pyx_L19;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1099
 *         else:
 *             # before the first element
 *             c_node = _findChildForwards(parent._c_node, 0)             # <<<<<<<<<<<<<<
 *     elif c_orig_neighbour is NULL:
 *         # at the end, but reversed stepping
 */
      __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);
    }
    __pyx_L19:;
    goto __pyx_L18;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1100
 *             # before the first element
 *             c_node = _findChildForwards(parent._c_node, 0)
 *     elif c_orig_neighbour is NULL:             # <<<<<<<<<<<<<<
 *         # at the end, but reversed stepping
 *         # append one element and go to the next insertion point
 */
  __pyx_t_2 = (__pyx_v_c_orig_neighbour == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1103
 *         # at the end, but reversed stepping
 *         # append one element and go to the next insertion point
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             assert element is not None, u"Node must not be None"
 *             _appendChild(parent, element)
 */
    if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
      __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1104
 *         # append one element and go to the next insertion point
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *             _appendChild(parent, element)
 *             c_node = element._c_node
 */
      #ifndef PYREX_WITHOUT_ASSERTIONS
      __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
      if (unlikely(!__pyx_t_2)) {
        PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1105
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"
 *             _appendChild(parent, element)             # <<<<<<<<<<<<<<
 *             c_node = element._c_node
 *             if slicelength > 0:
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1106
 *             assert element is not None, u"Node must not be None"
 *             _appendChild(parent, element)
 *             c_node = element._c_node             # <<<<<<<<<<<<<<
 *             if slicelength > 0:
 *                 slicelength = slicelength - 1
 */
      __pyx_v_c_node = __pyx_v_element->_c_node;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1107
 *             _appendChild(parent, element)
 *             c_node = element._c_node
 *             if slicelength > 0:             # <<<<<<<<<<<<<<
 *                 slicelength = slicelength - 1
 *                 for i from 1 <= i < step:
 */
      __pyx_t_2 = (__pyx_v_slicelength > 0);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1108
 *             c_node = element._c_node
 *             if slicelength > 0:
 *                 slicelength = slicelength - 1             # <<<<<<<<<<<<<<
 *                 for i from 1 <= i < step:
 *                     c_node = next_element(c_node)
 */
        __pyx_v_slicelength = (__pyx_v_slicelength - 1);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1109
 *             if slicelength > 0:
 *                 slicelength = slicelength - 1
 *                 for i from 1 <= i < step:             # <<<<<<<<<<<<<<
 *                     c_node = next_element(c_node)
 *             break
 */
        __pyx_t_9 = __pyx_v_step;
        for (__pyx_v_i = 1; __pyx_v_i < __pyx_t_9; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1110
 *                 slicelength = slicelength - 1
 *                 for i from 1 <= i < step:
 *                     c_node = next_element(c_node)             # <<<<<<<<<<<<<<
 *             break
 * 
 */
          __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
        }
        goto __pyx_L22;
      }
      __pyx_L22:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1111
 *                 for i from 1 <= i < step:
 *                     c_node = next_element(c_node)
 *             break             # <<<<<<<<<<<<<<
 * 
 *     if left_to_right:
 */
      goto __pyx_L21_break;
    }
    __pyx_L21_break:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1113
 *             break
 * 
 *     if left_to_right:             # <<<<<<<<<<<<<<
 *         # adjust step size after removing slice as we are not stepping
 *         # over the newly inserted elements
 */
  __pyx_t_2 = __pyx_v_left_to_right;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1116
 *         # adjust step size after removing slice as we are not stepping
 *         # over the newly inserted elements
 *         step = step - 1             # <<<<<<<<<<<<<<
 * 
 *     # now insert elements where we removed them
 */
    __pyx_v_step = (__pyx_v_step - 1);
    goto __pyx_L25;
  }
  __pyx_L25:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1119
 * 
 *     # now insert elements where we removed them
 *     if c_node is not NULL:             # <<<<<<<<<<<<<<
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"
 */
  __pyx_t_2 = (__pyx_v_c_node != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1120
 *     # now insert elements where we removed them
 *     if c_node is not NULL:
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             assert element is not None, u"Node must not be None"
 *             # move element and tail over
 */
    if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
      __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1121
 *     if c_node is not NULL:
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *             # move element and tail over
 *             c_source_doc = element._c_node.doc
 */
      #ifndef PYREX_WITHOUT_ASSERTIONS
      __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
      if (unlikely(!__pyx_t_2)) {
        PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1123
 *             assert element is not None, u"Node must not be None"
 *             # move element and tail over
 *             c_source_doc = element._c_node.doc             # <<<<<<<<<<<<<<
 *             c_next = element._c_node.next
 *             tree.xmlAddPrevSibling(c_node, element._c_node)
 */
      __pyx_v_c_source_doc = __pyx_v_element->_c_node->doc;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1124
 *             # move element and tail over
 *             c_source_doc = element._c_node.doc
 *             c_next = element._c_node.next             # <<<<<<<<<<<<<<
 *             tree.xmlAddPrevSibling(c_node, element._c_node)
 *             _moveTail(c_next, element._c_node)
 */
      __pyx_v_c_next = __pyx_v_element->_c_node->next;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1125
 *             c_source_doc = element._c_node.doc
 *             c_next = element._c_node.next
 *             tree.xmlAddPrevSibling(c_node, element._c_node)             # <<<<<<<<<<<<<<
 *             _moveTail(c_next, element._c_node)
 * 
 */
      xmlAddPrevSibling(__pyx_v_c_node, __pyx_v_element->_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1126
 *             c_next = element._c_node.next
 *             tree.xmlAddPrevSibling(c_node, element._c_node)
 *             _moveTail(c_next, element._c_node)             # <<<<<<<<<<<<<<
 * 
 *             # integrate element into new document
 */
      __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1129
 * 
 *             # integrate element into new document
 *             moveNodeToDocument(parent._doc, c_source_doc, element._c_node)             # <<<<<<<<<<<<<<
 * 
 *             # stop at the end of the slice
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_parent->_doc, __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1132
 * 
 *             # stop at the end of the slice
 *             if slicelength > 0:             # <<<<<<<<<<<<<<
 *                 slicelength = slicelength - 1
 *                 for i from 0 <= i < step:
 */
      __pyx_t_2 = (__pyx_v_slicelength > 0);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1133
 *             # stop at the end of the slice
 *             if slicelength > 0:
 *                 slicelength = slicelength - 1             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 */
        __pyx_v_slicelength = (__pyx_v_slicelength - 1);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1134
 *             if slicelength > 0:
 *                 slicelength = slicelength - 1
 *                 for i from 0 <= i < step:             # <<<<<<<<<<<<<<
 *                     c_node = next_element(c_node)
 *                 if c_node is NULL:
 */
        __pyx_t_9 = __pyx_v_step;
        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_9; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1135
 *                 slicelength = slicelength - 1
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)             # <<<<<<<<<<<<<<
 *                 if c_node is NULL:
 *                     break
 */
          __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1136
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 *                 if c_node is NULL:             # <<<<<<<<<<<<<<
 *                     break
 *         else:
 */
        __pyx_t_2 = (__pyx_v_c_node == NULL);
        if (__pyx_t_2) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1137
 *                     c_node = next_element(c_node)
 *                 if c_node is NULL:
 *                     break             # <<<<<<<<<<<<<<
 *         else:
 *             # everything inserted
 */
          goto __pyx_L28_break;
          goto __pyx_L32;
        }
        __pyx_L32:;
        goto __pyx_L29;
      }
      __pyx_L29:;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1140
 *         else:
 *             # everything inserted
 *             return 0             # <<<<<<<<<<<<<<
 * 
 *     # append the remaining elements at the respective end
 */
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L28_break:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L26;
  }
  __pyx_L26:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1143
 * 
 *     # append the remaining elements at the respective end
 *     if left_to_right:             # <<<<<<<<<<<<<<
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"
 */
  __pyx_t_2 = __pyx_v_left_to_right;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1144
 *     # append the remaining elements at the respective end
 *     if left_to_right:
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             assert element is not None, u"Node must not be None"
 *             _appendChild(parent, element)
 */
    if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
      __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1145
 *     if left_to_right:
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *             _appendChild(parent, element)
 *     else:
 */
      #ifndef PYREX_WITHOUT_ASSERTIONS
      __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
      if (unlikely(!__pyx_t_2)) {
        PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1146
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"
 *             _appendChild(parent, element)             # <<<<<<<<<<<<<<
 *     else:
 *         for element in elements:
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L33;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1148
 *             _appendChild(parent, element)
 *     else:
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             assert element is not None, u"Node must not be None"
 *             _prependChild(parent, element)
 */
    if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
      __pyx_t_6 = 0; __pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1149
 *     else:
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"             # <<<<<<<<<<<<<<
 *             _prependChild(parent, element)
 * 
 */
      #ifndef PYREX_WITHOUT_ASSERTIONS
      __pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
      if (unlikely(!__pyx_t_2)) {
        PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_17));
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #endif

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1150
 *         for element in elements:
 *             assert element is not None, u"Node must not be None"
 *             _prependChild(parent, element)             # <<<<<<<<<<<<<<
 * 
 *     return 0
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_L33:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1152
 *             _prependChild(parent, element)
 * 
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _appendChild(_Element parent, _Element child) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._replaceSlice");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_parent);
  __Pyx_DECREF(__pyx_v_elements);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1154
 *     return 0
 * 
 * cdef int _appendChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
 *     u"""Append a new child to a parent element.
 *     """
 */

static  int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v_child) {
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_source_doc;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_appendChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1160
 *     cdef xmlNode* c_node
 *     cdef xmlDoc* c_source_doc
 *     c_node = child._c_node             # <<<<<<<<<<<<<<
 *     c_source_doc = c_node.doc
 *     # store possible text node
 */
  __pyx_v_c_node = __pyx_v_child->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1161
 *     cdef xmlDoc* c_source_doc
 *     c_node = child._c_node
 *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
 *     # store possible text node
 *     c_next = c_node.next
 */
  __pyx_v_c_source_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1163
 *     c_source_doc = c_node.doc
 *     # store possible text node
 *     c_next = c_node.next             # <<<<<<<<<<<<<<
 *     # move node itself
 *     tree.xmlUnlinkNode(c_node)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1165
 *     c_next = c_node.next
 *     # move node itself
 *     tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *     tree.xmlAddChild(parent._c_node, c_node)
 *     _moveTail(c_next, c_node)
 */
  xmlUnlinkNode(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1166
 *     # move node itself
 *     tree.xmlUnlinkNode(c_node)
 *     tree.xmlAddChild(parent._c_node, c_node)             # <<<<<<<<<<<<<<
 *     _moveTail(c_next, c_node)
 *     # uh oh, elements may be pointing to different doc when
 */
  xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1167
 *     tree.xmlUnlinkNode(c_node)
 *     tree.xmlAddChild(parent._c_node, c_node)
 *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1170
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 *     moveNodeToDocument(parent._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef int _prependChild(_Element parent, _Element child) except -1:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_parent->_doc, __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._appendChild");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1172
 *     moveNodeToDocument(parent._doc, c_source_doc, c_node)
 * 
 * cdef int _prependChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
 *     u"""Prepend a new child to a parent element.
 *     """
 */

static  int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v_child) {
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_source_doc;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_prependChild");
  __Pyx_INCREF((PyObject *)__pyx_v_parent);
  __Pyx_INCREF((PyObject *)__pyx_v_child);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1179
 *     cdef xmlNode* c_node
 *     cdef xmlDoc* c_source_doc
 *     c_node = child._c_node             # <<<<<<<<<<<<<<
 *     c_source_doc = c_node.doc
 *     # store possible text node
 */
  __pyx_v_c_node = __pyx_v_child->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1180
 *     cdef xmlDoc* c_source_doc
 *     c_node = child._c_node
 *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
 *     # store possible text node
 *     c_next = c_node.next
 */
  __pyx_v_c_source_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1182
 *     c_source_doc = c_node.doc
 *     # store possible text node
 *     c_next = c_node.next             # <<<<<<<<<<<<<<
 *     # move node itself
 *     c_child = _findChildForwards(parent._c_node, 0)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1184
 *     c_next = c_node.next
 *     # move node itself
 *     c_child = _findChildForwards(parent._c_node, 0)             # <<<<<<<<<<<<<<
 *     if c_child is NULL:
 *         tree.xmlUnlinkNode(c_node)
 */
  __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1185
 *     # move node itself
 *     c_child = _findChildForwards(parent._c_node, 0)
 *     if c_child is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlUnlinkNode(c_node)
 *         tree.xmlAddChild(parent._c_node, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_child == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1186
 *     c_child = _findChildForwards(parent._c_node, 0)
 *     if c_child is NULL:
 *         tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *         tree.xmlAddChild(parent._c_node, c_node)
 *     else:
 */
    xmlUnlinkNode(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1187
 *     if c_child is NULL:
 *         tree.xmlUnlinkNode(c_node)
 *         tree.xmlAddChild(parent._c_node, c_node)             # <<<<<<<<<<<<<<
 *     else:
 *         tree.xmlAddPrevSibling(c_child, c_node)
 */
    xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1189
 *         tree.xmlAddChild(parent._c_node, c_node)
 *     else:
 *         tree.xmlAddPrevSibling(c_child, c_node)             # <<<<<<<<<<<<<<
 *     _moveTail(c_next, c_node)
 *     # uh oh, elements may be pointing to different doc when
 */
    xmlAddPrevSibling(__pyx_v_c_child, __pyx_v_c_node);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1190
 *     else:
 *         tree.xmlAddPrevSibling(c_child, c_node)
 *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1193
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 *     moveNodeToDocument(parent._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef int _appendSibling(_Element element, _Element sibling) except -1:
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_parent->_doc, __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._prependChild");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_parent);
  __Pyx_DECREF((PyObject *)__pyx_v_child);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1195
 *     moveNodeToDocument(parent._doc, c_source_doc, c_node)
 * 
 * cdef int _appendSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
 *     u"""Append a new child to a parent element.
 *     """
 */

static  int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_element, struct LxmlElement *__pyx_v_sibling) {
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_source_doc;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_appendSibling");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1201
 *     cdef xmlNode* c_node
 *     cdef xmlDoc* c_source_doc
 *     c_node = sibling._c_node             # <<<<<<<<<<<<<<
 *     c_source_doc = c_node.doc
 *     # store possible text node
 */
  __pyx_v_c_node = __pyx_v_sibling->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1202
 *     cdef xmlDoc* c_source_doc
 *     c_node = sibling._c_node
 *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
 *     # store possible text node
 *     c_next = c_node.next
 */
  __pyx_v_c_source_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1204
 *     c_source_doc = c_node.doc
 *     # store possible text node
 *     c_next = c_node.next             # <<<<<<<<<<<<<<
 *     # move node itself
 *     tree.xmlAddNextSibling(element._c_node, c_node)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1206
 *     c_next = c_node.next
 *     # move node itself
 *     tree.xmlAddNextSibling(element._c_node, c_node)             # <<<<<<<<<<<<<<
 *     _moveTail(c_next, c_node)
 *     # uh oh, elements may be pointing to different doc when
 */
  xmlAddNextSibling(__pyx_v_element->_c_node, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1207
 *     # move node itself
 *     tree.xmlAddNextSibling(element._c_node, c_node)
 *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1210
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 *     moveNodeToDocument(element._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef int _prependSibling(_Element element, _Element sibling) except -1:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_element->_doc, __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._appendSibling");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1212
 *     moveNodeToDocument(element._doc, c_source_doc, c_node)
 * 
 * cdef int _prependSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
 *     u"""Append a new child to a parent element.
 *     """
 */

static  int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_element, struct LxmlElement *__pyx_v_sibling) {
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_source_doc;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_prependSibling");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1218
 *     cdef xmlNode* c_node
 *     cdef xmlDoc* c_source_doc
 *     c_node = sibling._c_node             # <<<<<<<<<<<<<<
 *     c_source_doc = c_node.doc
 *     # store possible text node
 */
  __pyx_v_c_node = __pyx_v_sibling->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1219
 *     cdef xmlDoc* c_source_doc
 *     c_node = sibling._c_node
 *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
 *     # store possible text node
 *     c_next = c_node.next
 */
  __pyx_v_c_source_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1221
 *     c_source_doc = c_node.doc
 *     # store possible text node
 *     c_next = c_node.next             # <<<<<<<<<<<<<<
 *     # move node itself
 *     tree.xmlAddPrevSibling(element._c_node, c_node)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1223
 *     c_next = c_node.next
 *     # move node itself
 *     tree.xmlAddPrevSibling(element._c_node, c_node)             # <<<<<<<<<<<<<<
 *     _moveTail(c_next, c_node)
 *     # uh oh, elements may be pointing to different doc when
 */
  xmlAddPrevSibling(__pyx_v_element->_c_node, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1224
 *     # move node itself
 *     tree.xmlAddPrevSibling(element._c_node, c_node)
 *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1227
 *     # uh oh, elements may be pointing to different doc when
 *     # parent element has moved; change them too..
 *     moveNodeToDocument(element._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int isutf8(char* s):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_element->_doc, __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._prependSibling");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1229
 *     moveNodeToDocument(element._doc, c_source_doc, c_node)
 * 
 * cdef inline int isutf8(char* s):             # <<<<<<<<<<<<<<
 *     cdef char c
 *     c = s[0]
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(char *__pyx_v_s) {
  char __pyx_v_c;
  int __pyx_r;
  int __pyx_t_1;
  long __pyx_t_2;
  __Pyx_RefNannySetupContext("isutf8");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1231
 * cdef inline int isutf8(char* s):
 *     cdef char c
 *     c = s[0]             # <<<<<<<<<<<<<<
 *     while c != c'\0':
 *         if c & 0x80:
 */
  __pyx_v_c = (__pyx_v_s[0]);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1232
 *     cdef char c
 *     c = s[0]
 *     while c != c'\0':             # <<<<<<<<<<<<<<
 *         if c & 0x80:
 *             return 1
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c != '\x00');
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1233
 *     c = s[0]
 *     while c != c'\0':
 *         if c & 0x80:             # <<<<<<<<<<<<<<
 *             return 1
 *         s = s + 1
 */
    __pyx_t_2 = (__pyx_v_c & 0x80);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1234
 *     while c != c'\0':
 *         if c & 0x80:
 *             return 1             # <<<<<<<<<<<<<<
 *         s = s + 1
 *         c = s[0]
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1235
 *         if c & 0x80:
 *             return 1
 *         s = s + 1             # <<<<<<<<<<<<<<
 *         c = s[0]
 *     return 0
 */
    __pyx_v_s = (__pyx_v_s + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1236
 *             return 1
 *         s = s + 1
 *         c = s[0]             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_c = (__pyx_v_s[0]);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1237
 *         s = s + 1
 *         c = s[0]
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int check_string_utf8(pystring):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1239
 *     return 0
 * 
 * cdef int check_string_utf8(pystring):             # <<<<<<<<<<<<<<
 *     u"""Check if a string looks like valid UTF-8 XML content.  Returns 0
 *     for ASCII, 1 for UTF-8 and -1 in the case of errors, such as NULL
 */

static  int __pyx_f_4lxml_5etree_check_string_utf8(PyObject *__pyx_v_pystring) {
  char *__pyx_v_s;
  char *__pyx_v_c_end;
  int __pyx_v_is_non_ascii;
  int __pyx_r;
  int __pyx_t_1;
  long __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("check_string_utf8");
  __Pyx_INCREF(__pyx_v_pystring);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1248
 *     cdef char c
 *     cdef bint is_non_ascii
 *     s = _cstr(pystring)             # <<<<<<<<<<<<<<
 *     c_end = s + python.PyString_GET_SIZE(pystring)
 *     is_non_ascii = 0
 */
  __pyx_v_s = PyString_AS_STRING(__pyx_v_pystring);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1249
 *     cdef bint is_non_ascii
 *     s = _cstr(pystring)
 *     c_end = s + python.PyString_GET_SIZE(pystring)             # <<<<<<<<<<<<<<
 *     is_non_ascii = 0
 *     while s < c_end:
 */
  __pyx_v_c_end = (__pyx_v_s + PyString_GET_SIZE(__pyx_v_pystring));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1250
 *     s = _cstr(pystring)
 *     c_end = s + python.PyString_GET_SIZE(pystring)
 *     is_non_ascii = 0             # <<<<<<<<<<<<<<
 *     while s < c_end:
 *         if s[0] & 0x80:
 */
  __pyx_v_is_non_ascii = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1251
 *     c_end = s + python.PyString_GET_SIZE(pystring)
 *     is_non_ascii = 0
 *     while s < c_end:             # <<<<<<<<<<<<<<
 *         if s[0] & 0x80:
 *             # skip over multi byte sequences
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_s < __pyx_v_c_end);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1252
 *     is_non_ascii = 0
 *     while s < c_end:
 *         if s[0] & 0x80:             # <<<<<<<<<<<<<<
 *             # skip over multi byte sequences
 *             while s < c_end and s[0] & 0x80:
 */
    __pyx_t_2 = ((__pyx_v_s[0]) & 0x80);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1254
 *         if s[0] & 0x80:
 *             # skip over multi byte sequences
 *             while s < c_end and s[0] & 0x80:             # <<<<<<<<<<<<<<
 *                 s += 1
 *             is_non_ascii = 1
 */
      while (1) {
        __pyx_t_1 = (__pyx_v_s < __pyx_v_c_end);
        if (__pyx_t_1) {
          __pyx_t_2 = ((__pyx_v_s[0]) & 0x80);
          __pyx_t_3 = __pyx_t_2;
        } else {
          __pyx_t_3 = __pyx_t_1;
        }
        if (!__pyx_t_3) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1255
 *             # skip over multi byte sequences
 *             while s < c_end and s[0] & 0x80:
 *                 s += 1             # <<<<<<<<<<<<<<
 *             is_non_ascii = 1
 *         if  s < c_end and not tree.xmlIsChar_ch(s[0]):
 */
        __pyx_v_s += 1;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1256
 *             while s < c_end and s[0] & 0x80:
 *                 s += 1
 *             is_non_ascii = 1             # <<<<<<<<<<<<<<
 *         if  s < c_end and not tree.xmlIsChar_ch(s[0]):
 *             return -1 # invalid!
 */
      __pyx_v_is_non_ascii = 1;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1257
 *                 s += 1
 *             is_non_ascii = 1
 *         if  s < c_end and not tree.xmlIsChar_ch(s[0]):             # <<<<<<<<<<<<<<
 *             return -1 # invalid!
 *         s += 1
 */
    __pyx_t_3 = (__pyx_v_s < __pyx_v_c_end);
    if (__pyx_t_3) {
      __pyx_t_1 = (!xmlIsChar_ch((__pyx_v_s[0])));
      __pyx_t_4 = __pyx_t_1;
    } else {
      __pyx_t_4 = __pyx_t_3;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1258
 *             is_non_ascii = 1
 *         if  s < c_end and not tree.xmlIsChar_ch(s[0]):
 *             return -1 # invalid!             # <<<<<<<<<<<<<<
 *         s += 1
 *     return is_non_ascii
 */
      __pyx_r = -1;
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1259
 *         if  s < c_end and not tree.xmlIsChar_ch(s[0]):
 *             return -1 # invalid!
 *         s += 1             # <<<<<<<<<<<<<<
 *     return is_non_ascii
 * 
 */
    __pyx_v_s += 1;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1260
 *             return -1 # invalid!
 *         s += 1
 *     return is_non_ascii             # <<<<<<<<<<<<<<
 * 
 * cdef object funicode(char* s):
 */
  __pyx_r = __pyx_v_is_non_ascii;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_pystring);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1262
 *     return is_non_ascii
 * 
 * cdef object funicode(char* s):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t slen
 *     cdef char* spos
 */

static  PyObject *__pyx_f_4lxml_5etree_funicode(char *__pyx_v_s) {
  Py_ssize_t __pyx_v_slen;
  char *__pyx_v_spos;
  int __pyx_v_is_non_ascii;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  long __pyx_t_3;
  __Pyx_RefNannySetupContext("funicode");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1266
 *     cdef char* spos
 *     cdef bint is_non_ascii
 *     if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *         slen = cstd.strlen(s)
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 */
  __pyx_t_1 = IS_PYTHON3;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1267
 *     cdef bint is_non_ascii
 *     if python.IS_PYTHON3:
 *         slen = cstd.strlen(s)             # <<<<<<<<<<<<<<
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 *     spos = s
 */
    __pyx_v_slen = strlen(__pyx_v_s);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1268
 *     if python.IS_PYTHON3:
 *         slen = cstd.strlen(s)
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)             # <<<<<<<<<<<<<<
 *     spos = s
 *     is_non_ascii = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyUnicode_DecodeUTF8(__pyx_v_s, __pyx_v_slen, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1269
 *         slen = cstd.strlen(s)
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 *     spos = s             # <<<<<<<<<<<<<<
 *     is_non_ascii = 0
 *     while spos[0] != c'\0':
 */
  __pyx_v_spos = __pyx_v_s;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1270
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 *     spos = s
 *     is_non_ascii = 0             # <<<<<<<<<<<<<<
 *     while spos[0] != c'\0':
 *         if spos[0] & 0x80:
 */
  __pyx_v_is_non_ascii = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1271
 *     spos = s
 *     is_non_ascii = 0
 *     while spos[0] != c'\0':             # <<<<<<<<<<<<<<
 *         if spos[0] & 0x80:
 *             is_non_ascii = 1
 */
  while (1) {
    __pyx_t_1 = ((__pyx_v_spos[0]) != '\x00');
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1272
 *     is_non_ascii = 0
 *     while spos[0] != c'\0':
 *         if spos[0] & 0x80:             # <<<<<<<<<<<<<<
 *             is_non_ascii = 1
 *             break
 */
    __pyx_t_3 = ((__pyx_v_spos[0]) & 0x80);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1273
 *     while spos[0] != c'\0':
 *         if spos[0] & 0x80:
 *             is_non_ascii = 1             # <<<<<<<<<<<<<<
 *             break
 *         spos += 1
 */
      __pyx_v_is_non_ascii = 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1274
 *         if spos[0] & 0x80:
 *             is_non_ascii = 1
 *             break             # <<<<<<<<<<<<<<
 *         spos += 1
 *     while spos[0] != c'\0':
 */
      goto __pyx_L5_break;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1275
 *             is_non_ascii = 1
 *             break
 *         spos += 1             # <<<<<<<<<<<<<<
 *     while spos[0] != c'\0':
 *         spos += 1
 */
    __pyx_v_spos += 1;
  }
  __pyx_L5_break:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1276
 *             break
 *         spos += 1
 *     while spos[0] != c'\0':             # <<<<<<<<<<<<<<
 *         spos += 1
 *     slen = spos - s
 */
  while (1) {
    __pyx_t_1 = ((__pyx_v_spos[0]) != '\x00');
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1277
 *         spos += 1
 *     while spos[0] != c'\0':
 *         spos += 1             # <<<<<<<<<<<<<<
 *     slen = spos - s
 *     if is_non_ascii:
 */
    __pyx_v_spos += 1;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1278
 *     while spos[0] != c'\0':
 *         spos += 1
 *     slen = spos - s             # <<<<<<<<<<<<<<
 *     if is_non_ascii:
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 */
  __pyx_v_slen = (__pyx_v_spos - __pyx_v_s);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1279
 *         spos += 1
 *     slen = spos - s
 *     if is_non_ascii:             # <<<<<<<<<<<<<<
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 *     return python.PyString_FromStringAndSize(s, slen)
 */
  __pyx_t_1 = __pyx_v_is_non_ascii;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1280
 *     slen = spos - s
 *     if is_non_ascii:
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)             # <<<<<<<<<<<<<<
 *     return python.PyString_FromStringAndSize(s, slen)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyUnicode_DecodeUTF8(__pyx_v_s, __pyx_v_slen, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1281
 *     if is_non_ascii:
 *         return python.PyUnicode_DecodeUTF8(s, slen, NULL)
 *     return python.PyString_FromStringAndSize(s, slen)             # <<<<<<<<<<<<<<
 * 
 * cdef object _utf8(object s):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyString_FromStringAndSize(__pyx_v_s, __pyx_v_slen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.funicode");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1283
 *     return python.PyString_FromStringAndSize(s, slen)
 * 
 * cdef object _utf8(object s):             # <<<<<<<<<<<<<<
 *     cdef int invalid
 *     if python.PyString_CheckExact(s):
 */

static  PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  int __pyx_v_invalid;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_utf8");
  __Pyx_INCREF(__pyx_v_s);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1285
 * cdef object _utf8(object s):
 *     cdef int invalid
 *     if python.PyString_CheckExact(s):             # <<<<<<<<<<<<<<
 *         invalid = check_string_utf8(s)
 *     elif python.PyUnicode_CheckExact(s) or python.PyUnicode_Check(s):
 */
  __pyx_t_1 = PyString_CheckExact(__pyx_v_s);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1286
 *     cdef int invalid
 *     if python.PyString_CheckExact(s):
 *         invalid = check_string_utf8(s)             # <<<<<<<<<<<<<<
 *     elif python.PyUnicode_CheckExact(s) or python.PyUnicode_Check(s):
 *         s = python.PyUnicode_AsUTF8String(s)
 */
    __pyx_v_invalid = __pyx_f_4lxml_5etree_check_string_utf8(__pyx_v_s);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1287
 *     if python.PyString_CheckExact(s):
 *         invalid = check_string_utf8(s)
 *     elif python.PyUnicode_CheckExact(s) or python.PyUnicode_Check(s):             # <<<<<<<<<<<<<<
 *         s = python.PyUnicode_AsUTF8String(s)
 *         invalid = check_string_utf8(s) == -1
 */
  __pyx_t_1 = PyUnicode_CheckExact(__pyx_v_s);
  if (!__pyx_t_1) {
    __pyx_t_2 = PyUnicode_Check(__pyx_v_s);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1288
 *         invalid = check_string_utf8(s)
 *     elif python.PyUnicode_CheckExact(s) or python.PyUnicode_Check(s):
 *         s = python.PyUnicode_AsUTF8String(s)             # <<<<<<<<<<<<<<
 *         invalid = check_string_utf8(s) == -1
 *     elif python.PyString_Check(s):
 */
    __pyx_t_4 = PyUnicode_AsUTF8String(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_s);
    __pyx_v_s = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1289
 *     elif python.PyUnicode_CheckExact(s) or python.PyUnicode_Check(s):
 *         s = python.PyUnicode_AsUTF8String(s)
 *         invalid = check_string_utf8(s) == -1             # <<<<<<<<<<<<<<
 *     elif python.PyString_Check(s):
 *         invalid = check_string_utf8(s)
 */
    __pyx_v_invalid = (__pyx_f_4lxml_5etree_check_string_utf8(__pyx_v_s) == -1);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1290
 *         s = python.PyUnicode_AsUTF8String(s)
 *         invalid = check_string_utf8(s) == -1
 *     elif python.PyString_Check(s):             # <<<<<<<<<<<<<<
 *         invalid = check_string_utf8(s)
 *     else:
 */
  __pyx_t_3 = PyString_Check(__pyx_v_s);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1291
 *         invalid = check_string_utf8(s) == -1
 *     elif python.PyString_Check(s):
 *         invalid = check_string_utf8(s)             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."
 */
    __pyx_v_invalid = __pyx_f_4lxml_5etree_check_string_utf8(__pyx_v_s);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1293
 *         invalid = check_string_utf8(s)
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."             # <<<<<<<<<<<<<<
 *     if invalid:
 *         raise ValueError, \
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_18), 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1294
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."
 *     if invalid:             # <<<<<<<<<<<<<<
 *         raise ValueError, \
 *             u"All strings must be XML compatible: Unicode or ASCII, no NULL bytes"
 */
  __pyx_t_5 = __pyx_v_invalid;
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1295
 *         raise TypeError, u"Argument must be string or unicode."
 *     if invalid:
 *         raise ValueError, \             # <<<<<<<<<<<<<<
 *             u"All strings must be XML compatible: Unicode or ASCII, no NULL bytes"
 *     return s
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_19), 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1297
 *         raise ValueError, \
 *             u"All strings must be XML compatible: Unicode or ASCII, no NULL bytes"
 *     return s             # <<<<<<<<<<<<<<
 * 
 * cdef bint _isFilePath(char* c_path):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_s);
  __pyx_r = __pyx_v_s;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._utf8");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1299
 *     return s
 * 
 * cdef bint _isFilePath(char* c_path):             # <<<<<<<<<<<<<<
 *     u"simple heuristic to see if a path is a filename"
 *     cdef char c
 */

static  int __pyx_f_4lxml_5etree__isFilePath(char *__pyx_v_c_path) {
  char __pyx_v_c;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_isFilePath");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1303
 *     cdef char c
 *     # test if it looks like an absolute Unix path or a Windows network path
 *     if c_path[0] == c'/':             # <<<<<<<<<<<<<<
 *         return 1
 *     # test if it looks like an absolute Windows path
 */
  __pyx_t_1 = ((__pyx_v_c_path[0]) == '/');
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1304
 *     # test if it looks like an absolute Unix path or a Windows network path
 *     if c_path[0] == c'/':
 *         return 1             # <<<<<<<<<<<<<<
 *     # test if it looks like an absolute Windows path
 *     if (c_path[0] >= c'a' and c_path[0] <= c'z') or \
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1306
 *         return 1
 *     # test if it looks like an absolute Windows path
 *     if (c_path[0] >= c'a' and c_path[0] <= c'z') or \             # <<<<<<<<<<<<<<
 *             (c_path[0] >= c'A' and c_path[0] <= c'Z'):
 *         if c_path[1] == c':':
 */
  __pyx_t_1 = ((__pyx_v_c_path[0]) >= 'a');
  if (__pyx_t_1) {
    __pyx_t_2 = ((__pyx_v_c_path[0]) <= 'z');
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1307
 *     # test if it looks like an absolute Windows path
 *     if (c_path[0] >= c'a' and c_path[0] <= c'z') or \
 *             (c_path[0] >= c'A' and c_path[0] <= c'Z'):             # <<<<<<<<<<<<<<
 *         if c_path[1] == c':':
 *             return 1
 */
    __pyx_t_1 = ((__pyx_v_c_path[0]) >= 'A');
    if (__pyx_t_1) {
      __pyx_t_2 = ((__pyx_v_c_path[0]) <= 'Z');
      __pyx_t_4 = __pyx_t_2;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    __pyx_t_1 = __pyx_t_4;
  } else {
    __pyx_t_1 = __pyx_t_3;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1308
 *     if (c_path[0] >= c'a' and c_path[0] <= c'z') or \
 *             (c_path[0] >= c'A' and c_path[0] <= c'Z'):
 *         if c_path[1] == c':':             # <<<<<<<<<<<<<<
 *             return 1
 *     # test if it looks like a relative path
 */
    __pyx_t_1 = ((__pyx_v_c_path[1]) == ':');
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1309
 *             (c_path[0] >= c'A' and c_path[0] <= c'Z'):
 *         if c_path[1] == c':':
 *             return 1             # <<<<<<<<<<<<<<
 *     # test if it looks like a relative path
 *     while c_path[0] != c'\0':
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1311
 *             return 1
 *     # test if it looks like a relative path
 *     while c_path[0] != c'\0':             # <<<<<<<<<<<<<<
 *         c = c_path[0]
 *         if c == c':':
 */
  while (1) {
    __pyx_t_1 = ((__pyx_v_c_path[0]) != '\x00');
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1312
 *     # test if it looks like a relative path
 *     while c_path[0] != c'\0':
 *         c = c_path[0]             # <<<<<<<<<<<<<<
 *         if c == c':':
 *             return 0
 */
    __pyx_v_c = (__pyx_v_c_path[0]);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1313
 *     while c_path[0] != c'\0':
 *         c = c_path[0]
 *         if c == c':':             # <<<<<<<<<<<<<<
 *             return 0
 *         elif c == c'/':
 */
    switch (__pyx_v_c) {
      case ':':

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1314
 *         c = c_path[0]
 *         if c == c':':
 *             return 0             # <<<<<<<<<<<<<<
 *         elif c == c'/':
 *             return 1
 */
      __pyx_r = 0;
      goto __pyx_L0;
      break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1315
 *         if c == c':':
 *             return 0
 *         elif c == c'/':             # <<<<<<<<<<<<<<
 *             return 1
 *         elif c == c'\\':
 */
      case '/':

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1316
 *             return 0
 *         elif c == c'/':
 *             return 1             # <<<<<<<<<<<<<<
 *         elif c == c'\\':
 *             return 1
 */
      __pyx_r = 1;
      goto __pyx_L0;
      break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1317
 *         elif c == c'/':
 *             return 1
 *         elif c == c'\\':             # <<<<<<<<<<<<<<
 *             return 1
 *         c_path += 1
 */
      case '\\':

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1318
 *             return 1
 *         elif c == c'\\':
 *             return 1             # <<<<<<<<<<<<<<
 *         c_path += 1
 *     return 1
 */
      __pyx_r = 1;
      goto __pyx_L0;
      break;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1319
 *         elif c == c'\\':
 *             return 1
 *         c_path += 1             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
    __pyx_v_c_path += 1;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1320
 *             return 1
 *         c_path += 1
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef object _encodeFilename(object filename):
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1322
 *     return 1
 * 
 * cdef object _encodeFilename(object filename):             # <<<<<<<<<<<<<<
 *     u"""Make sure a filename is 8-bit encoded (or None).
 *     """
 */

static  PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename) {
  PyObject *__pyx_v_filename8;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  char *__pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_encodeFilename");
  __Pyx_INCREF(__pyx_v_filename);
  __pyx_v_filename8 = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1325
 *     u"""Make sure a filename is 8-bit encoded (or None).
 *     """
 *     if filename is None:             # <<<<<<<<<<<<<<
 *         return None
 *     elif python.PyString_Check(filename):
 */
  __pyx_t_1 = (__pyx_v_filename == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1326
 *     """
 *     if filename is None:
 *         return None             # <<<<<<<<<<<<<<
 *     elif python.PyString_Check(filename):
 *         return filename
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1327
 *     if filename is None:
 *         return None
 *     elif python.PyString_Check(filename):             # <<<<<<<<<<<<<<
 *         return filename
 *     elif python.PyUnicode_Check(filename):
 */
  __pyx_t_1 = PyString_Check(__pyx_v_filename);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1328
 *         return None
 *     elif python.PyString_Check(filename):
 *         return filename             # <<<<<<<<<<<<<<
 *     elif python.PyUnicode_Check(filename):
 *         filename8 = python.PyUnicode_AsEncodedString(
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_filename);
    __pyx_r = __pyx_v_filename;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1329
 *     elif python.PyString_Check(filename):
 *         return filename
 *     elif python.PyUnicode_Check(filename):             # <<<<<<<<<<<<<<
 *         filename8 = python.PyUnicode_AsEncodedString(
 *             filename, 'UTF-8', NULL)
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_filename);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1331
 *     elif python.PyUnicode_Check(filename):
 *         filename8 = python.PyUnicode_AsEncodedString(
 *             filename, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *         if _isFilePath(filename8):
 *             try:
 */
    __pyx_t_2 = PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_filename8);
    __pyx_v_filename8 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1332
 *         filename8 = python.PyUnicode_AsEncodedString(
 *             filename, 'UTF-8', NULL)
 *         if _isFilePath(filename8):             # <<<<<<<<<<<<<<
 *             try:
 *                 return python.PyUnicode_AsEncodedString(
 */
    __pyx_t_3 = __Pyx_PyBytes_AsString(__pyx_v_filename8); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __pyx_f_4lxml_5etree__isFilePath(__pyx_t_3);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1333
 *             filename, 'UTF-8', NULL)
 *         if _isFilePath(filename8):
 *             try:             # <<<<<<<<<<<<<<
 *                 return python.PyUnicode_AsEncodedString(
 *                     filename, _C_FILENAME_ENCODING, NULL)
 */
      {
        PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
        __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
        __Pyx_XGOTREF(__pyx_save_exc_type);
        __Pyx_XGOTREF(__pyx_save_exc_value);
        __Pyx_XGOTREF(__pyx_save_exc_tb);
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1334
 *         if _isFilePath(filename8):
 *             try:
 *                 return python.PyUnicode_AsEncodedString(             # <<<<<<<<<<<<<<
 *                     filename, _C_FILENAME_ENCODING, NULL)
 *             except UnicodeEncodeError:
 */
          __Pyx_XDECREF(__pyx_r);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1335
 *             try:
 *                 return python.PyUnicode_AsEncodedString(
 *                     filename, _C_FILENAME_ENCODING, NULL)             # <<<<<<<<<<<<<<
 *             except UnicodeEncodeError:
 *                 pass
 */
          __pyx_t_2 = PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_r = __pyx_t_2;
          __pyx_t_2 = 0;
          goto __pyx_L9_try_return;
        }
        __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
        __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
        __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
        goto __pyx_L12_try_end;
        __pyx_L9_try_return:;
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        goto __pyx_L0;
        __pyx_L5_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1336
 *                 return python.PyUnicode_AsEncodedString(
 *                     filename, _C_FILENAME_ENCODING, NULL)
 *             except UnicodeEncodeError:             # <<<<<<<<<<<<<<
 *                 pass
 *         return filename8
 */
        __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeEncodeError);
        if (__pyx_t_4) {
          PyErr_Restore(0,0,0);
          goto __pyx_L6_exception_handled;
        }
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        goto __pyx_L1_error;
        __pyx_L6_exception_handled:;
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        __pyx_L12_try_end:;
      }
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1338
 *             except UnicodeEncodeError:
 *                 pass
 *         return filename8             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_filename8);
    __pyx_r = __pyx_v_filename8;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1340
 *         return filename8
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."             # <<<<<<<<<<<<<<
 * 
 * cdef object _decodeFilename(char* c_path):
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_18), 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._encodeFilename");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_filename8);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1342
 *         raise TypeError, u"Argument must be string or unicode."
 * 
 * cdef object _decodeFilename(char* c_path):             # <<<<<<<<<<<<<<
 *     u"""Make the filename a unicode string if we are in Py3.
 *     """
 */

static  PyObject *__pyx_f_4lxml_5etree__decodeFilename(char *__pyx_v_c_path) {
  Py_ssize_t __pyx_v_c_len;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_decodeFilename");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1345
 *     u"""Make the filename a unicode string if we are in Py3.
 *     """
 *     cdef Py_ssize_t c_len = cstd.strlen(c_path)             # <<<<<<<<<<<<<<
 *     if _isFilePath(c_path):
 *         try:
 */
  __pyx_v_c_len = strlen(__pyx_v_c_path);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1346
 *     """
 *     cdef Py_ssize_t c_len = cstd.strlen(c_path)
 *     if _isFilePath(c_path):             # <<<<<<<<<<<<<<
 *         try:
 *             return python.PyUnicode_Decode(
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__isFilePath(__pyx_v_c_path);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1347
 *     cdef Py_ssize_t c_len = cstd.strlen(c_path)
 *     if _isFilePath(c_path):
 *         try:             # <<<<<<<<<<<<<<
 *             return python.PyUnicode_Decode(
 *                 c_path, c_len, _C_FILENAME_ENCODING, NULL)
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1348
 *     if _isFilePath(c_path):
 *         try:
 *             return python.PyUnicode_Decode(             # <<<<<<<<<<<<<<
 *                 c_path, c_len, _C_FILENAME_ENCODING, NULL)
 *         except UnicodeDecodeError:
 */
        __Pyx_XDECREF(__pyx_r);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1349
 *         try:
 *             return python.PyUnicode_Decode(
 *                 c_path, c_len, _C_FILENAME_ENCODING, NULL)             # <<<<<<<<<<<<<<
 *         except UnicodeDecodeError:
 *             pass
 */
        __pyx_t_2 = PyUnicode_Decode(__pyx_v_c_path, __pyx_v_c_len, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        goto __pyx_L8_try_return;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L11_try_end;
      __pyx_L8_try_return:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L0;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1350
 *             return python.PyUnicode_Decode(
 *                 c_path, c_len, _C_FILENAME_ENCODING, NULL)
 *         except UnicodeDecodeError:             # <<<<<<<<<<<<<<
 *             pass
 *     try:
 */
      __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
      if (__pyx_t_3) {
        PyErr_Restore(0,0,0);
        goto __pyx_L5_exception_handled;
      }
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L11_try_end:;
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1352
 *         except UnicodeDecodeError:
 *             pass
 *     try:             # <<<<<<<<<<<<<<
 *         return python.PyUnicode_DecodeUTF8(c_path, c_len, NULL)
 *     except UnicodeDecodeError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1353
 *             pass
 *     try:
 *         return python.PyUnicode_DecodeUTF8(c_path, c_len, NULL)             # <<<<<<<<<<<<<<
 *     except UnicodeDecodeError:
 *         # this is a stupid fallback, but it might still work...
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyUnicode_DecodeUTF8(__pyx_v_c_path, __pyx_v_c_len, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L16_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L19_try_end;
    __pyx_L16_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L12_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1354
 *     try:
 *         return python.PyUnicode_DecodeUTF8(c_path, c_len, NULL)
 *     except UnicodeDecodeError:             # <<<<<<<<<<<<<<
 *         # this is a stupid fallback, but it might still work...
 *         return python.PyUnicode_DecodeLatin1(c_path, c_len, 'replace')
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree._decodeFilename");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1356
 *     except UnicodeDecodeError:
 *         # this is a stupid fallback, but it might still work...
 *         return python.PyUnicode_DecodeLatin1(c_path, c_len, 'replace')             # <<<<<<<<<<<<<<
 * 
 * cdef object _encodeFilenameUTF8(object filename):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_6 = PyUnicode_DecodeLatin1(__pyx_v_c_path, __pyx_v_c_len, __pyx_k__replace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_r = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L15_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L13_exception_handled;
    }
    __pyx_L14_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L15_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L13_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L19_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._decodeFilename");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1358
 *         return python.PyUnicode_DecodeLatin1(c_path, c_len, 'replace')
 * 
 * cdef object _encodeFilenameUTF8(object filename):             # <<<<<<<<<<<<<<
 *     u"""Recode filename as UTF-8. Tries ASCII, local filesystem encoding and
 *     UTF-8 as source encoding.
 */

static  PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_filename) {
  char *__pyx_v_c_filename;
  PyObject *__pyx_v_decode_exc;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_encodeFilenameUTF8");
  __Pyx_INCREF(__pyx_v_filename);
  __pyx_v_decode_exc = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1363
 *     """
 *     cdef char* c_filename
 *     if filename is None:             # <<<<<<<<<<<<<<
 *         return None
 *     elif python.PyString_Check(filename):
 */
  __pyx_t_1 = (__pyx_v_filename == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1364
 *     cdef char* c_filename
 *     if filename is None:
 *         return None             # <<<<<<<<<<<<<<
 *     elif python.PyString_Check(filename):
 *         if not check_string_utf8(filename):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1365
 *     if filename is None:
 *         return None
 *     elif python.PyString_Check(filename):             # <<<<<<<<<<<<<<
 *         if not check_string_utf8(filename):
 *             # plain ASCII!
 */
  __pyx_t_1 = PyString_Check(__pyx_v_filename);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1366
 *         return None
 *     elif python.PyString_Check(filename):
 *         if not check_string_utf8(filename):             # <<<<<<<<<<<<<<
 *             # plain ASCII!
 *             return filename
 */
    __pyx_t_1 = (!__pyx_f_4lxml_5etree_check_string_utf8(__pyx_v_filename));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1368
 *         if not check_string_utf8(filename):
 *             # plain ASCII!
 *             return filename             # <<<<<<<<<<<<<<
 *         c_filename = _cstr(filename)
 *         try:
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_filename);
      __pyx_r = __pyx_v_filename;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1369
 *             # plain ASCII!
 *             return filename
 *         c_filename = _cstr(filename)             # <<<<<<<<<<<<<<
 *         try:
 *             # try to decode with default encoding
 */
    __pyx_v_c_filename = PyString_AS_STRING(__pyx_v_filename);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1370
 *             return filename
 *         c_filename = _cstr(filename)
 *         try:             # <<<<<<<<<<<<<<
 *             # try to decode with default encoding
 *             filename = python.PyUnicode_Decode(
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1374
 *             filename = python.PyUnicode_Decode(
 *                 c_filename, python.PyString_GET_SIZE(filename),
 *                 _C_FILENAME_ENCODING, NULL)             # <<<<<<<<<<<<<<
 *         except UnicodeDecodeError, decode_exc:
 *             try:
 */
        __pyx_t_2 = PyUnicode_Decode(__pyx_v_c_filename, PyString_GET_SIZE(__pyx_v_filename), __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_filename);
        __pyx_v_filename = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1375
 *                 c_filename, python.PyString_GET_SIZE(filename),
 *                 _C_FILENAME_ENCODING, NULL)
 *         except UnicodeDecodeError, decode_exc:             # <<<<<<<<<<<<<<
 *             try:
 *                 # try if it's UTF-8
 */
      __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
      if (__pyx_t_3) {
        __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8");
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_v_decode_exc);
        __pyx_v_decode_exc = __pyx_t_4;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1376
 *                 _C_FILENAME_ENCODING, NULL)
 *         except UnicodeDecodeError, decode_exc:
 *             try:             # <<<<<<<<<<<<<<
 *                 # try if it's UTF-8
 *                 filename = python.PyUnicode_DecodeUTF8(
 */
        {
          PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
          __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
          __Pyx_XGOTREF(__pyx_save_exc_type);
          __Pyx_XGOTREF(__pyx_save_exc_value);
          __Pyx_XGOTREF(__pyx_save_exc_tb);
          /*try:*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1379
 *                 # try if it's UTF-8
 *                 filename = python.PyUnicode_DecodeUTF8(
 *                     c_filename, python.PyString_GET_SIZE(filename), NULL)             # <<<<<<<<<<<<<<
 *             except UnicodeDecodeError:
 *                 raise decode_exc # otherwise re-raise original exception
 */
            __pyx_t_6 = PyUnicode_DecodeUTF8(__pyx_v_c_filename, PyString_GET_SIZE(__pyx_v_filename), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_v_filename);
            __pyx_v_filename = __pyx_t_6;
            __pyx_t_6 = 0;
          }
          __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
          __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
          __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
          goto __pyx_L22_try_end;
          __pyx_L15_error:;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1380
 *                 filename = python.PyUnicode_DecodeUTF8(
 *                     c_filename, python.PyString_GET_SIZE(filename), NULL)
 *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
 *                 raise decode_exc # otherwise re-raise original exception
 *     if python.PyUnicode_Check(filename):
 */
          __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
          if (__pyx_t_3) {
            __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8");
            if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1380; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GOTREF(__pyx_t_8);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1381
 *                     c_filename, python.PyString_GET_SIZE(filename), NULL)
 *             except UnicodeDecodeError:
 *                 raise decode_exc # otherwise re-raise original exception             # <<<<<<<<<<<<<<
 *     if python.PyUnicode_Check(filename):
 *         return python.PyUnicode_AsUTF8String(filename)
 */
            __Pyx_Raise(__pyx_v_decode_exc, 0, 0);
            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            goto __pyx_L16_exception_handled;
          }
          __pyx_L17_except_error:;
          __Pyx_XGIVEREF(__pyx_save_exc_type);
          __Pyx_XGIVEREF(__pyx_save_exc_value);
          __Pyx_XGIVEREF(__pyx_save_exc_tb);
          __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
          goto __pyx_L7_except_error;
          __pyx_L16_exception_handled:;
          __Pyx_XGIVEREF(__pyx_save_exc_type);
          __Pyx_XGIVEREF(__pyx_save_exc_value);
          __Pyx_XGIVEREF(__pyx_save_exc_tb);
          __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
          __pyx_L22_try_end:;
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L6_exception_handled;
      }
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L12_try_end:;
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1382
 *             except UnicodeDecodeError:
 *                 raise decode_exc # otherwise re-raise original exception
 *     if python.PyUnicode_Check(filename):             # <<<<<<<<<<<<<<
 *         return python.PyUnicode_AsUTF8String(filename)
 *     else:
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_filename);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1383
 *                 raise decode_exc # otherwise re-raise original exception
 *     if python.PyUnicode_Check(filename):
 *         return python.PyUnicode_AsUTF8String(filename)             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = PyUnicode_AsUTF8String(__pyx_v_filename); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L25;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1385
 *         return python.PyUnicode_AsUTF8String(filename)
 *     else:
 *         raise TypeError, u"Argument must be string or unicode."             # <<<<<<<<<<<<<<
 * 
 * cdef _getNsTag(tag):
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_18), 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L25:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_decode_exc);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1387
 *         raise TypeError, u"Argument must be string or unicode."
 * 
 * cdef _getNsTag(tag):             # <<<<<<<<<<<<<<
 *     u"""Given a tag, find namespace URI and tag name.
 *     Return None for NS uri if no namespace URI available.
 */

static  PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
  char *__pyx_v_c_tag;
  char *__pyx_v_c_ns_end;
  Py_ssize_t __pyx_v_taglen;
  Py_ssize_t __pyx_v_nslen;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_getNsTag");
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1396
 *     cdef Py_ssize_t nslen
 *     # _isString() is much faster than isinstance()
 *     if not _isString(tag) and isinstance(tag, QName):             # <<<<<<<<<<<<<<
 *         tag = (<QName>tag).text
 *     tag = _utf8(tag)
 */
  __pyx_t_1 = (!_isString(__pyx_v_tag));
  if (__pyx_t_1) {
    __pyx_t_2 = PyObject_TypeCheck(__pyx_v_tag, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1397
 *     # _isString() is much faster than isinstance()
 *     if not _isString(tag) and isinstance(tag, QName):
 *         tag = (<QName>tag).text             # <<<<<<<<<<<<<<
 *     tag = _utf8(tag)
 *     c_tag = _cstr(tag)
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_tag)->text);
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_tag)->text;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1398
 *     if not _isString(tag) and isinstance(tag, QName):
 *         tag = (<QName>tag).text
 *     tag = _utf8(tag)             # <<<<<<<<<<<<<<
 *     c_tag = _cstr(tag)
 *     if c_tag[0] == c'{':
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_tag);
  __pyx_v_tag = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1399
 *         tag = (<QName>tag).text
 *     tag = _utf8(tag)
 *     c_tag = _cstr(tag)             # <<<<<<<<<<<<<<
 *     if c_tag[0] == c'{':
 *         c_tag = c_tag + 1
 */
  __pyx_v_c_tag = PyString_AS_STRING(__pyx_v_tag);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1400
 *     tag = _utf8(tag)
 *     c_tag = _cstr(tag)
 *     if c_tag[0] == c'{':             # <<<<<<<<<<<<<<
 *         c_tag = c_tag + 1
 *         c_ns_end = cstd.strchr(c_tag, c'}')
 */
  __pyx_t_3 = ((__pyx_v_c_tag[0]) == '{');
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1401
 *     c_tag = _cstr(tag)
 *     if c_tag[0] == c'{':
 *         c_tag = c_tag + 1             # <<<<<<<<<<<<<<
 *         c_ns_end = cstd.strchr(c_tag, c'}')
 *         if c_ns_end is NULL:
 */
      __pyx_v_c_tag = (__pyx_v_c_tag + 1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1402
 *     if c_tag[0] == c'{':
 *         c_tag = c_tag + 1
 *         c_ns_end = cstd.strchr(c_tag, c'}')             # <<<<<<<<<<<<<<
 *         if c_ns_end is NULL:
 *             raise ValueError, u"Invalid tag name"
 */
    __pyx_v_c_ns_end = strchr(__pyx_v_c_tag, '}');

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1403
 *         c_tag = c_tag + 1
 *         c_ns_end = cstd.strchr(c_tag, c'}')
 *         if c_ns_end is NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Invalid tag name"
 *         nslen  = c_ns_end - c_tag
 */
    __pyx_t_3 = (__pyx_v_c_ns_end == NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1404
 *         c_ns_end = cstd.strchr(c_tag, c'}')
 *         if c_ns_end is NULL:
 *             raise ValueError, u"Invalid tag name"             # <<<<<<<<<<<<<<
 *         nslen  = c_ns_end - c_tag
 *         taglen = python.PyString_GET_SIZE(tag) - nslen - 2
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_21), 0);
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1405
 *         if c_ns_end is NULL:
 *             raise ValueError, u"Invalid tag name"
 *         nslen  = c_ns_end - c_tag             # <<<<<<<<<<<<<<
 *         taglen = python.PyString_GET_SIZE(tag) - nslen - 2
 *         if taglen == 0:
 */
    __pyx_v_nslen = (__pyx_v_c_ns_end - __pyx_v_c_tag);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1406
 *             raise ValueError, u"Invalid tag name"
 *         nslen  = c_ns_end - c_tag
 *         taglen = python.PyString_GET_SIZE(tag) - nslen - 2             # <<<<<<<<<<<<<<
 *         if taglen == 0:
 *             raise ValueError, u"Empty tag name"
 */
    __pyx_v_taglen = ((PyString_GET_SIZE(__pyx_v_tag) - __pyx_v_nslen) - 2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1407
 *         nslen  = c_ns_end - c_tag
 *         taglen = python.PyString_GET_SIZE(tag) - nslen - 2
 *         if taglen == 0:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Empty tag name"
 *         if nslen > 0:
 */
    __pyx_t_3 = (__pyx_v_taglen == 0);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1408
 *         taglen = python.PyString_GET_SIZE(tag) - nslen - 2
 *         if taglen == 0:
 *             raise ValueError, u"Empty tag name"             # <<<<<<<<<<<<<<
 *         if nslen > 0:
 *             ns = python.PyString_FromStringAndSize(c_tag,   nslen)
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_22), 0);
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1409
 *         if taglen == 0:
 *             raise ValueError, u"Empty tag name"
 *         if nslen > 0:             # <<<<<<<<<<<<<<
 *             ns = python.PyString_FromStringAndSize(c_tag,   nslen)
 *         tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)
 */
    __pyx_t_3 = (__pyx_v_nslen > 0);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1410
 *             raise ValueError, u"Empty tag name"
 *         if nslen > 0:
 *             ns = python.PyString_FromStringAndSize(c_tag,   nslen)             # <<<<<<<<<<<<<<
 *         tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)
 *     elif python.PyString_GET_SIZE(tag) == 0:
 */
      __pyx_t_4 = PyString_FromStringAndSize(__pyx_v_c_tag, __pyx_v_nslen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1411
 *         if nslen > 0:
 *             ns = python.PyString_FromStringAndSize(c_tag,   nslen)
 *         tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)             # <<<<<<<<<<<<<<
 *     elif python.PyString_GET_SIZE(tag) == 0:
 *         raise ValueError, u"Empty tag name"
 */
    __pyx_t_4 = PyString_FromStringAndSize((__pyx_v_c_ns_end + 1), __pyx_v_taglen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1412
 *             ns = python.PyString_FromStringAndSize(c_tag,   nslen)
 *         tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)
 *     elif python.PyString_GET_SIZE(tag) == 0:             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Empty tag name"
 *     return ns, tag
 */
  __pyx_t_3 = (PyString_GET_SIZE(__pyx_v_tag) == 0);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1413
 *         tag = python.PyString_FromStringAndSize(c_ns_end+1, taglen)
 *     elif python.PyString_GET_SIZE(tag) == 0:
 *         raise ValueError, u"Empty tag name"             # <<<<<<<<<<<<<<
 *     return ns, tag
 * 
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_22), 0);
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1414
 *     elif python.PyString_GET_SIZE(tag) == 0:
 *         raise ValueError, u"Empty tag name"
 *     return ns, tag             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _pyXmlNameIsValid(name_utf8):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_ns);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_ns);
  __Pyx_GIVEREF(__pyx_v_ns);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._getNsTag");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1416
 *     return ns, tag
 * 
 * cdef inline int _pyXmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
 *     return _xmlNameIsValid(_cstr(name_utf8))
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_v_name_utf8) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_pyXmlNameIsValid");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1417
 * 
 * cdef inline int _pyXmlNameIsValid(name_utf8):
 *     return _xmlNameIsValid(_cstr(name_utf8))             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _pyHtmlNameIsValid(name_utf8):
 */
  __pyx_r = __pyx_f_4lxml_5etree__xmlNameIsValid(PyString_AS_STRING(__pyx_v_name_utf8));
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1419
 *     return _xmlNameIsValid(_cstr(name_utf8))
 * 
 * cdef inline int _pyHtmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
 *     return _htmlNameIsValid(_cstr(name_utf8))
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx_v_name_utf8) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_pyHtmlNameIsValid");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1420
 * 
 * cdef inline int _pyHtmlNameIsValid(name_utf8):
 *     return _htmlNameIsValid(_cstr(name_utf8))             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _xmlNameIsValid(char* c_name):
 */
  __pyx_r = __pyx_f_4lxml_5etree__htmlNameIsValid(PyString_AS_STRING(__pyx_v_name_utf8));
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1422
 *     return _htmlNameIsValid(_cstr(name_utf8))
 * 
 * cdef inline int _xmlNameIsValid(char* c_name):             # <<<<<<<<<<<<<<
 *     return tree.xmlValidateNCName(c_name, 0) == 0
 * 
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(char *__pyx_v_c_name) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_xmlNameIsValid");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1423
 * 
 * cdef inline int _xmlNameIsValid(char* c_name):
 *     return tree.xmlValidateNCName(c_name, 0) == 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _htmlNameIsValid(char* c_name):
 */
  __pyx_r = (xmlValidateNCName(__pyx_v_c_name, 0) == 0);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1425
 *     return tree.xmlValidateNCName(c_name, 0) == 0
 * 
 * cdef int _htmlNameIsValid(char* c_name):             # <<<<<<<<<<<<<<
 *     cdef char c
 *     if c_name is NULL or c_name[0] == c'\0':
 */

static  int __pyx_f_4lxml_5etree__htmlNameIsValid(char *__pyx_v_c_name) {
  char __pyx_v_c;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_htmlNameIsValid");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1427
 * cdef int _htmlNameIsValid(char* c_name):
 *     cdef char c
 *     if c_name is NULL or c_name[0] == c'\0':             # <<<<<<<<<<<<<<
 *         return 0
 *     while c_name[0] != c'\0':
 */
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = ((__pyx_v_c_name[0]) == '\x00');
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1428
 *     cdef char c
 *     if c_name is NULL or c_name[0] == c'\0':
 *         return 0             # <<<<<<<<<<<<<<
 *     while c_name[0] != c'\0':
 *         c = c_name[0]
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1429
 *     if c_name is NULL or c_name[0] == c'\0':
 *         return 0
 *     while c_name[0] != c'\0':             # <<<<<<<<<<<<<<
 *         c = c_name[0]
 *         if c in (c'&', c'<', c'>', c'/', c'"', c"'",
 */
  while (1) {
    __pyx_t_3 = ((__pyx_v_c_name[0]) != '\x00');
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1430
 *         return 0
 *     while c_name[0] != c'\0':
 *         c = c_name[0]             # <<<<<<<<<<<<<<
 *         if c in (c'&', c'<', c'>', c'/', c'"', c"'",
 *                  c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
 */
    __pyx_v_c = (__pyx_v_c_name[0]);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1431
 *     while c_name[0] != c'\0':
 *         c = c_name[0]
 *         if c in (c'&', c'<', c'>', c'/', c'"', c"'",             # <<<<<<<<<<<<<<
 *                  c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
 *             return 0
 */
    switch (__pyx_v_c) {
      case '&':
      case '<':
      case '>':
      case '/':
      case '"':
      case '\'':

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1432
 *         c = c_name[0]
 *         if c in (c'&', c'<', c'>', c'/', c'"', c"'",
 *                  c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):             # <<<<<<<<<<<<<<
 *             return 0
 *         c_name = c_name + 1
 */
      case '\t':
      case '\n':
      case '\x0B':
      case '\x0C':
      case '\r':
      case ' ':

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1433
 *         if c in (c'&', c'<', c'>', c'/', c'"', c"'",
 *                  c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
 *             return 0             # <<<<<<<<<<<<<<
 *         c_name = c_name + 1
 *     return 1
 */
      __pyx_r = 0;
      goto __pyx_L0;
      break;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1434
 *                  c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
 *             return 0
 *         c_name = c_name + 1             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
    __pyx_v_c_name = (__pyx_v_c_name + 1);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1435
 *             return 0
 *         c_name = c_name + 1
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef bint _characterReferenceIsValid(char* c_name):
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1437
 *     return 1
 * 
 * cdef bint _characterReferenceIsValid(char* c_name):             # <<<<<<<<<<<<<<
 *     cdef bint is_hex
 *     if c_name[0] == c'x':
 */

static  int __pyx_f_4lxml_5etree__characterReferenceIsValid(char *__pyx_v_c_name) {
  int __pyx_v_is_hex;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_characterReferenceIsValid");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1439
 * cdef bint _characterReferenceIsValid(char* c_name):
 *     cdef bint is_hex
 *     if c_name[0] == c'x':             # <<<<<<<<<<<<<<
 *         c_name += 1
 *         is_hex = 1
 */
  __pyx_t_1 = ((__pyx_v_c_name[0]) == 'x');
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1440
 *     cdef bint is_hex
 *     if c_name[0] == c'x':
 *         c_name += 1             # <<<<<<<<<<<<<<
 *         is_hex = 1
 *     else:
 */
    __pyx_v_c_name += 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1441
 *     if c_name[0] == c'x':
 *         c_name += 1
 *         is_hex = 1             # <<<<<<<<<<<<<<
 *     else:
 *         is_hex = 0
 */
    __pyx_v_is_hex = 1;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1443
 *         is_hex = 1
 *     else:
 *         is_hex = 0             # <<<<<<<<<<<<<<
 *     if c_name[0] == c'\0':
 *         return 0
 */
    __pyx_v_is_hex = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1444
 *     else:
 *         is_hex = 0
 *     if c_name[0] == c'\0':             # <<<<<<<<<<<<<<
 *         return 0
 *     while c_name[0] != c'\0':
 */
  __pyx_t_1 = ((__pyx_v_c_name[0]) == '\x00');
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1445
 *         is_hex = 0
 *     if c_name[0] == c'\0':
 *         return 0             # <<<<<<<<<<<<<<
 *     while c_name[0] != c'\0':
 *         if c_name[0] < c'0' or c_name[0] > c'9':
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1446
 *     if c_name[0] == c'\0':
 *         return 0
 *     while c_name[0] != c'\0':             # <<<<<<<<<<<<<<
 *         if c_name[0] < c'0' or c_name[0] > c'9':
 *             if not is_hex:
 */
  while (1) {
    __pyx_t_1 = ((__pyx_v_c_name[0]) != '\x00');
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1447
 *         return 0
 *     while c_name[0] != c'\0':
 *         if c_name[0] < c'0' or c_name[0] > c'9':             # <<<<<<<<<<<<<<
 *             if not is_hex:
 *                 return 0
 */
    __pyx_t_1 = ((__pyx_v_c_name[0]) < '0');
    if (!__pyx_t_1) {
      __pyx_t_2 = ((__pyx_v_c_name[0]) > '9');
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1448
 *     while c_name[0] != c'\0':
 *         if c_name[0] < c'0' or c_name[0] > c'9':
 *             if not is_hex:             # <<<<<<<<<<<<<<
 *                 return 0
 *             if not (c_name[0] >= c'a' and c_name[0] <= c'f'):
 */
      __pyx_t_3 = (!__pyx_v_is_hex);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1449
 *         if c_name[0] < c'0' or c_name[0] > c'9':
 *             if not is_hex:
 *                 return 0             # <<<<<<<<<<<<<<
 *             if not (c_name[0] >= c'a' and c_name[0] <= c'f'):
 *                 if not (c_name[0] >= c'A' and c_name[0] <= c'F'):
 */
        __pyx_r = 0;
        goto __pyx_L0;
        goto __pyx_L8;
      }
      __pyx_L8:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1450
 *             if not is_hex:
 *                 return 0
 *             if not (c_name[0] >= c'a' and c_name[0] <= c'f'):             # <<<<<<<<<<<<<<
 *                 if not (c_name[0] >= c'A' and c_name[0] <= c'F'):
 *                     return 0
 */
      __pyx_t_3 = ((__pyx_v_c_name[0]) >= 'a');
      if (__pyx_t_3) {
        __pyx_t_1 = ((__pyx_v_c_name[0]) <= 'f');
        __pyx_t_2 = __pyx_t_1;
      } else {
        __pyx_t_2 = __pyx_t_3;
      }
      __pyx_t_3 = (!__pyx_t_2);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1451
 *                 return 0
 *             if not (c_name[0] >= c'a' and c_name[0] <= c'f'):
 *                 if not (c_name[0] >= c'A' and c_name[0] <= c'F'):             # <<<<<<<<<<<<<<
 *                     return 0
 *         c_name += 1
 */
        __pyx_t_3 = ((__pyx_v_c_name[0]) >= 'A');
        if (__pyx_t_3) {
          __pyx_t_2 = ((__pyx_v_c_name[0]) <= 'F');
          __pyx_t_1 = __pyx_t_2;
        } else {
          __pyx_t_1 = __pyx_t_3;
        }
        __pyx_t_3 = (!__pyx_t_1);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1452
 *             if not (c_name[0] >= c'a' and c_name[0] <= c'f'):
 *                 if not (c_name[0] >= c'A' and c_name[0] <= c'F'):
 *                     return 0             # <<<<<<<<<<<<<<
 *         c_name += 1
 *     return 1
 */
          __pyx_r = 0;
          goto __pyx_L0;
          goto __pyx_L10;
        }
        __pyx_L10:;
        goto __pyx_L9;
      }
      __pyx_L9:;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1453
 *                 if not (c_name[0] >= c'A' and c_name[0] <= c'F'):
 *                     return 0
 *         c_name += 1             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
    __pyx_v_c_name += 1;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1454
 *                     return 0
 *         c_name += 1
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef int _tagValidOrRaise(tag_utf) except -1:
 */
  __pyx_r = 1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1456
 *     return 1
 * 
 * cdef int _tagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
 *     if not _pyXmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid tag name %r" % \
 */

static  int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_tagValidOrRaise");
  __Pyx_INCREF(__pyx_v_tag_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1457
 * 
 * cdef int _tagValidOrRaise(tag_utf) except -1:
 *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Invalid tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 */
  __pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1459
 *     if not _pyXmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_tag_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_23), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1460
 *         raise ValueError, u"Invalid tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._tagValidOrRaise");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tag_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1462
 *     return 0
 * 
 * cdef int _htmlTagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
 *     if not _pyHtmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid HTML tag name %r" % \
 */

static  int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_htmlTagValidOrRaise");
  __Pyx_INCREF(__pyx_v_tag_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1463
 * 
 * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
 *     if not _pyHtmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Invalid HTML tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 */
  __pyx_t_1 = (!__pyx_f_4lxml_5etree__pyHtmlNameIsValid(__pyx_v_tag_utf));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1465
 *     if not _pyHtmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid HTML tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_tag_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_24), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1466
 *         raise ValueError, u"Invalid HTML tag name %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _attributeValidOrRaise(name_utf) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._htmlTagValidOrRaise");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tag_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1468
 *     return 0
 * 
 * cdef int _attributeValidOrRaise(name_utf) except -1:             # <<<<<<<<<<<<<<
 *     if not _pyXmlNameIsValid(name_utf):
 *         raise ValueError, u"Invalid attribute name %r" % \
 */

static  int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_utf) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_attributeValidOrRaise");
  __Pyx_INCREF(__pyx_v_name_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1469
 * 
 * cdef int _attributeValidOrRaise(name_utf) except -1:
 *     if not _pyXmlNameIsValid(name_utf):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Invalid attribute name %r" % \
 *             python.PyUnicode_FromEncodedObject(name_utf, 'UTF-8', NULL)
 */
  __pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_name_utf));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1471
 *     if not _pyXmlNameIsValid(name_utf):
 *         raise ValueError, u"Invalid attribute name %r" % \
 *             python.PyUnicode_FromEncodedObject(name_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_name_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_25), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1472
 *         raise ValueError, u"Invalid attribute name %r" % \
 *             python.PyUnicode_FromEncodedObject(name_utf, 'UTF-8', NULL)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int _prefixValidOrRaise(tag_utf) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._attributeValidOrRaise");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1474
 *     return 0
 * 
 * cdef int _prefixValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
 *     if not _pyXmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid namespace prefix %r" % \
 */

static  int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_prefixValidOrRaise");
  __Pyx_INCREF(__pyx_v_tag_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1475
 * 
 * cdef int _prefixValidOrRaise(tag_utf) except -1:
 *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Invalid namespace prefix %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 */
  __pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1477
 *     if not _pyXmlNameIsValid(tag_utf):
 *         raise ValueError, u"Invalid namespace prefix %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_tag_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_26), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1478
 *         raise ValueError, u"Invalid namespace prefix %r" % \
 *             python.PyUnicode_FromEncodedObject(tag_utf, 'UTF-8', NULL)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _namespacedName(xmlNode* c_node):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._prefixValidOrRaise");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tag_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1480
 *     return 0
 * 
 * cdef inline object _namespacedName(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_namespacedName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1481
 * 
 * cdef inline object _namespacedName(xmlNode* c_node):
 *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)             # <<<<<<<<<<<<<<
 * 
 * cdef object _namespacedNameFromNsName(char* href, char* name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(_getNs(__pyx_v_c_node), __pyx_v_c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._namespacedName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1483
 *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)
 * 
 * cdef object _namespacedNameFromNsName(char* href, char* name):             # <<<<<<<<<<<<<<
 *     if href is NULL:
 *         return funicode(name)
 */

static  PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(char *__pyx_v_href, char *__pyx_v_name) {
  PyObject *__pyx_v_s;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_namespacedNameFromNsName");
  __pyx_v_s = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1484
 * 
 * cdef object _namespacedNameFromNsName(char* href, char* name):
 *     if href is NULL:             # <<<<<<<<<<<<<<
 *         return funicode(name)
 *     elif python.IS_PYTHON3:
 */
  __pyx_t_1 = (__pyx_v_href == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1485
 * cdef object _namespacedNameFromNsName(char* href, char* name):
 *     if href is NULL:
 *         return funicode(name)             # <<<<<<<<<<<<<<
 *     elif python.IS_PYTHON3:
 *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1486
 *     if href is NULL:
 *         return funicode(name)
 *     elif python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
 *     else:
 */
  __pyx_t_1 = IS_PYTHON3;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1487
 *         return funicode(name)
 *     elif python.IS_PYTHON3:
 *         return python.PyUnicode_FromFormat("{%s}%s", href, name)             # <<<<<<<<<<<<<<
 *     else:
 *         s = python.PyString_FromFormat("{%s}%s", href, name)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyUnicode_FromFormat(__pyx_k_27, __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1489
 *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
 *     else:
 *         s = python.PyString_FromFormat("{%s}%s", href, name)             # <<<<<<<<<<<<<<
 *         if isutf8(href) or isutf8(name):
 *             return python.PyUnicode_FromEncodedObject(s, 'UTF-8', NULL)
 */
    __pyx_t_2 = PyString_FromFormat(__pyx_k_27, __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_s);
    __pyx_v_s = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1490
 *     else:
 *         s = python.PyString_FromFormat("{%s}%s", href, name)
 *         if isutf8(href) or isutf8(name):             # <<<<<<<<<<<<<<
 *             return python.PyUnicode_FromEncodedObject(s, 'UTF-8', NULL)
 *         else:
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree_isutf8(__pyx_v_href);
    if (!__pyx_t_3) {
      __pyx_t_4 = __pyx_f_4lxml_5etree_isutf8(__pyx_v_name);
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1491
 *         s = python.PyString_FromFormat("{%s}%s", href, name)
 *         if isutf8(href) or isutf8(name):
 *             return python.PyUnicode_FromEncodedObject(s, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *         else:
 *             return s
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_s, __pyx_k_20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1493
 *             return python.PyUnicode_FromEncodedObject(s, 'UTF-8', NULL)
 *         else:
 *             return s             # <<<<<<<<<<<<<<
 * 
 * cdef _getFilenameForFile(source):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_s);
      __pyx_r = __pyx_v_s;
      goto __pyx_L0;
    }
    __pyx_L4:;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._namespacedNameFromNsName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1495
 *             return s
 * 
 * cdef _getFilenameForFile(source):             # <<<<<<<<<<<<<<
 *     u"""Given a Python File or Gzip object, give filename back.
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_source) {
  PyObject *__pyx_v_filename;
  PyObject *__pyx_v_geturl;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_getFilenameForFile");
  __Pyx_INCREF(__pyx_v_source);
  __pyx_v_filename = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_geturl = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1501
 *     """
 *     # file instances have a name attribute
 *     filename = getattr3(source, u'name', None)             # <<<<<<<<<<<<<<
 *     if filename is not None:
 *         return os_path_abspath(filename)
 */
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_source, ((PyObject *)__pyx_n_u__name), Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_filename);
  __pyx_v_filename = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1502
 *     # file instances have a name attribute
 *     filename = getattr3(source, u'name', None)
 *     if filename is not None:             # <<<<<<<<<<<<<<
 *         return os_path_abspath(filename)
 *     # urllib2 provides a geturl() method
 */
  __pyx_t_2 = (__pyx_v_filename != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1503
 *     filename = getattr3(source, u'name', None)
 *     if filename is not None:
 *         return os_path_abspath(filename)             # <<<<<<<<<<<<<<
 *     # urllib2 provides a geturl() method
 *     geturl = getattr3(source, u'geturl', None)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_filename);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_filename);
    __Pyx_GIVEREF(__pyx_v_filename);
    __pyx_t_3 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1505
 *         return os_path_abspath(filename)
 *     # urllib2 provides a geturl() method
 *     geturl = getattr3(source, u'geturl', None)             # <<<<<<<<<<<<<<
 *     if geturl is not None:
 *         return geturl()
 */
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_source, ((PyObject *)__pyx_n_u__geturl), Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_geturl);
  __pyx_v_geturl = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1506
 *     # urllib2 provides a geturl() method
 *     geturl = getattr3(source, u'geturl', None)
 *     if geturl is not None:             # <<<<<<<<<<<<<<
 *         return geturl()
 *     # gzip file instances have a filename attribute (before Py3k)
 */
  __pyx_t_2 = (__pyx_v_geturl != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1507
 *     geturl = getattr3(source, u'geturl', None)
 *     if geturl is not None:
 *         return geturl()             # <<<<<<<<<<<<<<
 *     # gzip file instances have a filename attribute (before Py3k)
 *     filename = getattr3(source, u'filename', None)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyObject_Call(__pyx_v_geturl, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1509
 *         return geturl()
 *     # gzip file instances have a filename attribute (before Py3k)
 *     filename = getattr3(source, u'filename', None)             # <<<<<<<<<<<<<<
 *     if filename is not None:
 *         return os_path_abspath(filename)
 */
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_source, ((PyObject *)__pyx_n_u__filename), Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_filename);
  __pyx_v_filename = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1510
 *     # gzip file instances have a filename attribute (before Py3k)
 *     filename = getattr3(source, u'filename', None)
 *     if filename is not None:             # <<<<<<<<<<<<<<
 *         return os_path_abspath(filename)
 *     # can't determine filename
 */
  __pyx_t_2 = (__pyx_v_filename != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1511
 *     filename = getattr3(source, u'filename', None)
 *     if filename is not None:
 *         return os_path_abspath(filename)             # <<<<<<<<<<<<<<
 *     # can't determine filename
 *     return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_filename);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_filename);
    __Pyx_GIVEREF(__pyx_v_filename);
    __pyx_t_1 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":1513
 *         return os_path_abspath(filename)
 *     # can't determine filename
 *     return None             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._getFilenameForFile");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF(__pyx_v_geturl);
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":7
 * # module level API functions
 * 
 * def clear_error_log():             # <<<<<<<<<<<<<<
 *     u"""clear_error_log()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_clear_error_log(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_clear_error_log[] = "clear_error_log()\n\n    Clear the global error log.  Note that this log is already bound to a\n    fixed size.\n\n    Note: since lxml 2.2, the global error log is local to a thread\n    and this function will only clear the global error log of the\n    current thread.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_clear_error_log(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("clear_error_log");
  __pyx_self = __pyx_self;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":17
 *     current thread.
 *     """
 *     _getGlobalErrorLog().clear()             # <<<<<<<<<<<<<<
 * 
 * # dummy function: no debug output at all
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__clear); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.clear_error_log");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":20
 * 
 * # dummy function: no debug output at all
 * cdef void _nullGenericErrorFunc(void* ctxt, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

static  void __pyx_f_4lxml_5etree__nullGenericErrorFunc(void *__pyx_v_ctxt, char *__pyx_v_msg, ...) {

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":25
 * # setup for global log:
 * 
 * cdef void _initThreadLogging():             # <<<<<<<<<<<<<<
 *     # disable generic error lines from libxml2
 *     xmlerror.xmlThrDefSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
 */

static  void __pyx_f_4lxml_5etree__initThreadLogging(void) {
  __Pyx_RefNannySetupContext("_initThreadLogging");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":27
 * cdef void _initThreadLogging():
 *     # disable generic error lines from libxml2
 *     xmlerror.xmlThrDefSetGenericErrorFunc(NULL, _nullGenericErrorFunc)             # <<<<<<<<<<<<<<
 *     xmlerror.xmlSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
 * 
 */
  xmlThrDefSetGenericErrorFunc(NULL, __pyx_f_4lxml_5etree__nullGenericErrorFunc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":28
 *     # disable generic error lines from libxml2
 *     xmlerror.xmlThrDefSetGenericErrorFunc(NULL, _nullGenericErrorFunc)
 *     xmlerror.xmlSetGenericErrorFunc(NULL, _nullGenericErrorFunc)             # <<<<<<<<<<<<<<
 * 
 *     # divert error messages to the global error log
 */
  xmlSetGenericErrorFunc(NULL, __pyx_f_4lxml_5etree__nullGenericErrorFunc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":31
 * 
 *     # divert error messages to the global error log
 *     xmlerror.xmlThrDefSetStructuredErrorFunc(NULL, _receiveError)             # <<<<<<<<<<<<<<
 *     connectErrorLog(NULL)
 * 
 */
  xmlThrDefSetStructuredErrorFunc(NULL, __pyx_f_4lxml_5etree__receiveError);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":32
 *     # divert error messages to the global error log
 *     xmlerror.xmlThrDefSetStructuredErrorFunc(NULL, _receiveError)
 *     connectErrorLog(NULL)             # <<<<<<<<<<<<<<
 * 
 * cdef void connectErrorLog(void* log):
 */
  __pyx_f_4lxml_5etree_connectErrorLog(NULL);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":34
 *     connectErrorLog(NULL)
 * 
 * cdef void connectErrorLog(void* log):             # <<<<<<<<<<<<<<
 *     xmlerror.xmlSetStructuredErrorFunc(log, _receiveError)
 *     xslt.xsltSetGenericErrorFunc(log, _receiveXSLTError)
 */

static  void __pyx_f_4lxml_5etree_connectErrorLog(void *__pyx_v_log) {
  __Pyx_RefNannySetupContext("connectErrorLog");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":35
 * 
 * cdef void connectErrorLog(void* log):
 *     xmlerror.xmlSetStructuredErrorFunc(log, _receiveError)             # <<<<<<<<<<<<<<
 *     xslt.xsltSetGenericErrorFunc(log, _receiveXSLTError)
 * 
 */
  xmlSetStructuredErrorFunc(__pyx_v_log, __pyx_f_4lxml_5etree__receiveError);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":36
 * cdef void connectErrorLog(void* log):
 *     xmlerror.xmlSetStructuredErrorFunc(log, _receiveError)
 *     xslt.xsltSetGenericErrorFunc(log, _receiveXSLTError)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  xsltSetGenericErrorFunc(__pyx_v_log, __pyx_f_4lxml_5etree__receiveXSLTError);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":50
 *     cdef readonly object filename
 * 
 *     cdef _setError(self, xmlerror.xmlError* error):             # <<<<<<<<<<<<<<
 *         cdef int size
 *         self.domain   = error.domain
 */

static  PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setError(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self, xmlError *__pyx_v_error) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("_setError");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":52
 *     cdef _setError(self, xmlerror.xmlError* error):
 *         cdef int size
 *         self.domain   = error.domain             # <<<<<<<<<<<<<<
 *         self.type     = error.code
 *         self.level    = <int>error.level
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_error->domain); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->domain);
  __Pyx_DECREF(__pyx_v_self->domain);
  __pyx_v_self->domain = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":53
 *         cdef int size
 *         self.domain   = error.domain
 *         self.type     = error.code             # <<<<<<<<<<<<<<
 *         self.level    = <int>error.level
 *         self.line     = error.line
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_error->code); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->type);
  __Pyx_DECREF(__pyx_v_self->type);
  __pyx_v_self->type = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":54
 *         self.domain   = error.domain
 *         self.type     = error.code
 *         self.level    = <int>error.level             # <<<<<<<<<<<<<<
 *         self.line     = error.line
 *         self.column   = error.int2
 */
  __pyx_t_1 = PyInt_FromLong(((int)__pyx_v_error->level)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->level);
  __Pyx_DECREF(__pyx_v_self->level);
  __pyx_v_self->level = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":55
 *         self.type     = error.code
 *         self.level    = <int>error.level
 *         self.line     = error.line             # <<<<<<<<<<<<<<
 *         self.column   = error.int2
 *         size = cstd.strlen(error.message)
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_error->line); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->line);
  __Pyx_DECREF(__pyx_v_self->line);
  __pyx_v_self->line = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":56
 *         self.level    = <int>error.level
 *         self.line     = error.line
 *         self.column   = error.int2             # <<<<<<<<<<<<<<
 *         size = cstd.strlen(error.message)
 *         if size > 0 and error.message[size-1] == c'\n':
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_error->int2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->column);
  __Pyx_DECREF(__pyx_v_self->column);
  __pyx_v_self->column = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":57
 *         self.line     = error.line
 *         self.column   = error.int2
 *         size = cstd.strlen(error.message)             # <<<<<<<<<<<<<<
 *         if size > 0 and error.message[size-1] == c'\n':
 *             size = size - 1 # strip EOL
 */
  __pyx_v_size = strlen(__pyx_v_error->message);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":58
 *         self.column   = error.int2
 *         size = cstd.strlen(error.message)
 *         if size > 0 and error.message[size-1] == c'\n':             # <<<<<<<<<<<<<<
 *             size = size - 1 # strip EOL
 *         try:
 */
  __pyx_t_2 = (__pyx_v_size > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = ((__pyx_v_error->message[(__pyx_v_size - 1)]) == '\n');
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":59
 *         size = cstd.strlen(error.message)
 *         if size > 0 and error.message[size-1] == c'\n':
 *             size = size - 1 # strip EOL             # <<<<<<<<<<<<<<
 *         try:
 *             self.message = python.PyUnicode_DecodeUTF8(
 */
    __pyx_v_size = (__pyx_v_size - 1);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":60
 *         if size > 0 and error.message[size-1] == c'\n':
 *             size = size - 1 # strip EOL
 *         try:             # <<<<<<<<<<<<<<
 *             self.message = python.PyUnicode_DecodeUTF8(
 *                 error.message, size, NULL)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":62
 *         try:
 *             self.message = python.PyUnicode_DecodeUTF8(
 *                 error.message, size, NULL)             # <<<<<<<<<<<<<<
 *         except:
 *             try:
 */
      __pyx_t_1 = PyUnicode_DecodeUTF8(__pyx_v_error->message, __pyx_v_size, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":61
 *             size = size - 1 # strip EOL
 *         try:
 *             self.message = python.PyUnicode_DecodeUTF8(             # <<<<<<<<<<<<<<
 *                 error.message, size, NULL)
 *         except:
 */
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->message);
      __Pyx_DECREF(__pyx_v_self->message);
      __pyx_v_self->message = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L11_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":63
 *             self.message = python.PyUnicode_DecodeUTF8(
 *                 error.message, size, NULL)
 *         except:             # <<<<<<<<<<<<<<
 *             try:
 *                 self.message = python.PyUnicode_DecodeASCII(
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._LogEntry._setError");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":64
 *                 error.message, size, NULL)
 *         except:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.message = python.PyUnicode_DecodeASCII(
 *                     error.message, size, 'backslashreplace')
 */
      {
        PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
        __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
        __Pyx_XGOTREF(__pyx_save_exc_type);
        __Pyx_XGOTREF(__pyx_save_exc_value);
        __Pyx_XGOTREF(__pyx_save_exc_tb);
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":65
 *         except:
 *             try:
 *                 self.message = python.PyUnicode_DecodeASCII(             # <<<<<<<<<<<<<<
 *                     error.message, size, 'backslashreplace')
 *             except:
 */
          __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__python); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s_28); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":66
 *             try:
 *                 self.message = python.PyUnicode_DecodeASCII(
 *                     error.message, size, 'backslashreplace')             # <<<<<<<<<<<<<<
 *             except:
 *                 self.message = u'<undecodable error message>'
 */
          __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_error->message); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(((PyObject *)__pyx_t_7));
          __pyx_t_9 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(__pyx_t_10);
          PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_7));
          __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_9);
          __Pyx_INCREF(((PyObject *)__pyx_n_s__backslashreplace));
          PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_n_s__backslashreplace));
          __Pyx_GIVEREF(((PyObject *)__pyx_n_s__backslashreplace));
          __pyx_t_7 = 0;
          __pyx_t_9 = 0;
          __pyx_t_9 = PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":65
 *         except:
 *             try:
 *                 self.message = python.PyUnicode_DecodeASCII(             # <<<<<<<<<<<<<<
 *                     error.message, size, 'backslashreplace')
 *             except:
 */
          __Pyx_GIVEREF(__pyx_t_9);
          __Pyx_GOTREF(__pyx_v_self->message);
          __Pyx_DECREF(__pyx_v_self->message);
          __pyx_v_self->message = __pyx_t_9;
          __pyx_t_9 = 0;
        }
        __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
        __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
        __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
        goto __pyx_L21_try_end;
        __pyx_L14_error:;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":67
 *                 self.message = python.PyUnicode_DecodeASCII(
 *                     error.message, size, 'backslashreplace')
 *             except:             # <<<<<<<<<<<<<<
 *                 self.message = u'<undecodable error message>'
 *         if error.file is NULL:
 */
        /*except:*/ {
          __Pyx_AddTraceback("lxml.etree._LogEntry._setError");
          if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GOTREF(__pyx_t_8);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":68
 *                     error.message, size, 'backslashreplace')
 *             except:
 *                 self.message = u'<undecodable error message>'             # <<<<<<<<<<<<<<
 *         if error.file is NULL:
 *             self.filename = u'<string>'
 */
          __Pyx_INCREF(((PyObject *)__pyx_kp_u_29));
          __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_29));
          __Pyx_GOTREF(__pyx_v_self->message);
          __Pyx_DECREF(__pyx_v_self->message);
          __pyx_v_self->message = ((PyObject *)__pyx_kp_u_29);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L15_exception_handled;
        }
        __pyx_L16_except_error:;
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        goto __pyx_L6_except_error;
        __pyx_L15_exception_handled:;
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        __pyx_L21_try_end:;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_exception_handled;
    }
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L11_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":69
 *             except:
 *                 self.message = u'<undecodable error message>'
 *         if error.file is NULL:             # <<<<<<<<<<<<<<
 *             self.filename = u'<string>'
 *         else:
 */
  __pyx_t_4 = (__pyx_v_error->file == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":70
 *                 self.message = u'<undecodable error message>'
 *         if error.file is NULL:
 *             self.filename = u'<string>'             # <<<<<<<<<<<<<<
 *         else:
 *             self.filename = _decodeFilename(error.file)
 */
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_30));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_30));
    __Pyx_GOTREF(__pyx_v_self->filename);
    __Pyx_DECREF(__pyx_v_self->filename);
    __pyx_v_self->filename = ((PyObject *)__pyx_kp_u_30);
    goto __pyx_L24;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":72
 *             self.filename = u'<string>'
 *         else:
 *             self.filename = _decodeFilename(error.file)             # <<<<<<<<<<<<<<
 * 
 *     cdef _setGeneric(self, int domain, int type, int level, int line,
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_error->file); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->filename);
    __Pyx_DECREF(__pyx_v_self->filename);
    __pyx_v_self->filename = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __pyx_L24:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("lxml.etree._LogEntry._setError");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":74
 *             self.filename = _decodeFilename(error.file)
 * 
 *     cdef _setGeneric(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
 *                      message, filename):
 *         self.domain  = domain
 */

static  PyObject *__pyx_f_4lxml_5etree_9_LogEntry__setGeneric(struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_self, int __pyx_v_domain, int __pyx_v_type, int __pyx_v_level, int __pyx_v_line, PyObject *__pyx_v_message, PyObject *__pyx_v_filename) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_setGeneric");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":76
 *     cdef _setGeneric(self, int domain, int type, int level, int line,
 *                      message, filename):
 *         self.domain  = domain             # <<<<<<<<<<<<<<
 *         self.type    = type
 *         self.level   = level
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_domain); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->domain);
  __Pyx_DECREF(__pyx_v_self->domain);
  __pyx_v_self->domain = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":77
 *                      message, filename):
 *         self.domain  = domain
 *         self.type    = type             # <<<<<<<<<<<<<<
 *         self.level   = level
 *         self.line    = line
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->type);
  __Pyx_DECREF(__pyx_v_self->type);
  __pyx_v_self->type = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":78
 *         self.domain  = domain
 *         self.type    = type
 *         self.level   = level             # <<<<<<<<<<<<<<
 *         self.line    = line
 *         self.column  = 0
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->level);
  __Pyx_DECREF(__pyx_v_self->level);
  __pyx_v_self->level = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":79
 *         self.type    = type
 *         self.level   = level
 *         self.line    = line             # <<<<<<<<<<<<<<
 *         self.column  = 0
 *         self.message = message
 */
  __pyx_t_1 = PyInt_FromLong(__pyx_v_line); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->line);
  __Pyx_DECREF(__pyx_v_self->line);
  __pyx_v_self->line = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":80
 *         self.level   = level
 *         self.line    = line
 *         self.column  = 0             # <<<<<<<<<<<<<<
 *         self.message = message
 *         self.filename = filename
 */
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_GOTREF(__pyx_v_self->column);
  __Pyx_DECREF(__pyx_v_self->column);
  __pyx_v_self->column = __pyx_int_0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":81
 *         self.line    = line
 *         self.column  = 0
 *         self.message = message             # <<<<<<<<<<<<<<
 *         self.filename = filename
 * 
 */
  __Pyx_INCREF(__pyx_v_message);
  __Pyx_GIVEREF(__pyx_v_message);
  __Pyx_GOTREF(__pyx_v_self->message);
  __Pyx_DECREF(__pyx_v_self->message);
  __pyx_v_self->message = __pyx_v_message;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":82
 *         self.column  = 0
 *         self.message = message
 *         self.filename = filename             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_GIVEREF(__pyx_v_filename);
  __Pyx_GOTREF(__pyx_v_self->filename);
  __Pyx_DECREF(__pyx_v_self->filename);
  __pyx_v_self->filename = __pyx_v_filename;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._LogEntry._setGeneric");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":84
 *         self.filename = filename
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"%s:%d:%d:%s:%s:%s: %s" % (
 *             self.filename, self.line, self.column, self.level_name,
 */

static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":85
 * 
 *     def __repr__(self):
 *         return u"%s:%d:%d:%s:%s:%s: %s" % (             # <<<<<<<<<<<<<<
 *             self.filename, self.line, self.column, self.level_name,
 *             self.domain_name, self.type_name, self.message)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":86
 *     def __repr__(self):
 *         return u"%s:%d:%d:%s:%s:%s: %s" % (
 *             self.filename, self.line, self.column, self.level_name,             # <<<<<<<<<<<<<<
 *             self.domain_name, self.type_name, self.message)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__level_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":87
 *         return u"%s:%d:%d:%s:%s:%s: %s" % (
 *             self.filename, self.line, self.column, self.level_name,
 *             self.domain_name, self.type_name, self.message)             # <<<<<<<<<<<<<<
 * 
 *     property domain_name:
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__domain_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__type_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->filename);
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->filename);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->filename);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->line);
  PyTuple_SET_ITEM(__pyx_t_4, 1, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->line);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->line);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->column);
  PyTuple_SET_ITEM(__pyx_t_4, 2, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->column);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->column);
  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->message);
  PyTuple_SET_ITEM(__pyx_t_4, 6, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->message);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->message);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_31), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._LogEntry.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":90
 * 
 *     property domain_name:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return ErrorDomains._getName(self.domain, u"unknown")
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":91
 *     property domain_name:
 *         def __get__(self):
 *             return ErrorDomains._getName(self.domain, u"unknown")             # <<<<<<<<<<<<<<
 * 
 *     property type_name:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorDomains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s___getName); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->domain);
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->domain);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->domain);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__unknown));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_u__unknown));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__unknown));
  __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._LogEntry.domain_name.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":94
 * 
 *     property type_name:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self.domain == ErrorDomains.RELAXNGV:
 *                 getName = RelaxNGErrorTypes._getName
 */

static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_getName;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_getName = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":95
 *     property type_name:
 *         def __get__(self):
 *             if self.domain == ErrorDomains.RELAXNGV:             # <<<<<<<<<<<<<<
 *                 getName = RelaxNGErrorTypes._getName
 *             else:
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorDomains); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__RELAXNGV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->domain, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":96
 *         def __get__(self):
 *             if self.domain == ErrorDomains.RELAXNGV:
 *                 getName = RelaxNGErrorTypes._getName             # <<<<<<<<<<<<<<
 *             else:
 *                 getName = ErrorTypes._getName
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s___getName); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_getName);
    __pyx_v_getName = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":98
 *                 getName = RelaxNGErrorTypes._getName
 *             else:
 *                 getName = ErrorTypes._getName             # <<<<<<<<<<<<<<
 *             return getName(self.type, u"unknown")
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___getName); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_getName);
    __pyx_v_getName = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":99
 *             else:
 *                 getName = ErrorTypes._getName
 *             return getName(self.type, u"unknown")             # <<<<<<<<<<<<<<
 * 
 *     property level_name:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->type);
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->type);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->type);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__unknown));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_u__unknown));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__unknown));
  __pyx_t_2 = PyObject_Call(__pyx_v_getName, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._LogEntry.type_name.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_getName);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":102
 * 
 *     property level_name:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return ErrorLevels._getName(self.level, u"unknown")
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":103
 *     property level_name:
 *         def __get__(self):
 *             return ErrorLevels._getName(self.level, u"unknown")             # <<<<<<<<<<<<<<
 * 
 * cdef class _BaseErrorLog:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s___getName); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->level);
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->level);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_self)->level);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__unknown));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_u__unknown));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__unknown));
  __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._LogEntry.level_name.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":108
 *     cdef _LogEntry _first_error
 *     cdef readonly object last_error
 *     def __init__(self, first_error, last_error):             # <<<<<<<<<<<<<<
 *         self._first_error = first_error
 *         self.last_error = last_error
 */

static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_first_error = 0;
  PyObject *__pyx_v_last_error = 0;
  int __pyx_r;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__first_error,&__pyx_n_s__last_error,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__first_error);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__last_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_first_error = values[0];
    __pyx_v_last_error = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_first_error = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_last_error = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._BaseErrorLog.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":109
 *     cdef readonly object last_error
 *     def __init__(self, first_error, last_error):
 *         self._first_error = first_error             # <<<<<<<<<<<<<<
 *         self.last_error = last_error
 * 
 */
  if (!(likely(((__pyx_v_first_error) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_first_error, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_first_error);
  __Pyx_GIVEREF(__pyx_v_first_error);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error));
  ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_first_error);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":110
 *     def __init__(self, first_error, last_error):
 *         self._first_error = first_error
 *         self.last_error = last_error             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_INCREF(__pyx_v_last_error);
  __Pyx_GIVEREF(__pyx_v_last_error);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error);
  ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error = __pyx_v_last_error;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._BaseErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":112
 *         self.last_error = last_error
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return _BaseErrorLog(self._first_error, self.last_error)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":113
 * 
 *     def copy(self):
 *         return _BaseErrorLog(self._first_error, self.last_error)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error));
  __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->_first_error));
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error);
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self)->last_error);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseErrorLog.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":115
 *         return _BaseErrorLog(self._first_error, self.last_error)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u''
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":116
 * 
 *     def __repr__(self):
 *         return u''             # <<<<<<<<<<<<<<
 * 
 *     cdef void _receive(self, xmlerror.xmlError* error):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
  __pyx_r = ((PyObject *)__pyx_kp_u_14);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":118
 *         return u''
 * 
 *     cdef void _receive(self, xmlerror.xmlError* error):             # <<<<<<<<<<<<<<
 *         cdef bint is_error
 *         cdef _LogEntry entry
 */

static  void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, xmlError *__pyx_v_error) {
  int __pyx_v_is_error;
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_global_log;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_receive");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":122
 *         cdef _LogEntry entry
 *         cdef _BaseErrorLog global_log
 *         entry = _LogEntry()             # <<<<<<<<<<<<<<
 *         entry._setError(error)
 *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__LogEntry)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_entry));
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":123
 *         cdef _BaseErrorLog global_log
 *         entry = _LogEntry()
 *         entry._setError(error)             # <<<<<<<<<<<<<<
 *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
 *                    error.level == xmlerror.XML_ERR_FATAL
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__LogEntry *)__pyx_v_entry->__pyx_vtab)->_setError(__pyx_v_entry, __pyx_v_error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":124
 *         entry = _LogEntry()
 *         entry._setError(error)
 *         is_error = error.level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
 *                    error.level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()
 */
  __pyx_t_2 = (__pyx_v_error->level == XML_ERR_ERROR);
  if (!__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":125
 *         entry._setError(error)
 *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
 *                    error.level == xmlerror.XML_ERR_FATAL             # <<<<<<<<<<<<<<
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:
 */
    __pyx_t_3 = (__pyx_v_error->level == XML_ERR_FATAL);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  __pyx_v_is_error = __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":126
 *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
 *                    error.level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()             # <<<<<<<<<<<<<<
 *         if global_log is not self:
 *             global_log.receive(entry)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_global_log));
  __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":127
 *                    error.level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:             # <<<<<<<<<<<<<<
 *             global_log.receive(entry)
 *             if is_error:
 */
  __pyx_t_4 = (__pyx_v_global_log != __pyx_v_self);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":128
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:
 *             global_log.receive(entry)             # <<<<<<<<<<<<<<
 *             if is_error:
 *                 global_log.last_error = entry
 */
    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_global_log), __pyx_n_s__receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(((PyObject *)__pyx_v_entry));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_entry));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
    __pyx_t_6 = PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":129
 *         if global_log is not self:
 *             global_log.receive(entry)
 *             if is_error:             # <<<<<<<<<<<<<<
 *                 global_log.last_error = entry
 *         self.receive(entry)
 */
    __pyx_t_4 = __pyx_v_is_error;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":130
 *             global_log.receive(entry)
 *             if is_error:
 *                 global_log.last_error = entry             # <<<<<<<<<<<<<<
 *         self.receive(entry)
 *         if is_error:
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_entry));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
      __Pyx_GOTREF(__pyx_v_global_log->last_error);
      __Pyx_DECREF(__pyx_v_global_log->last_error);
      __pyx_v_global_log->last_error = ((PyObject *)__pyx_v_entry);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":131
 *             if is_error:
 *                 global_log.last_error = entry
 *         self.receive(entry)             # <<<<<<<<<<<<<<
 *         if is_error:
 *             self.last_error = entry
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__receive); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_v_entry));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_entry));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
  __pyx_t_1 = PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":132
 *                 global_log.last_error = entry
 *         self.receive(entry)
 *         if is_error:             # <<<<<<<<<<<<<<
 *             self.last_error = entry
 * 
 */
  __pyx_t_4 = __pyx_v_is_error;
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":133
 *         self.receive(entry)
 *         if is_error:
 *             self.last_error = entry             # <<<<<<<<<<<<<<
 * 
 *     cdef void _receiveGeneric(self, int domain, int type, int level, int line,
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_entry));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
    __Pyx_GOTREF(__pyx_v_self->last_error);
    __Pyx_DECREF(__pyx_v_self->last_error);
    __pyx_v_self->last_error = ((PyObject *)__pyx_v_entry);
    goto __pyx_L5;
  }
  __pyx_L5:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._BaseErrorLog._receive");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_DECREF((PyObject *)__pyx_v_global_log);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":135
 *             self.last_error = entry
 * 
 *     cdef void _receiveGeneric(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
 *                               message, filename):
 *         cdef bint is_error
 */

static  void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, int __pyx_v_domain, int __pyx_v_type, int __pyx_v_level, int __pyx_v_line, PyObject *__pyx_v_message, PyObject *__pyx_v_filename) {
  int __pyx_v_is_error;
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_global_log;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_receiveGeneric");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_message);
  __Pyx_INCREF(__pyx_v_filename);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":140
 *         cdef _LogEntry entry
 *         cdef _BaseErrorLog global_log
 *         entry = _LogEntry()             # <<<<<<<<<<<<<<
 *         entry._setGeneric(domain, type, level, line, message, filename)
 *         is_error = level == xmlerror.XML_ERR_ERROR or \
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__LogEntry)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_entry));
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":141
 *         cdef _BaseErrorLog global_log
 *         entry = _LogEntry()
 *         entry._setGeneric(domain, type, level, line, message, filename)             # <<<<<<<<<<<<<<
 *         is_error = level == xmlerror.XML_ERR_ERROR or \
 *                    level == xmlerror.XML_ERR_FATAL
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__LogEntry *)__pyx_v_entry->__pyx_vtab)->_setGeneric(__pyx_v_entry, __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":142
 *         entry = _LogEntry()
 *         entry._setGeneric(domain, type, level, line, message, filename)
 *         is_error = level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
 *                    level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()
 */
  __pyx_t_2 = (__pyx_v_level == XML_ERR_ERROR);
  if (!__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":143
 *         entry._setGeneric(domain, type, level, line, message, filename)
 *         is_error = level == xmlerror.XML_ERR_ERROR or \
 *                    level == xmlerror.XML_ERR_FATAL             # <<<<<<<<<<<<<<
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:
 */
    __pyx_t_3 = (__pyx_v_level == XML_ERR_FATAL);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  __pyx_v_is_error = __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":144
 *         is_error = level == xmlerror.XML_ERR_ERROR or \
 *                    level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()             # <<<<<<<<<<<<<<
 *         if global_log is not self:
 *             global_log.receive(entry)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_global_log));
  __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":145
 *                    level == xmlerror.XML_ERR_FATAL
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:             # <<<<<<<<<<<<<<
 *             global_log.receive(entry)
 *             if is_error:
 */
  __pyx_t_4 = (__pyx_v_global_log != __pyx_v_self);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":146
 *         global_log = _getGlobalErrorLog()
 *         if global_log is not self:
 *             global_log.receive(entry)             # <<<<<<<<<<<<<<
 *             if is_error:
 *                 global_log.last_error = entry
 */
    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_global_log), __pyx_n_s__receive); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(((PyObject *)__pyx_v_entry));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_entry));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
    __pyx_t_6 = PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":147
 *         if global_log is not self:
 *             global_log.receive(entry)
 *             if is_error:             # <<<<<<<<<<<<<<
 *                 global_log.last_error = entry
 *         self.receive(entry)
 */
    __pyx_t_4 = __pyx_v_is_error;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":148
 *             global_log.receive(entry)
 *             if is_error:
 *                 global_log.last_error = entry             # <<<<<<<<<<<<<<
 *         self.receive(entry)
 *         if is_error:
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_entry));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
      __Pyx_GOTREF(__pyx_v_global_log->last_error);
      __Pyx_DECREF(__pyx_v_global_log->last_error);
      __pyx_v_global_log->last_error = ((PyObject *)__pyx_v_entry);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":149
 *             if is_error:
 *                 global_log.last_error = entry
 *         self.receive(entry)             # <<<<<<<<<<<<<<
 *         if is_error:
 *             self.last_error = entry
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__receive); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_v_entry));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_entry));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
  __pyx_t_1 = PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":150
 *                 global_log.last_error = entry
 *         self.receive(entry)
 *         if is_error:             # <<<<<<<<<<<<<<
 *             self.last_error = entry
 * 
 */
  __pyx_t_4 = __pyx_v_is_error;
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":151
 *         self.receive(entry)
 *         if is_error:
 *             self.last_error = entry             # <<<<<<<<<<<<<<
 * 
 *     cdef _buildParseException(self, exctype, default_message):
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_entry));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_entry));
    __Pyx_GOTREF(__pyx_v_self->last_error);
    __Pyx_DECREF(__pyx_v_self->last_error);
    __pyx_v_self->last_error = ((PyObject *)__pyx_v_entry);
    goto __pyx_L5;
  }
  __pyx_L5:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._BaseErrorLog._receiveGeneric");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_DECREF((PyObject *)__pyx_v_global_log);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":153
 *             self.last_error = entry
 * 
 *     cdef _buildParseException(self, exctype, default_message):             # <<<<<<<<<<<<<<
 *         code = xmlerror.XML_ERR_INTERNAL_ERROR
 *         if self._first_error is None:
 */

static  PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, PyObject *__pyx_v_exctype, PyObject *__pyx_v_default_message) {
  PyObject *__pyx_v_code;
  PyObject *__pyx_v_message;
  PyObject *__pyx_v_line;
  PyObject *__pyx_v_column;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_buildParseException");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_exctype);
  __Pyx_INCREF(__pyx_v_default_message);
  __pyx_v_code = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_line = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_column = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":154
 * 
 *     cdef _buildParseException(self, exctype, default_message):
 *         code = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
 *         if self._first_error is None:
 *             return exctype(default_message, code, 0, 0)
 */
  __pyx_t_1 = PyInt_FromLong(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_code);
  __pyx_v_code = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":155
 *     cdef _buildParseException(self, exctype, default_message):
 *         code = xmlerror.XML_ERR_INTERNAL_ERROR
 *         if self._first_error is None:             # <<<<<<<<<<<<<<
 *             return exctype(default_message, code, 0, 0)
 *         if self._first_error is None or \
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->_first_error) == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":156
 *         code = xmlerror.XML_ERR_INTERNAL_ERROR
 *         if self._first_error is None:
 *             return exctype(default_message, code, 0, 0)             # <<<<<<<<<<<<<<
 *         if self._first_error is None or \
 *                 self._first_error.message is None or \
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_default_message);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_default_message);
    __Pyx_GIVEREF(__pyx_v_default_message);
    __Pyx_INCREF(__pyx_v_code);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_code);
    __Pyx_GIVEREF(__pyx_v_code);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_3 = PyObject_Call(__pyx_v_exctype, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":157
 *         if self._first_error is None:
 *             return exctype(default_message, code, 0, 0)
 *         if self._first_error is None or \             # <<<<<<<<<<<<<<
 *                 self._first_error.message is None or \
 *                 not self._first_error.message:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->_first_error) == Py_None);
  if (!__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":158
 *             return exctype(default_message, code, 0, 0)
 *         if self._first_error is None or \
 *                 self._first_error.message is None or \             # <<<<<<<<<<<<<<
 *                 not self._first_error.message:
 *             message = default_message
 */
    __pyx_t_4 = (__pyx_v_self->_first_error->message == Py_None);
    if (!__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":159
 *         if self._first_error is None or \
 *                 self._first_error.message is None or \
 *                 not self._first_error.message:             # <<<<<<<<<<<<<<
 *             message = default_message
 *             line = 0
 */
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_first_error->message); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_6 = (!__pyx_t_5);
      __pyx_t_5 = __pyx_t_6;
    } else {
      __pyx_t_5 = __pyx_t_4;
    }
    __pyx_t_4 = __pyx_t_5;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":160
 *                 self._first_error.message is None or \
 *                 not self._first_error.message:
 *             message = default_message             # <<<<<<<<<<<<<<
 *             line = 0
 *             column = 0
 */
    __Pyx_INCREF(__pyx_v_default_message);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_v_default_message;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":161
 *                 not self._first_error.message:
 *             message = default_message
 *             line = 0             # <<<<<<<<<<<<<<
 *             column = 0
 *         else:
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_line);
    __pyx_v_line = __pyx_int_0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":162
 *             message = default_message
 *             line = 0
 *             column = 0             # <<<<<<<<<<<<<<
 *         else:
 *             message = self._first_error.message
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_column);
    __pyx_v_column = __pyx_int_0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":164
 *             column = 0
 *         else:
 *             message = self._first_error.message             # <<<<<<<<<<<<<<
 *             code = self._first_error.type
 *             line = self._first_error.line
 */
    __Pyx_INCREF(__pyx_v_self->_first_error->message);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_v_self->_first_error->message;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":165
 *         else:
 *             message = self._first_error.message
 *             code = self._first_error.type             # <<<<<<<<<<<<<<
 *             line = self._first_error.line
 *             column = self._first_error.column
 */
    __Pyx_INCREF(__pyx_v_self->_first_error->type);
    __Pyx_DECREF(__pyx_v_code);
    __pyx_v_code = __pyx_v_self->_first_error->type;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":166
 *             message = self._first_error.message
 *             code = self._first_error.type
 *             line = self._first_error.line             # <<<<<<<<<<<<<<
 *             column = self._first_error.column
 *             if line > 0:
 */
    __Pyx_INCREF(__pyx_v_self->_first_error->line);
    __Pyx_DECREF(__pyx_v_line);
    __pyx_v_line = __pyx_v_self->_first_error->line;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":167
 *             code = self._first_error.type
 *             line = self._first_error.line
 *             column = self._first_error.column             # <<<<<<<<<<<<<<
 *             if line > 0:
 *                 if column > 0:
 */
    __Pyx_INCREF(__pyx_v_self->_first_error->column);
    __Pyx_DECREF(__pyx_v_column);
    __pyx_v_column = __pyx_v_self->_first_error->column;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":168
 *             line = self._first_error.line
 *             column = self._first_error.column
 *             if line > 0:             # <<<<<<<<<<<<<<
 *                 if column > 0:
 *                     message = u"%s, line %d, column %d" % (message, line, column)
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_line, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":169
 *             column = self._first_error.column
 *             if line > 0:
 *                 if column > 0:             # <<<<<<<<<<<<<<
 *                     message = u"%s, line %d, column %d" % (message, line, column)
 *                 else:
 */
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_column, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":170
 *             if line > 0:
 *                 if column > 0:
 *                     message = u"%s, line %d, column %d" % (message, line, column)             # <<<<<<<<<<<<<<
 *                 else:
 *                     message = u"%s, line %d" % (message, line)
 */
        __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_v_message);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_message);
        __Pyx_GIVEREF(__pyx_v_message);
        __Pyx_INCREF(__pyx_v_line);
        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_line);
        __Pyx_GIVEREF(__pyx_v_line);
        __Pyx_INCREF(__pyx_v_column);
        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_column);
        __Pyx_GIVEREF(__pyx_v_column);
        __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_32), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_v_message);
        __pyx_v_message = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":172
 *                     message = u"%s, line %d, column %d" % (message, line, column)
 *                 else:
 *                     message = u"%s, line %d" % (message, line)             # <<<<<<<<<<<<<<
 *         return exctype(message, code, line, column)
 * 
 */
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_message);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_message);
        __Pyx_GIVEREF(__pyx_v_message);
        __Pyx_INCREF(__pyx_v_line);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_line);
        __Pyx_GIVEREF(__pyx_v_line);
        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_33), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_v_message);
        __pyx_v_message = __pyx_t_3;
        __pyx_t_3 = 0;
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":173
 *                 else:
 *                     message = u"%s, line %d" % (message, line)
 *         return exctype(message, code, line, column)             # <<<<<<<<<<<<<<
 * 
 *     cdef _buildExceptionMessage(self, default_message):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_message);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_message);
  __Pyx_GIVEREF(__pyx_v_message);
  __Pyx_INCREF(__pyx_v_code);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_code);
  __Pyx_GIVEREF(__pyx_v_code);
  __Pyx_INCREF(__pyx_v_line);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_line);
  __Pyx_GIVEREF(__pyx_v_line);
  __Pyx_INCREF(__pyx_v_column);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_column);
  __Pyx_GIVEREF(__pyx_v_column);
  __pyx_t_1 = PyObject_Call(__pyx_v_exctype, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._BaseErrorLog._buildParseException");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_code);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_line);
  __Pyx_DECREF(__pyx_v_column);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_exctype);
  __Pyx_DECREF(__pyx_v_default_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":175
 *         return exctype(message, code, line, column)
 * 
 *     cdef _buildExceptionMessage(self, default_message):             # <<<<<<<<<<<<<<
 *         if self._first_error is None:
 *             return default_message
 */

static  PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_self, PyObject *__pyx_v_default_message) {
  PyObject *__pyx_v_message;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_buildExceptionMessage");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_default_message);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":176
 * 
 *     cdef _buildExceptionMessage(self, default_message):
 *         if self._first_error is None:             # <<<<<<<<<<<<<<
 *             return default_message
 *         if self._first_error.message is not None and self._first_error.message:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_first_error) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":177
 *     cdef _buildExceptionMessage(self, default_message):
 *         if self._first_error is None:
 *             return default_message             # <<<<<<<<<<<<<<
 *         if self._first_error.message is not None and self._first_error.message:
 *             message = self._first_error.message
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default_message);
    __pyx_r = __pyx_v_default_message;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":178
 *         if self._first_error is None:
 *             return default_message
 *         if self._first_error.message is not None and self._first_error.message:             # <<<<<<<<<<<<<<
 *             message = self._first_error.message
 *         elif default_message is None:
 */
  __pyx_t_1 = (__pyx_v_self->_first_error->message != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_first_error->message); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":179
 *             return default_message
 *         if self._first_error.message is not None and self._first_error.message:
 *             message = self._first_error.message             # <<<<<<<<<<<<<<
 *         elif default_message is None:
 *             return None
 */
    __Pyx_INCREF(__pyx_v_self->_first_error->message);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_v_self->_first_error->message;
    goto __pyx_L4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":180
 *         if self._first_error.message is not None and self._first_error.message:
 *             message = self._first_error.message
 *         elif default_message is None:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_3 = (__pyx_v_default_message == Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":181
 *             message = self._first_error.message
 *         elif default_message is None:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             message = default_message
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":183
 *             return None
 *         else:
 *             message = default_message             # <<<<<<<<<<<<<<
 *         if self._first_error.line > 0:
 *             if self._first_error.column > 0:
 */
    __Pyx_INCREF(__pyx_v_default_message);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_v_default_message;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":184
 *         else:
 *             message = default_message
 *         if self._first_error.line > 0:             # <<<<<<<<<<<<<<
 *             if self._first_error.column > 0:
 *                 message = u"%s, line %d, column %d" % (
 */
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_first_error->line, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":185
 *             message = default_message
 *         if self._first_error.line > 0:
 *             if self._first_error.column > 0:             # <<<<<<<<<<<<<<
 *                 message = u"%s, line %d, column %d" % (
 *                     message, self._first_error.line, self._first_error.column)
 */
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->_first_error->column, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":187
 *             if self._first_error.column > 0:
 *                 message = u"%s, line %d, column %d" % (
 *                     message, self._first_error.line, self._first_error.column)             # <<<<<<<<<<<<<<
 *             else:
 *                 message = u"%s, line %d" % (message, self._first_error.line)
 */
      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __Pyx_INCREF(__pyx_v_self->_first_error->line);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_first_error->line);
      __Pyx_GIVEREF(__pyx_v_self->_first_error->line);
      __Pyx_INCREF(__pyx_v_self->_first_error->column);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_self->_first_error->column);
      __Pyx_GIVEREF(__pyx_v_self->_first_error->column);
      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_32), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":189
 *                     message, self._first_error.line, self._first_error.column)
 *             else:
 *                 message = u"%s, line %d" % (message, self._first_error.line)             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __Pyx_INCREF(__pyx_v_self->_first_error->line);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_self->_first_error->line);
      __Pyx_GIVEREF(__pyx_v_self->_first_error->line);
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_33), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":190
 *             else:
 *                 message = u"%s, line %d" % (message, self._first_error.line)
 *         return message             # <<<<<<<<<<<<<<
 * 
 * cdef class _ListErrorLog(_BaseErrorLog):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_message);
  __pyx_r = __pyx_v_message;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._BaseErrorLog._buildExceptionMessage");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_default_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":195
 *     u"Immutable base version of a list based error log."
 *     cdef list _entries
 *     def __init__(self, entries, first_error, last_error):             # <<<<<<<<<<<<<<
 *         if entries:
 *             if first_error is None:
 */

static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_entries = 0;
  PyObject *__pyx_v_first_error = 0;
  PyObject *__pyx_v_last_error = 0;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__entries,&__pyx_n_s__first_error,&__pyx_n_s__last_error,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__entries);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__first_error);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__last_error);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_entries = values[0];
    __pyx_v_first_error = values[1];
    __pyx_v_last_error = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_entries = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_first_error = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_last_error = PyTuple_GET_ITEM(__pyx_args, 2);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_entries);
  __Pyx_INCREF(__pyx_v_first_error);
  __Pyx_INCREF(__pyx_v_last_error);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":196
 *     cdef list _entries
 *     def __init__(self, entries, first_error, last_error):
 *         if entries:             # <<<<<<<<<<<<<<
 *             if first_error is None:
 *                 first_error = entries[0]
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_entries); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":197
 *     def __init__(self, entries, first_error, last_error):
 *         if entries:
 *             if first_error is None:             # <<<<<<<<<<<<<<
 *                 first_error = entries[0]
 *             if last_error is None:
 */
    __pyx_t_1 = (__pyx_v_first_error == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":198
 *         if entries:
 *             if first_error is None:
 *                 first_error = entries[0]             # <<<<<<<<<<<<<<
 *             if last_error is None:
 *                 last_error = entries[-1]
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_entries, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_first_error);
      __pyx_v_first_error = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":199
 *             if first_error is None:
 *                 first_error = entries[0]
 *             if last_error is None:             # <<<<<<<<<<<<<<
 *                 last_error = entries[-1]
 *         _BaseErrorLog.__init__(self, first_error, last_error)
 */
    __pyx_t_1 = (__pyx_v_last_error == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":200
 *                 first_error = entries[0]
 *             if last_error is None:
 *                 last_error = entries[-1]             # <<<<<<<<<<<<<<
 *         _BaseErrorLog.__init__(self, first_error, last_error)
 *         self._entries = entries
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_entries, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_last_error);
      __pyx_v_last_error = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":201
 *             if last_error is None:
 *                 last_error = entries[-1]
 *         _BaseErrorLog.__init__(self, first_error, last_error)             # <<<<<<<<<<<<<<
 *         self._entries = entries
 * 
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseErrorLog)), __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_first_error);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_first_error);
  __Pyx_GIVEREF(__pyx_v_first_error);
  __Pyx_INCREF(__pyx_v_last_error);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_last_error);
  __Pyx_GIVEREF(__pyx_v_last_error);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":202
 *                 last_error = entries[-1]
 *         _BaseErrorLog.__init__(self, first_error, last_error)
 *         self._entries = entries             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  if (!(likely(PyList_CheckExact(__pyx_v_entries))||((__pyx_v_entries) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_entries)->tp_name), 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_entries);
  __Pyx_GIVEREF(__pyx_v_entries);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries));
  ((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries = ((PyObject *)__pyx_v_entries);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_entries);
  __Pyx_DECREF(__pyx_v_first_error);
  __Pyx_DECREF(__pyx_v_last_error);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":204
 *         self._entries = entries
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         u"""Creates a shallow copy of this error log.  Reuses the list of
 *         entries.
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_copy[] = "Creates a shallow copy of this error log.  Reuses the list of\n        entries.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":208
 *         entries.
 *         """
 *         return _ListErrorLog(self._entries, self._first_error, self.last_error)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries));
  __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries));
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base._first_error));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base._first_error));
  __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base._first_error));
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base.last_error);
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base.last_error);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->__pyx_base.last_error);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":210
 *         return _ListErrorLog(self._entries, self._first_error, self.last_error)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self._entries)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":211
 * 
 *     def __iter__(self):
 *         return iter(self._entries)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetIter(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":213
 *         return iter(self._entries)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         cdef list l = []
 *         for entry in self._entries:
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_l = 0;
  PyObject *__pyx_v_entry;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__repr__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_entry = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":214
 * 
 *     def __repr__(self):
 *         cdef list l = []             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             l.append(repr(entry))
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_l = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":215
 *     def __repr__(self):
 *         cdef list l = []
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             l.append(repr(entry))
 *         return u'\n'.join(l)
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_1 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    __Pyx_DECREF(__pyx_v_entry);
    __pyx_v_entry = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":216
 *         cdef list l = []
 *         for entry in self._entries:
 *             l.append(repr(entry))             # <<<<<<<<<<<<<<
 *         return u'\n'.join(l)
 * 
 */
    if (unlikely(__pyx_v_l == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_3 = PyObject_Repr(__pyx_v_entry); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyList_Append(((PyObject *)__pyx_v_l), __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":217
 *         for entry in self._entries:
 *             l.append(repr(entry))
 *         return u'\n'.join(l)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_34), __pyx_n_s__join); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_v_l));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_l));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_l));
  __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":219
 *         return u'\n'.join(l)
 * 
 *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
 *         return self._entries[index]
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__getitem__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":220
 * 
 *     def __getitem__(self, index):
 *         return self._entries[index]             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries), __pyx_v_index); if (!__pyx_t_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":222
 *         return self._entries[index]
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return len(self._entries)
 * 
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  Py_ssize_t __pyx_t_1;
  __Pyx_RefNannySetupContext("__len__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":223
 * 
 *     def __len__(self):
 *         return len(self._entries)             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, error_type):
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__len__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":225
 *         return len(self._entries)
 * 
 *     def __contains__(self, error_type):             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             if entry.type == error_type:
 */

static int __pyx_pf_4lxml_5etree_13_ListErrorLog___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_error_type); /*proto*/
static int __pyx_pf_4lxml_5etree_13_ListErrorLog___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_error_type) {
  PyObject *__pyx_v_entry;
  int __pyx_r;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__contains__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_error_type);
  __pyx_v_entry = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":226
 * 
 *     def __contains__(self, error_type):
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             if entry.type == error_type:
 *                 return True
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_1 = 0; __pyx_t_2 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_2);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    __Pyx_DECREF(__pyx_v_entry);
    __pyx_v_entry = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":227
 *     def __contains__(self, error_type):
 *         for entry in self._entries:
 *             if entry.type == error_type:             # <<<<<<<<<<<<<<
 *                 return True
 *         return False
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_entry, __pyx_n_s__type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_error_type, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":228
 *         for entry in self._entries:
 *             if entry.type == error_type:
 *                 return True             # <<<<<<<<<<<<<<
 *         return False
 * 
 */
      __pyx_r = 1;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":229
 *             if entry.type == error_type:
 *                 return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__contains__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_error_type);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":231
 *         return False
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         cdef bint result
 *         result = self._entries
 */

static int __pyx_pf_4lxml_5etree_13_ListErrorLog___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_4lxml_5etree_13_ListErrorLog___nonzero__(PyObject *__pyx_v_self) {
  int __pyx_v_result;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__nonzero__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":233
 *     def __nonzero__(self):
 *         cdef bint result
 *         result = self._entries             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries)); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_result = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":234
 *         cdef bint result
 *         result = self._entries
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def filter_domains(self, domains):
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.__nonzero__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":236
 *         return result
 * 
 *     def filter_domains(self, domains):             # <<<<<<<<<<<<<<
 *         u"""Filter the errors by the given domains and return a new error log
 *         containing the matches.
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_domains(PyObject *__pyx_v_self, PyObject *__pyx_v_domains); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_domains[] = "Filter the errors by the given domains and return a new error log\n        containing the matches.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_domains(PyObject *__pyx_v_self, PyObject *__pyx_v_domains) {
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  PyObject *__pyx_v_filtered = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("filter_domains");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_domains);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":241
 *         """
 *         cdef _LogEntry entry
 *         cdef list filtered = []             # <<<<<<<<<<<<<<
 *         if not python.PySequence_Check(domains):
 *             domains = (domains,)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_filtered = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":242
 *         cdef _LogEntry entry
 *         cdef list filtered = []
 *         if not python.PySequence_Check(domains):             # <<<<<<<<<<<<<<
 *             domains = (domains,)
 *         for entry in self._entries:
 */
  __pyx_t_2 = (!PySequence_Check(__pyx_v_domains));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":243
 *         cdef list filtered = []
 *         if not python.PySequence_Check(domains):
 *             domains = (domains,)             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             if entry.domain in domains:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_domains);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_domains);
    __Pyx_GIVEREF(__pyx_v_domains);
    __Pyx_DECREF(__pyx_v_domains);
    __pyx_v_domains = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":244
 *         if not python.PySequence_Check(domains):
 *             domains = (domains,)
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             if entry.domain in domains:
 *                 filtered.append(entry)
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_3 = 0; __pyx_t_1 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_entry));
    __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":245
 *             domains = (domains,)
 *         for entry in self._entries:
 *             if entry.domain in domains:             # <<<<<<<<<<<<<<
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)
 */
    __pyx_t_2 = ((PySequence_Contains(__pyx_v_domains, __pyx_v_entry->domain))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":246
 *         for entry in self._entries:
 *             if entry.domain in domains:
 *                 filtered.append(entry)             # <<<<<<<<<<<<<<
 *         return _ListErrorLog(filtered, None, None)
 * 
 */
      if (unlikely(__pyx_v_filtered == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_filtered), ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":247
 *             if entry.domain in domains:
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
 * 
 *     def filter_types(self, types):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_filtered));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_filtered));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_filtered));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_domains");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_filtered);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_domains);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":249
 *         return _ListErrorLog(filtered, None, None)
 * 
 *     def filter_types(self, types):             # <<<<<<<<<<<<<<
 *         u"""filter_types(self, types)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_types(PyObject *__pyx_v_self, PyObject *__pyx_v_types); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_types[] = "filter_types(self, types)\n\n        Filter the errors by the given types and return a new error\n        log containing the matches.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_types(PyObject *__pyx_v_self, PyObject *__pyx_v_types) {
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  PyObject *__pyx_v_filtered = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("filter_types");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_types);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":256
 *         """
 *         cdef _LogEntry entry
 *         cdef list filtered = []             # <<<<<<<<<<<<<<
 *         if not python.PySequence_Check(types):
 *             types = (types,)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_filtered = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":257
 *         cdef _LogEntry entry
 *         cdef list filtered = []
 *         if not python.PySequence_Check(types):             # <<<<<<<<<<<<<<
 *             types = (types,)
 *         for entry in self._entries:
 */
  __pyx_t_2 = (!PySequence_Check(__pyx_v_types));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":258
 *         cdef list filtered = []
 *         if not python.PySequence_Check(types):
 *             types = (types,)             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             if entry.type in types:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    __Pyx_DECREF(__pyx_v_types);
    __pyx_v_types = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":259
 *         if not python.PySequence_Check(types):
 *             types = (types,)
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             if entry.type in types:
 *                 filtered.append(entry)
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_3 = 0; __pyx_t_1 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_entry));
    __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":260
 *             types = (types,)
 *         for entry in self._entries:
 *             if entry.type in types:             # <<<<<<<<<<<<<<
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)
 */
    __pyx_t_2 = ((PySequence_Contains(__pyx_v_types, __pyx_v_entry->type))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":261
 *         for entry in self._entries:
 *             if entry.type in types:
 *                 filtered.append(entry)             # <<<<<<<<<<<<<<
 *         return _ListErrorLog(filtered, None, None)
 * 
 */
      if (unlikely(__pyx_v_filtered == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_filtered), ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":262
 *             if entry.type in types:
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
 * 
 *     def filter_levels(self, levels):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_filtered));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_filtered));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_filtered));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_types");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_filtered);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_types);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":264
 *         return _ListErrorLog(filtered, None, None)
 * 
 *     def filter_levels(self, levels):             # <<<<<<<<<<<<<<
 *         u"""filter_levels(self, levels)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_levels(PyObject *__pyx_v_self, PyObject *__pyx_v_levels); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_levels[] = "filter_levels(self, levels)\n\n        Filter the errors by the given error levels and return a new\n        error log containing the matches.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_levels(PyObject *__pyx_v_self, PyObject *__pyx_v_levels) {
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  PyObject *__pyx_v_filtered = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("filter_levels");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_levels);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":271
 *         """
 *         cdef _LogEntry entry
 *         cdef list filtered = []             # <<<<<<<<<<<<<<
 *         if not python.PySequence_Check(levels):
 *             levels = (levels,)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_filtered = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":272
 *         cdef _LogEntry entry
 *         cdef list filtered = []
 *         if not python.PySequence_Check(levels):             # <<<<<<<<<<<<<<
 *             levels = (levels,)
 *         for entry in self._entries:
 */
  __pyx_t_2 = (!PySequence_Check(__pyx_v_levels));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":273
 *         cdef list filtered = []
 *         if not python.PySequence_Check(levels):
 *             levels = (levels,)             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             if entry.level in levels:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_levels);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_levels);
    __Pyx_GIVEREF(__pyx_v_levels);
    __Pyx_DECREF(__pyx_v_levels);
    __pyx_v_levels = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":274
 *         if not python.PySequence_Check(levels):
 *             levels = (levels,)
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             if entry.level in levels:
 *                 filtered.append(entry)
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_3 = 0; __pyx_t_1 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_entry));
    __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":275
 *             levels = (levels,)
 *         for entry in self._entries:
 *             if entry.level in levels:             # <<<<<<<<<<<<<<
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)
 */
    __pyx_t_2 = ((PySequence_Contains(__pyx_v_levels, __pyx_v_entry->level))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":276
 *         for entry in self._entries:
 *             if entry.level in levels:
 *                 filtered.append(entry)             # <<<<<<<<<<<<<<
 *         return _ListErrorLog(filtered, None, None)
 * 
 */
      if (unlikely(__pyx_v_filtered == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_filtered), ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":277
 *             if entry.level in levels:
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
 * 
 *     def filter_from_level(self, level):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_filtered));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_filtered));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_filtered));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_levels");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_filtered);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_levels);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":279
 *         return _ListErrorLog(filtered, None, None)
 * 
 *     def filter_from_level(self, level):             # <<<<<<<<<<<<<<
 *         u"""filter_from_level(self, level)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_level(PyObject *__pyx_v_self, PyObject *__pyx_v_level); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_level[] = "filter_from_level(self, level)\n\n        Return a log with all messages of the requested level of worse.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_level(PyObject *__pyx_v_self, PyObject *__pyx_v_level) {
  struct __pyx_obj_4lxml_5etree__LogEntry *__pyx_v_entry;
  PyObject *__pyx_v_filtered = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("filter_from_level");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_level);
  __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":285
 *         """
 *         cdef _LogEntry entry
 *         cdef list filtered = []             # <<<<<<<<<<<<<<
 *         for entry in self._entries:
 *             if entry.level >= level:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_filtered = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":286
 *         cdef _LogEntry entry
 *         cdef list filtered = []
 *         for entry in self._entries:             # <<<<<<<<<<<<<<
 *             if entry.level >= level:
 *                 filtered.append(entry)
 */
  if (likely(((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries) != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_1 = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_v_self)->_entries); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_entry));
    __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":287
 *         cdef list filtered = []
 *         for entry in self._entries:
 *             if entry.level >= level:             # <<<<<<<<<<<<<<
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_entry->level, __pyx_v_level, Py_GE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":288
 *         for entry in self._entries:
 *             if entry.level >= level:
 *                 filtered.append(entry)             # <<<<<<<<<<<<<<
 *         return _ListErrorLog(filtered, None, None)
 * 
 */
      if (unlikely(__pyx_v_filtered == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_filtered), ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":289
 *             if entry.level >= level:
 *                 filtered.append(entry)
 *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
 * 
 *     def filter_from_fatals(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_filtered));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_filtered));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_filtered));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_from_level");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entry);
  __Pyx_XDECREF(__pyx_v_filtered);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_level);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":291
 *         return _ListErrorLog(filtered, None, None)
 * 
 *     def filter_from_fatals(self):             # <<<<<<<<<<<<<<
 *         u"""filter_from_fatals(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_fatals(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_fatals[] = "filter_from_fatals(self)\n\n        Convenience method to get all fatal error messages.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_fatals(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("filter_from_fatals");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":296
 *         Convenience method to get all fatal error messages.
 *         """
 *         return self.filter_from_level(ErrorLevels.FATAL)             # <<<<<<<<<<<<<<
 * 
 *     def filter_from_errors(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__filter_from_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__FATAL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_from_fatals");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":298
 *         return self.filter_from_level(ErrorLevels.FATAL)
 * 
 *     def filter_from_errors(self):             # <<<<<<<<<<<<<<
 *         u"""filter_from_errors(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_errors(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_errors[] = "filter_from_errors(self)\n\n        Convenience method to get all error messages or worse.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_errors(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("filter_from_errors");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":303
 *         Convenience method to get all error messages or worse.
 *         """
 *         return self.filter_from_level(ErrorLevels.ERROR)             # <<<<<<<<<<<<<<
 * 
 *     def filter_from_warnings(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__filter_from_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_from_errors");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":305
 *         return self.filter_from_level(ErrorLevels.ERROR)
 * 
 *     def filter_from_warnings(self):             # <<<<<<<<<<<<<<
 *         u"""filter_from_warnings(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_warnings(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_warnings[] = "filter_from_warnings(self)\n\n        Convenience method to get all warnings or worse.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_warnings(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("filter_from_warnings");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":310
 *         Convenience method to get all warnings or worse.
 *         """
 *         return self.filter_from_level(ErrorLevels.WARNING)             # <<<<<<<<<<<<<<
 * 
 * cdef class _ErrorLog(_ListErrorLog):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__filter_from_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__WARNING); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ListErrorLog.filter_from_warnings");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":313
 * 
 * cdef class _ErrorLog(_ListErrorLog):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         _ListErrorLog.__init__(self, [], None, None)
 * 
 */

static int __pyx_pf_4lxml_5etree_9_ErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_9_ErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":314
 * cdef class _ErrorLog(_ListErrorLog):
 *     def __init__(self):
 *         _ListErrorLog.__init__(self, [], None, None)             # <<<<<<<<<<<<<<
 * 
 *     cdef void connect(self):
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_3, 3, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":316
 *         _ListErrorLog.__init__(self, [], None, None)
 * 
 *     cdef void connect(self):             # <<<<<<<<<<<<<<
 *         self._first_error = None
 *         del self._entries[:]
 */

static  void __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
  __Pyx_RefNannySetupContext("connect");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":317
 * 
 *     cdef void connect(self):
 *         self._first_error = None             # <<<<<<<<<<<<<<
 *         del self._entries[:]
 *         connectErrorLog(<void*>self)
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._first_error);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
  __pyx_v_self->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":318
 *     cdef void connect(self):
 *         self._first_error = None
 *         del self._entries[:]             # <<<<<<<<<<<<<<
 *         connectErrorLog(<void*>self)
 * 
 */
  if (PySequence_DelSlice(((PyObject *)__pyx_v_self->__pyx_base._entries), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":319
 *         self._first_error = None
 *         del self._entries[:]
 *         connectErrorLog(<void*>self)             # <<<<<<<<<<<<<<
 * 
 *     cdef void disconnect(self):
 */
  __pyx_f_4lxml_5etree_connectErrorLog(((void *)__pyx_v_self));

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree._ErrorLog.connect");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":321
 *         connectErrorLog(<void*>self)
 * 
 *     cdef void disconnect(self):             # <<<<<<<<<<<<<<
 *         connectErrorLog(NULL)
 * 
 */

static  void __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_self) {
  __Pyx_RefNannySetupContext("disconnect");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":322
 * 
 *     cdef void disconnect(self):
 *         connectErrorLog(NULL)             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
  __pyx_f_4lxml_5etree_connectErrorLog(NULL);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":324
 *         connectErrorLog(NULL)
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         self._first_error = None
 *         del self._entries[:]
 */

static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_clear(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_clear(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("clear");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":325
 * 
 *     def clear(self):
 *         self._first_error = None             # <<<<<<<<<<<<<<
 *         del self._entries[:]
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error));
  ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":326
 *     def clear(self):
 *         self._first_error = None
 *         del self._entries[:]             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  if (PySequence_DelSlice(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base._entries), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ErrorLog.clear");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":328
 *         del self._entries[:]
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         u"""Creates a shallow copy of this error log and the list of entries.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_9_ErrorLog_copy[] = "Creates a shallow copy of this error log and the list of entries.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":331
 *         u"""Creates a shallow copy of this error log and the list of entries.
 *         """
 *         return _ListErrorLog(self._entries[:], self._first_error,             # <<<<<<<<<<<<<<
 *                              self.last_error)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PySequence_GetSlice(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base._entries), 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":332
 *         """
 *         return _ListErrorLog(self._entries[:], self._first_error,
 *                              self.last_error)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error));
  __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error));
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base.last_error);
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base.last_error);
  __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base.last_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ErrorLog.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":334
 *                              self.last_error)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self._entries[:])
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":335
 * 
 *     def __iter__(self):
 *         return iter(self._entries[:])             # <<<<<<<<<<<<<<
 * 
 *     def receive(self, entry):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PySequence_GetSlice(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base._entries), 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ErrorLog.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":337
 *         return iter(self._entries[:])
 * 
 *     def receive(self, entry):             # <<<<<<<<<<<<<<
 *         if self._first_error is None:
 *             self._first_error = entry
 */

static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("receive");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_entry);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":338
 * 
 *     def receive(self, entry):
 *         if self._first_error is None:             # <<<<<<<<<<<<<<
 *             self._first_error = entry
 *         self._entries.append(entry)
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":339
 *     def receive(self, entry):
 *         if self._first_error is None:
 *             self._first_error = entry             # <<<<<<<<<<<<<<
 *         self._entries.append(entry)
 * 
 */
    if (!(likely(((__pyx_v_entry) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_entry, __pyx_ptype_4lxml_5etree__LogEntry))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_INCREF(__pyx_v_entry);
    __Pyx_GIVEREF(__pyx_v_entry);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error));
    ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_v_entry);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":340
 *         if self._first_error is None:
 *             self._first_error = entry
 *         self._entries.append(entry)             # <<<<<<<<<<<<<<
 * 
 * cdef class _DomainErrorLog(_ErrorLog):
 */
  if (unlikely(((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base._entries == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = PyList_Append(((PyObject *)((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_v_self)->__pyx_base._entries), __pyx_v_entry); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ErrorLog.receive");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":343
 * 
 * cdef class _DomainErrorLog(_ErrorLog):
 *     def __init__(self, domains):             # <<<<<<<<<<<<<<
 *         _ErrorLog.__init__(self)
 *         self._accepted_domains = tuple(domains)
 */

static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_domains = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__domains,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__domains);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_domains = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_domains = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._DomainErrorLog.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":344
 * cdef class _DomainErrorLog(_ErrorLog):
 *     def __init__(self, domains):
 *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
 *         self._accepted_domains = tuple(domains)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":345
 *     def __init__(self, domains):
 *         _ErrorLog.__init__(self)
 *         self._accepted_domains = tuple(domains)             # <<<<<<<<<<<<<<
 * 
 *     def receive(self, entry):
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_domains);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_domains);
  __Pyx_GIVEREF(__pyx_v_domains);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s___accepted_domains, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._DomainErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":347
 *         self._accepted_domains = tuple(domains)
 * 
 *     def receive(self, entry):             # <<<<<<<<<<<<<<
 *         if entry.domain in self._accepted_domains:
 *             _ErrorLog.receive(self, entry)
 */

static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("receive");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_entry);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":348
 * 
 *     def receive(self, entry):
 *         if entry.domain in self._accepted_domains:             # <<<<<<<<<<<<<<
 *             _ErrorLog.receive(self, entry)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_entry, __pyx_n_s__domain); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s___accepted_domains); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = ((PySequence_Contains(__pyx_t_2, __pyx_t_1))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":349
 *     def receive(self, entry):
 *         if entry.domain in self._accepted_domains:
 *             _ErrorLog.receive(self, entry)             # <<<<<<<<<<<<<<
 * 
 * cdef class _RotatingErrorLog(_ErrorLog):
 */
    __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), __pyx_n_s__receive); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __Pyx_INCREF(__pyx_v_entry);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_entry);
    __Pyx_GIVEREF(__pyx_v_entry);
    __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._DomainErrorLog.receive");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":353
 * cdef class _RotatingErrorLog(_ErrorLog):
 *     cdef int _max_len
 *     def __init__(self, max_len):             # <<<<<<<<<<<<<<
 *         _ErrorLog.__init__(self)
 *         self._max_len = max_len
 */

static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_max_len = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__max_len,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_len);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_max_len = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_max_len = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":354
 *     cdef int _max_len
 *     def __init__(self, max_len):
 *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
 *         self._max_len = max_len
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":355
 *     def __init__(self, max_len):
 *         _ErrorLog.__init__(self)
 *         self._max_len = max_len             # <<<<<<<<<<<<<<
 * 
 *     def receive(self, entry):
 */
  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_max_len); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->_max_len = __pyx_t_4;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":357
 *         self._max_len = max_len
 * 
 *     def receive(self, entry):             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(self._entries) > self._max_len:
 *             del self._entries[0]
 */

static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_entry) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("receive");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_entry);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":358
 * 
 *     def receive(self, entry):
 *         if python.PyList_GET_SIZE(self._entries) > self._max_len:             # <<<<<<<<<<<<<<
 *             del self._entries[0]
 *         self._entries.append(entry)
 */
  __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._entries)) > ((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->_max_len);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":359
 *     def receive(self, entry):
 *         if python.PyList_GET_SIZE(self._entries) > self._max_len:
 *             del self._entries[0]             # <<<<<<<<<<<<<<
 *         self._entries.append(entry)
 * 
 */
    if (__Pyx_DelItemInt(((PyObject *)((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._entries), 0, sizeof(long), PyInt_FromLong) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":360
 *         if python.PyList_GET_SIZE(self._entries) > self._max_len:
 *             del self._entries[0]
 *         self._entries.append(entry)             # <<<<<<<<<<<<<<
 * 
 * cdef class PyErrorLog(_BaseErrorLog):
 */
  if (unlikely(((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._entries == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = PyList_Append(((PyObject *)((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)__pyx_v_self)->__pyx_base.__pyx_base._entries), __pyx_v_entry); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.receive");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":384
 *     cdef object _map_level
 *     cdef object _log
 *     def __init__(self, logger_name=None):             # <<<<<<<<<<<<<<
 *         _BaseErrorLog.__init__(self, None, None)
 *         import logging
 */

static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_logger_name = 0;
  PyObject *__pyx_v_logging;
  PyObject *__pyx_v_logger;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__logger_name,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__logger_name);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_logger_name = values[0];
  } else {
    __pyx_v_logger_name = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_logger_name = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_logger_name);
  __pyx_v_logging = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_logger = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":385
 *     cdef object _log
 *     def __init__(self, logger_name=None):
 *         _BaseErrorLog.__init__(self, None, None)             # <<<<<<<<<<<<<<
 *         import logging
 *         self.level_map = {
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseErrorLog)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":386
 *     def __init__(self, logger_name=None):
 *         _BaseErrorLog.__init__(self, None, None)
 *         import logging             # <<<<<<<<<<<<<<
 *         self.level_map = {
 *             ErrorLevels.WARNING : logging.WARNING,
 */
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__logging), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_logging);
  __pyx_v_logging = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":387
 *         _BaseErrorLog.__init__(self, None, None)
 *         import logging
 *         self.level_map = {             # <<<<<<<<<<<<<<
 *             ErrorLevels.WARNING : logging.WARNING,
 *             ErrorLevels.ERROR   : logging.ERROR,
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":388
 *         import logging
 *         self.level_map = {
 *             ErrorLevels.WARNING : logging.WARNING,             # <<<<<<<<<<<<<<
 *             ErrorLevels.ERROR   : logging.ERROR,
 *             ErrorLevels.FATAL   : logging.CRITICAL
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__WARNING); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_logging, __pyx_n_s__WARNING); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":389
 *         self.level_map = {
 *             ErrorLevels.WARNING : logging.WARNING,
 *             ErrorLevels.ERROR   : logging.ERROR,             # <<<<<<<<<<<<<<
 *             ErrorLevels.FATAL   : logging.CRITICAL
 *             }
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_logging, __pyx_n_s__ERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":390
 *             ErrorLevels.WARNING : logging.WARNING,
 *             ErrorLevels.ERROR   : logging.ERROR,
 *             ErrorLevels.FATAL   : logging.CRITICAL             # <<<<<<<<<<<<<<
 *             }
 *         self._map_level = self.level_map.get
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__FATAL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_logging, __pyx_n_s__CRITICAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":387
 *         _BaseErrorLog.__init__(self, None, None)
 *         import logging
 *         self.level_map = {             # <<<<<<<<<<<<<<
 *             ErrorLevels.WARNING : logging.WARNING,
 *             ErrorLevels.ERROR   : logging.ERROR,
 */
  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->level_map);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->level_map);
  ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->level_map = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":392
 *             ErrorLevels.FATAL   : logging.CRITICAL
 *             }
 *         self._map_level = self.level_map.get             # <<<<<<<<<<<<<<
 *         if logger_name:
 *             logger = logging.getLogger(logger_name)
 */
  __pyx_t_3 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->level_map, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_map_level);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_map_level);
  ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_map_level = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":393
 *             }
 *         self._map_level = self.level_map.get
 *         if logger_name:             # <<<<<<<<<<<<<<
 *             logger = logging.getLogger(logger_name)
 *         else:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_logger_name); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":394
 *         self._map_level = self.level_map.get
 *         if logger_name:
 *             logger = logging.getLogger(logger_name)             # <<<<<<<<<<<<<<
 *         else:
 *             logger = logging.getLogger()
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_logging, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_logger_name);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_logger_name);
    __Pyx_GIVEREF(__pyx_v_logger_name);
    __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_logger);
    __pyx_v_logger = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":396
 *             logger = logging.getLogger(logger_name)
 *         else:
 *             logger = logging.getLogger()             # <<<<<<<<<<<<<<
 *         self._log = logger.log
 * 
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_logging, __pyx_n_s__getLogger); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_logger);
    __pyx_v_logger = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":397
 *         else:
 *             logger = logging.getLogger()
 *         self._log = logger.log             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_logger, __pyx_n_s__log); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_log);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_log);
  ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_log = __pyx_t_2;
  __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_logging);
  __Pyx_DECREF(__pyx_v_logger);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_logger_name);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":399
 *         self._log = logger.log
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         u"""Dummy method that returns an empty error log.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_10PyErrorLog_copy[] = "Dummy method that returns an empty error log.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":402
 *         u"""Dummy method that returns an empty error log.
 *         """
 *         return _ListErrorLog([], None, None)             # <<<<<<<<<<<<<<
 * 
 *     def log(self, log_entry, message, *args):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ListErrorLog)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":404
 *         return _ListErrorLog([], None, None)
 * 
 *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
 *         u"""log(self, log_entry, message, *args)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_log(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_10PyErrorLog_log[] = "log(self, log_entry, message, *args)\n\n        Called by the .receive() method to log a _LogEntry instance to\n        the Python logging system.  This handles the error level\n        mapping.\n\n        In the default implementation, the ``message`` argument\n        receives a complete log line, and there are no further\n        ``args``.  To change the message format, it is best to\n        override the .receive() method instead of this one.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_log(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_log_entry = 0;
  PyObject *__pyx_v_message = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__log_entry,&__pyx_n_s__message,0};
  __Pyx_RefNannySetupContext("log");
  if (PyTuple_GET_SIZE(__pyx_args) > 2) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 2, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_args);
    if (unlikely(!__pyx_v_args)) return NULL;
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__log_entry);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__message);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, 1); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 2) ? PyTuple_GET_SIZE(__pyx_args) : 2;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "log") < 0)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_log_entry = values[0];
    __pyx_v_message = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_log_entry = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_message = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[8]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.log");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":417
 *         """
 *         self._log(
 *             self._map_level(log_entry.level, 0),             # <<<<<<<<<<<<<<
 *             message, *args
 *             )
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_log_entry, __pyx_n_s__level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_map_level, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":418
 *         self._log(
 *             self._map_level(log_entry.level, 0),
 *             message, *args             # <<<<<<<<<<<<<<
 *             )
 * 
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_message);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_message);
  __Pyx_GIVEREF(__pyx_v_message);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":419
 *             self._map_level(log_entry.level, 0),
 *             message, *args
 *             )             # <<<<<<<<<<<<<<
 * 
 *     def receive(self, _LogEntry log_entry):
 */
  __pyx_t_1 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_3 = PyNumber_Add(__pyx_t_2, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_self)->_log, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.log");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":421
 *             )
 * 
 *     def receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
 *         u"""receive(self, log_entry)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_log_entry); /*proto*/
static char __pyx_doc_4lxml_5etree_10PyErrorLog_receive[] = "receive(self, log_entry)\n\n        Receive a _LogEntry instance from the logging system.  Calls\n        the .log() method with appropriate parameters::\n\n            self.log(log_entry, repr(log_entry))\n\n        You can override this method to provide your own log output\n        format.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_receive(PyObject *__pyx_v_self, PyObject *__pyx_v_log_entry) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("receive");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "log_entry", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":432
 *         format.
 *         """
 *         self.log(log_entry, repr(log_entry))             # <<<<<<<<<<<<<<
 * 
 * # thread-local, global list log to collect error output messages from
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Repr(__pyx_v_log_entry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_log_entry);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_log_entry);
  __Pyx_GIVEREF(__pyx_v_log_entry);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.PyErrorLog.receive");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":440
 * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)
 * 
 * cdef _BaseErrorLog _getGlobalErrorLog():             # <<<<<<<<<<<<<<
 *     u"""Retrieve the global error log of this thread."""
 *     cdef python.PyObject* thread_dict
 */

static  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getGlobalErrorLog(void) {
  PyObject *__pyx_v_thread_dict;
  PyObject *__pyx_v_log;
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_getGlobalErrorLog");
  __pyx_v_log = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":443
 *     u"""Retrieve the global error log of this thread."""
 *     cdef python.PyObject* thread_dict
 *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
 *     if thread_dict is NULL:
 *         return __GLOBAL_ERROR_LOG
 */
  __pyx_v_thread_dict = PyThreadState_GetDict();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":444
 *     cdef python.PyObject* thread_dict
 *     thread_dict = python.PyThreadState_GetDict()
 *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
 *         return __GLOBAL_ERROR_LOG
 *     try:
 */
  __pyx_t_1 = (__pyx_v_thread_dict == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":445
 *     thread_dict = python.PyThreadState_GetDict()
 *     if thread_dict is NULL:
 *         return __GLOBAL_ERROR_LOG             # <<<<<<<<<<<<<<
 *     try:
 *         return (<object>thread_dict)[u"_GlobalErrorLog"]
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
    __pyx_r = __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":446
 *     if thread_dict is NULL:
 *         return __GLOBAL_ERROR_LOG
 *     try:             # <<<<<<<<<<<<<<
 *         return (<object>thread_dict)[u"_GlobalErrorLog"]
 *     except KeyError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":447
 *         return __GLOBAL_ERROR_LOG
 *     try:
 *         return (<object>thread_dict)[u"_GlobalErrorLog"]             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_thread_dict), ((PyObject *)__pyx_n_u___GlobalErrorLog)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L8_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L11_try_end;
    __pyx_L8_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":448
 *     try:
 *         return (<object>thread_dict)[u"_GlobalErrorLog"]
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
 *               _RotatingErrorLog(__MAX_LOG_SIZE)
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree._getGlobalErrorLog");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":450
 *     except KeyError:
 *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
 *               _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
 *         return log
 * 
 */
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_int_100);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_100);
      __Pyx_GIVEREF(__pyx_int_100);
      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__RotatingErrorLog)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_log);
      __pyx_v_log = __pyx_t_7;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":449
 *         return (<object>thread_dict)[u"_GlobalErrorLog"]
 *     except KeyError:
 *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \             # <<<<<<<<<<<<<<
 *               _RotatingErrorLog(__MAX_LOG_SIZE)
 *         return log
 */
      if (PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), ((PyObject *)__pyx_n_u___GlobalErrorLog), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":451
 *         log = (<object>thread_dict)[u"_GlobalErrorLog"] = \
 *               _RotatingErrorLog(__MAX_LOG_SIZE)
 *         return log             # <<<<<<<<<<<<<<
 * 
 * cdef _setGlobalErrorLog(_BaseErrorLog log):
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      if (!(likely(((__pyx_v_log) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_log, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_INCREF(__pyx_v_log);
      __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5_exception_handled;
    }
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L11_try_end:;
  }

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._getGlobalErrorLog");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_log);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":453
 *         return log
 * 
 * cdef _setGlobalErrorLog(_BaseErrorLog log):             # <<<<<<<<<<<<<<
 *     u"""Set the global error log of this thread."""
 *     cdef python.PyObject* thread_dict
 */

static  PyObject *__pyx_f_4lxml_5etree__setGlobalErrorLog(struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_log) {
  PyObject *__pyx_v_thread_dict;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_setGlobalErrorLog");
  __Pyx_INCREF((PyObject *)__pyx_v_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":456
 *     u"""Set the global error log of this thread."""
 *     cdef python.PyObject* thread_dict
 *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
 *     if thread_dict is NULL:
 *         global __GLOBAL_ERROR_LOG
 */
  __pyx_v_thread_dict = PyThreadState_GetDict();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":457
 *     cdef python.PyObject* thread_dict
 *     thread_dict = python.PyThreadState_GetDict()
 *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
 *         global __GLOBAL_ERROR_LOG
 *         __GLOBAL_ERROR_LOG = log
 */
  __pyx_t_1 = (__pyx_v_thread_dict == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":459
 *     if thread_dict is NULL:
 *         global __GLOBAL_ERROR_LOG
 *         __GLOBAL_ERROR_LOG = log             # <<<<<<<<<<<<<<
 *     else:
 *         (<object>thread_dict)[u"_GlobalErrorLog"] = log
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_log));
    __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
    __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_log));
    __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG = __pyx_v_log;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":461
 *         __GLOBAL_ERROR_LOG = log
 *     else:
 *         (<object>thread_dict)[u"_GlobalErrorLog"] = log             # <<<<<<<<<<<<<<
 * 
 * cdef __copyGlobalErrorLog():
 */
    if (PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), ((PyObject *)__pyx_n_u___GlobalErrorLog), ((PyObject *)__pyx_v_log)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._setGlobalErrorLog");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_log);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":463
 *         (<object>thread_dict)[u"_GlobalErrorLog"] = log
 * 
 * cdef __copyGlobalErrorLog():             # <<<<<<<<<<<<<<
 *     u"Helper function for properties in exceptions."
 *     return _getGlobalErrorLog().copy()
 */

static  PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__copyGlobalErrorLog");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":465
 * cdef __copyGlobalErrorLog():
 *     u"Helper function for properties in exceptions."
 *     return _getGlobalErrorLog().copy()             # <<<<<<<<<<<<<<
 * 
 * def use_global_python_log(PyErrorLog log not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.__copyGlobalErrorLog");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":467
 *     return _getGlobalErrorLog().copy()
 * 
 * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
 *     u"""use_global_python_log(log)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_use_global_python_log(PyObject *__pyx_self, PyObject *__pyx_v_log); /*proto*/
static char __pyx_doc_4lxml_5etree_use_global_python_log[] = "use_global_python_log(log)\n\n    Replace the global error log by an etree.PyErrorLog that uses the\n    standard Python logging package.\n\n    Note that this disables access to the global error log from exceptions.\n    Parsers, XSLT etc. will continue to provide their normal local error log.\n\n    Note: prior to lxml 2.2, this changed the error log globally.\n    Since lxml 2.2, the global error log is local to a thread and this\n    function will only set the global error log of the current thread.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_use_global_python_log(PyObject *__pyx_self, PyObject *__pyx_v_log) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("use_global_python_log");
  __pyx_self = __pyx_self;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log), __pyx_ptype_4lxml_5etree_PyErrorLog, 0, "log", 0))) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":480
 *     function will only set the global error log of the current thread.
 *     """
 *     _setGlobalErrorLog(log)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setGlobalErrorLog(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_log)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.use_global_python_log");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":484
 * 
 * # local log functions: forward error to logger object
 * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
 *     cdef _BaseErrorLog log_handler
 *     if c_log_handler is not NULL:
 */

static  void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_log_handler;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_forwardError");
  __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":486
 * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
 *     cdef _BaseErrorLog log_handler
 *     if c_log_handler is not NULL:             # <<<<<<<<<<<<<<
 *         log_handler = <_BaseErrorLog>c_log_handler
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_log_handler != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":487
 *     cdef _BaseErrorLog log_handler
 *     if c_log_handler is not NULL:
 *         log_handler = <_BaseErrorLog>c_log_handler             # <<<<<<<<<<<<<<
 *     else:
 *         log_handler = _getGlobalErrorLog()
 */
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_c_log_handler)));
    __Pyx_DECREF(((PyObject *)__pyx_v_log_handler));
    __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_c_log_handler);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":489
 *         log_handler = <_BaseErrorLog>c_log_handler
 *     else:
 *         log_handler = _getGlobalErrorLog()             # <<<<<<<<<<<<<<
 *     log_handler._receive(error)
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getGlobalErrorLog()); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_log_handler));
    __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":490
 *     else:
 *         log_handler = _getGlobalErrorLog()
 *     log_handler._receive(error)             # <<<<<<<<<<<<<<
 * 
 * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_log_handler->__pyx_vtab)->_receive(__pyx_v_log_handler, __pyx_v_error);

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._forwardError");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_log_handler);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":492
 *     log_handler._receive(error)
 * 
 * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
 *     # no Python objects here, may be called without thread context !
 *     # when we declare a Python object, Pyrex will INCREF(None) !
 */

static  void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":495
 *     # no Python objects here, may be called without thread context !
 *     # when we declare a Python object, Pyrex will INCREF(None) !
 *     if __DEBUG != 0:             # <<<<<<<<<<<<<<
 *         _forwardError(c_log_handler, error)
 * 
 */
  __pyx_t_1 = (1 != 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":496
 *     # when we declare a Python object, Pyrex will INCREF(None) !
 *     if __DEBUG != 0:
 *         _forwardError(c_log_handler, error)             # <<<<<<<<<<<<<<
 * 
 * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:
 */
    __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, __pyx_v_error);
    goto __pyx_L3;
  }
  __pyx_L3:;

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":498
 *         _forwardError(c_log_handler, error)
 * 
 * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
 *     # no Python objects here, may be called without thread context !
 *     # when we declare a Python object, Pyrex will INCREF(None) !
 */

static  void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler, char *__pyx_v_msg, ...) {
  xmlError __pyx_v_c_error;
  va_list __pyx_v_args;
  char *__pyx_v_c_text;
  char *__pyx_v_c_message;
  char *__pyx_v_c_element;
  int __pyx_v_text_size;
  int __pyx_v_element_size;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":507
 *     cdef char* c_element
 *     cdef int i, text_size, element_size
 *     if __DEBUG == 0 or msg is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     if msg[0] == c'\n' or msg[0] == c'\0':
 */
  __pyx_t_1 = (1 == 0);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_msg == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":508
 *     cdef int i, text_size, element_size
 *     if __DEBUG == 0 or msg is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     if msg[0] == c'\n' or msg[0] == c'\0':
 *         return
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":509
 *     if __DEBUG == 0 or msg is NULL:
 *         return
 *     if msg[0] == c'\n' or msg[0] == c'\0':             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_3 = ((__pyx_v_msg[0]) == '\n');
  if (!__pyx_t_3) {
    __pyx_t_1 = ((__pyx_v_msg[0]) == '\x00');
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":510
 *         return
 *     if msg[0] == c'\n' or msg[0] == c'\0':
 *         return             # <<<<<<<<<<<<<<
 * 
 *     cstd.va_start(args, msg)
 */
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":512
 *         return
 * 
 *     cstd.va_start(args, msg)             # <<<<<<<<<<<<<<
 *     if msg[0] == c'%' and msg[1] == c's':
 *         c_text = cstd.va_charptr(args)
 */
  va_start(__pyx_v_args, __pyx_v_msg);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":513
 * 
 *     cstd.va_start(args, msg)
 *     if msg[0] == c'%' and msg[1] == c's':             # <<<<<<<<<<<<<<
 *         c_text = cstd.va_charptr(args)
 *     else:
 */
  __pyx_t_2 = ((__pyx_v_msg[0]) == '%');
  if (__pyx_t_2) {
    __pyx_t_3 = ((__pyx_v_msg[1]) == 's');
    __pyx_t_1 = __pyx_t_3;
  } else {
    __pyx_t_1 = __pyx_t_2;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":514
 *     cstd.va_start(args, msg)
 *     if msg[0] == c'%' and msg[1] == c's':
 *         c_text = cstd.va_charptr(args)             # <<<<<<<<<<<<<<
 *     else:
 *         c_text = NULL
 */
    __pyx_v_c_text = va_charptr(__pyx_v_args);
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":516
 *         c_text = cstd.va_charptr(args)
 *     else:
 *         c_text = NULL             # <<<<<<<<<<<<<<
 *     if cstd.strstr(msg, 'file %s'):
 *         c_error.file = cstd.va_charptr(args)
 */
    __pyx_v_c_text = NULL;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":517
 *     else:
 *         c_text = NULL
 *     if cstd.strstr(msg, 'file %s'):             # <<<<<<<<<<<<<<
 *         c_error.file = cstd.va_charptr(args)
 *         if c_error.file and \
 */
  __pyx_t_1 = (strstr(__pyx_v_msg, __pyx_k_35) != 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":518
 *         c_text = NULL
 *     if cstd.strstr(msg, 'file %s'):
 *         c_error.file = cstd.va_charptr(args)             # <<<<<<<<<<<<<<
 *         if c_error.file and \
 *                 cstd.strncmp(c_error.file,
 */
    __pyx_v_c_error.file = va_charptr(__pyx_v_args);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":519
 *     if cstd.strstr(msg, 'file %s'):
 *         c_error.file = cstd.va_charptr(args)
 *         if c_error.file and \             # <<<<<<<<<<<<<<
 *                 cstd.strncmp(c_error.file,
 *                             'string://__STRING__XSLT', 23) == 0:
 */
    __pyx_t_1 = (__pyx_v_c_error.file != 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":520
 *         c_error.file = cstd.va_charptr(args)
 *         if c_error.file and \
 *                 cstd.strncmp(c_error.file,             # <<<<<<<<<<<<<<
 *                             'string://__STRING__XSLT', 23) == 0:
 *             c_error.file = '<xslt>'
 */
      __pyx_t_2 = (strncmp(__pyx_v_c_error.file, __pyx_k_36, 23) == 0);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":522
 *                 cstd.strncmp(c_error.file,
 *                             'string://__STRING__XSLT', 23) == 0:
 *             c_error.file = '<xslt>'             # <<<<<<<<<<<<<<
 *     else:
 *         c_error.file = NULL
 */
      __pyx_v_c_error.file = __pyx_k_37;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":524
 *             c_error.file = '<xslt>'
 *     else:
 *         c_error.file = NULL             # <<<<<<<<<<<<<<
 *     if cstd.strstr(msg, 'line %d'):
 *         c_error.line = cstd.va_int(args)
 */
    __pyx_v_c_error.file = NULL;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":525
 *     else:
 *         c_error.file = NULL
 *     if cstd.strstr(msg, 'line %d'):             # <<<<<<<<<<<<<<
 *         c_error.line = cstd.va_int(args)
 *     else:
 */
  __pyx_t_3 = (strstr(__pyx_v_msg, __pyx_k_38) != 0);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":526
 *         c_error.file = NULL
 *     if cstd.strstr(msg, 'line %d'):
 *         c_error.line = cstd.va_int(args)             # <<<<<<<<<<<<<<
 *     else:
 *         c_error.line = 0
 */
    __pyx_v_c_error.line = va_int(__pyx_v_args);
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":528
 *         c_error.line = cstd.va_int(args)
 *     else:
 *         c_error.line = 0             # <<<<<<<<<<<<<<
 *     if cstd.strstr(msg, 'element %s'):
 *         c_element = cstd.va_charptr(args)
 */
    __pyx_v_c_error.line = 0;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":529
 *     else:
 *         c_error.line = 0
 *     if cstd.strstr(msg, 'element %s'):             # <<<<<<<<<<<<<<
 *         c_element = cstd.va_charptr(args)
 *     else:
 */
  __pyx_t_3 = (strstr(__pyx_v_msg, __pyx_k_39) != 0);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":530
 *         c_error.line = 0
 *     if cstd.strstr(msg, 'element %s'):
 *         c_element = cstd.va_charptr(args)             # <<<<<<<<<<<<<<
 *     else:
 *         c_element = NULL
 */
    __pyx_v_c_element = va_charptr(__pyx_v_args);
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":532
 *         c_element = cstd.va_charptr(args)
 *     else:
 *         c_element = NULL             # <<<<<<<<<<<<<<
 *     cstd.va_end(args)
 * 
 */
    __pyx_v_c_element = NULL;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":533
 *     else:
 *         c_element = NULL
 *     cstd.va_end(args)             # <<<<<<<<<<<<<<
 * 
 *     c_message = NULL
 */
  va_end(__pyx_v_args);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":535
 *     cstd.va_end(args)
 * 
 *     c_message = NULL             # <<<<<<<<<<<<<<
 *     if c_text is NULL:
 *         if c_element is not NULL and \
 */
  __pyx_v_c_message = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":536
 * 
 *     c_message = NULL
 *     if c_text is NULL:             # <<<<<<<<<<<<<<
 *         if c_element is not NULL and \
 *                 cstd.strchr(msg, c'%') == cstd.strrchr(msg, c'%'):
 */
  __pyx_t_3 = (__pyx_v_c_text == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":537
 *     c_message = NULL
 *     if c_text is NULL:
 *         if c_element is not NULL and \             # <<<<<<<<<<<<<<
 *                 cstd.strchr(msg, c'%') == cstd.strrchr(msg, c'%'):
 *             # special case: a single occurrence of 'element %s'
 */
    __pyx_t_3 = (__pyx_v_c_element != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":538
 *     if c_text is NULL:
 *         if c_element is not NULL and \
 *                 cstd.strchr(msg, c'%') == cstd.strrchr(msg, c'%'):             # <<<<<<<<<<<<<<
 *             # special case: a single occurrence of 'element %s'
 *             text_size    = cstd.strlen(msg)
 */
      __pyx_t_1 = (strchr(__pyx_v_msg, '%') == strrchr(__pyx_v_msg, '%'));
      __pyx_t_2 = __pyx_t_1;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":540
 *                 cstd.strchr(msg, c'%') == cstd.strrchr(msg, c'%'):
 *             # special case: a single occurrence of 'element %s'
 *             text_size    = cstd.strlen(msg)             # <<<<<<<<<<<<<<
 *             element_size = cstd.strlen(c_element)
 *             c_message = <char*>cstd.malloc(
 */
      __pyx_v_text_size = strlen(__pyx_v_msg);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":541
 *             # special case: a single occurrence of 'element %s'
 *             text_size    = cstd.strlen(msg)
 *             element_size = cstd.strlen(c_element)             # <<<<<<<<<<<<<<
 *             c_message = <char*>cstd.malloc(
 *                 (text_size + element_size + 1) * sizeof(char))
 */
      __pyx_v_element_size = strlen(__pyx_v_c_element);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":543
 *             element_size = cstd.strlen(c_element)
 *             c_message = <char*>cstd.malloc(
 *                 (text_size + element_size + 1) * sizeof(char))             # <<<<<<<<<<<<<<
 *             cstd.sprintf(c_message, msg, c_element)
 *             c_error.message = c_message
 */
      __pyx_v_c_message = ((char *)malloc((((__pyx_v_text_size + __pyx_v_element_size) + 1) * (sizeof(char)))));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":544
 *             c_message = <char*>cstd.malloc(
 *                 (text_size + element_size + 1) * sizeof(char))
 *             cstd.sprintf(c_message, msg, c_element)             # <<<<<<<<<<<<<<
 *             c_error.message = c_message
 *         else:
 */
      sprintf(__pyx_v_c_message, __pyx_v_msg, __pyx_v_c_element);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":545
 *                 (text_size + element_size + 1) * sizeof(char))
 *             cstd.sprintf(c_message, msg, c_element)
 *             c_error.message = c_message             # <<<<<<<<<<<<<<
 *         else:
 *             c_error.message = ''
 */
      __pyx_v_c_error.message = __pyx_v_c_message;
      goto __pyx_L11;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":547
 *             c_error.message = c_message
 *         else:
 *             c_error.message = ''             # <<<<<<<<<<<<<<
 *     elif c_element is NULL:
 *         c_error.message = c_text
 */
      __pyx_v_c_error.message = __pyx_k_14;
    }
    __pyx_L11:;
    goto __pyx_L10;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":548
 *         else:
 *             c_error.message = ''
 *     elif c_element is NULL:             # <<<<<<<<<<<<<<
 *         c_error.message = c_text
 *     else:
 */
  __pyx_t_2 = (__pyx_v_c_element == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":549
 *             c_error.message = ''
 *     elif c_element is NULL:
 *         c_error.message = c_text             # <<<<<<<<<<<<<<
 *     else:
 *         text_size    = cstd.strlen(c_text)
 */
    __pyx_v_c_error.message = __pyx_v_c_text;
    goto __pyx_L10;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":551
 *         c_error.message = c_text
 *     else:
 *         text_size    = cstd.strlen(c_text)             # <<<<<<<<<<<<<<
 *         element_size = cstd.strlen(c_element)
 *         c_message = <char*>cstd.malloc(
 */
    __pyx_v_text_size = strlen(__pyx_v_c_text);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":552
 *     else:
 *         text_size    = cstd.strlen(c_text)
 *         element_size = cstd.strlen(c_element)             # <<<<<<<<<<<<<<
 *         c_message = <char*>cstd.malloc(
 *             (text_size + 12 + element_size + 1) * sizeof(char))
 */
    __pyx_v_element_size = strlen(__pyx_v_c_element);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":554
 *         element_size = cstd.strlen(c_element)
 *         c_message = <char*>cstd.malloc(
 *             (text_size + 12 + element_size + 1) * sizeof(char))             # <<<<<<<<<<<<<<
 *         cstd.sprintf(c_message, "%s, element '%s'", c_text, c_element)
 *         c_error.message = c_message
 */
    __pyx_v_c_message = ((char *)malloc(((((__pyx_v_text_size + 12) + __pyx_v_element_size) + 1) * (sizeof(char)))));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":555
 *         c_message = <char*>cstd.malloc(
 *             (text_size + 12 + element_size + 1) * sizeof(char))
 *         cstd.sprintf(c_message, "%s, element '%s'", c_text, c_element)             # <<<<<<<<<<<<<<
 *         c_error.message = c_message
 * 
 */
    sprintf(__pyx_v_c_message, __pyx_k_40, __pyx_v_c_text, __pyx_v_c_element);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":556
 *             (text_size + 12 + element_size + 1) * sizeof(char))
 *         cstd.sprintf(c_message, "%s, element '%s'", c_text, c_element)
 *         c_error.message = c_message             # <<<<<<<<<<<<<<
 * 
 *     c_error.domain = xmlerror.XML_FROM_XSLT
 */
    __pyx_v_c_error.message = __pyx_v_c_message;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":558
 *         c_error.message = c_message
 * 
 *     c_error.domain = xmlerror.XML_FROM_XSLT             # <<<<<<<<<<<<<<
 *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
 *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
 */
  __pyx_v_c_error.domain = XML_FROM_XSLT;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":559
 * 
 *     c_error.domain = xmlerror.XML_FROM_XSLT
 *     c_error.code   = xmlerror.XML_ERR_OK    # what else?             # <<<<<<<<<<<<<<
 *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
 *     c_error.int2   = 0
 */
  __pyx_v_c_error.code = XML_ERR_OK;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":560
 *     c_error.domain = xmlerror.XML_FROM_XSLT
 *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
 *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?             # <<<<<<<<<<<<<<
 *     c_error.int2   = 0
 * 
 */
  __pyx_v_c_error.level = XML_ERR_ERROR;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":561
 *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
 *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
 *     c_error.int2   = 0             # <<<<<<<<<<<<<<
 * 
 *     _forwardError(c_log_handler, &c_error)
 */
  __pyx_v_c_error.int2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":563
 *     c_error.int2   = 0
 * 
 *     _forwardError(c_log_handler, &c_error)             # <<<<<<<<<<<<<<
 * 
 *     if c_message is not NULL:
 */
  __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, (&__pyx_v_c_error));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":565
 *     _forwardError(c_log_handler, &c_error)
 * 
 *     if c_message is not NULL:             # <<<<<<<<<<<<<<
 *         cstd.free(c_message)
 * 
 */
  __pyx_t_2 = (__pyx_v_c_message != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":566
 * 
 *     if c_message is not NULL:
 *         cstd.free(c_message)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
    free(__pyx_v_c_message);
    goto __pyx_L12;
  }
  __pyx_L12:;

  __pyx_L0:;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":572
 * ################################################################################
 * 
 * cdef void __initErrorConstants():             # <<<<<<<<<<<<<<
 *     u"Called at setup time to parse the constants and build the classes below."
 *     cdef dict reverse_dict
 */

static  void __pyx_f_4lxml_5etree___initErrorConstants(void) {
  PyObject *__pyx_v_reverse_dict;
  PyObject *__pyx_v_find_constants;
  PyObject *__pyx_v_const_defs;
  PyObject *__pyx_v_cls;
  PyObject *__pyx_v_constant_tuple;
  PyObject *__pyx_v_constants;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_value;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("__initErrorConstants");
  __pyx_v_reverse_dict = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_find_constants = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_const_defs = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_cls = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_constant_tuple = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_constants = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":575
 *     u"Called at setup time to parse the constants and build the classes below."
 *     cdef dict reverse_dict
 *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall             # <<<<<<<<<<<<<<
 *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
 *                   (ErrorDomains,         __ERROR_DOMAINS),
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_41));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_41));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_41));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__findall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_v_find_constants);
  __pyx_v_find_constants = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":576
 *     cdef dict reverse_dict
 *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall
 *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),             # <<<<<<<<<<<<<<
 *                   (ErrorDomains,         __ERROR_DOMAINS),
 *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorLevels); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_4lxml_5etree___ERROR_LEVELS);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":577
 *     find_constants = re.compile(ur"\s*([a-zA-Z0-9_]+)\s*=\s*([0-9]+)").findall
 *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
 *                   (ErrorDomains,         __ERROR_DOMAINS),             # <<<<<<<<<<<<<<
 *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
 *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorDomains); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_4lxml_5etree___ERROR_DOMAINS);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":578
 *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
 *                   (ErrorDomains,         __ERROR_DOMAINS),
 *                   (ErrorTypes,           __PARSER_ERROR_TYPES),             # <<<<<<<<<<<<<<
 *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
 *     for cls, constant_tuple in const_defs:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":579
 *                   (ErrorDomains,         __ERROR_DOMAINS),
 *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
 *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))             # <<<<<<<<<<<<<<
 *     for cls, constant_tuple in const_defs:
 *         reverse_dict = {}
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGErrorTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_3 = 0;
  __pyx_t_1 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_v_const_defs);
  __pyx_v_const_defs = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":580
 *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
 *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
 *     for cls, constant_tuple in const_defs:             # <<<<<<<<<<<<<<
 *         reverse_dict = {}
 *         cls._names   = reverse_dict
 */
  if (PyList_CheckExact(__pyx_v_const_defs) || PyTuple_CheckExact(__pyx_v_const_defs)) {
    __pyx_t_6 = 0; __pyx_t_2 = __pyx_v_const_defs; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_const_defs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++;
    } else {
      __pyx_t_5 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_5) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (PyTuple_CheckExact(__pyx_t_5) && likely(PyTuple_GET_SIZE(__pyx_t_5) == 2)) {
      PyObject* tuple = __pyx_t_5;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_1 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_cls);
      __pyx_v_cls = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_constant_tuple);
      __pyx_v_constant_tuple = __pyx_t_1;
      __pyx_t_1 = 0;
    } else {
      __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_3, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_3, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_EndUnpack(__pyx_t_3) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_cls);
      __pyx_v_cls = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_constant_tuple);
      __pyx_v_constant_tuple = __pyx_t_1;
      __pyx_t_1 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":581
 *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
 *     for cls, constant_tuple in const_defs:
 *         reverse_dict = {}             # <<<<<<<<<<<<<<
 *         cls._names   = reverse_dict
 *         cls._getName = reverse_dict.get
 */
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __Pyx_DECREF(((PyObject *)__pyx_v_reverse_dict));
    __pyx_v_reverse_dict = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":582
 *     for cls, constant_tuple in const_defs:
 *         reverse_dict = {}
 *         cls._names   = reverse_dict             # <<<<<<<<<<<<<<
 *         cls._getName = reverse_dict.get
 *         for constants in constant_tuple:
 */
    if (PyObject_SetAttr(__pyx_v_cls, __pyx_n_s___names, ((PyObject *)__pyx_v_reverse_dict)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":583
 *         reverse_dict = {}
 *         cls._names   = reverse_dict
 *         cls._getName = reverse_dict.get             # <<<<<<<<<<<<<<
 *         for constants in constant_tuple:
 *             #print len(constants) + 1
 */
    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_reverse_dict), __pyx_n_s__get); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    if (PyObject_SetAttr(__pyx_v_cls, __pyx_n_s___getName, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":584
 *         cls._names   = reverse_dict
 *         cls._getName = reverse_dict.get
 *         for constants in constant_tuple:             # <<<<<<<<<<<<<<
 *             #print len(constants) + 1
 *             for name, value in find_constants(constants):
 */
    if (PyList_CheckExact(__pyx_v_constant_tuple) || PyTuple_CheckExact(__pyx_v_constant_tuple)) {
      __pyx_t_7 = 0; __pyx_t_5 = __pyx_v_constant_tuple; __Pyx_INCREF(__pyx_t_5);
    } else {
      __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_constant_tuple); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++;
      } else {
        __pyx_t_1 = PyIter_Next(__pyx_t_5);
        if (!__pyx_t_1) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_v_constants);
      __pyx_v_constants = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":586
 *         for constants in constant_tuple:
 *             #print len(constants) + 1
 *             for name, value in find_constants(constants):             # <<<<<<<<<<<<<<
 *                 value = int(value)
 *                 python.PyObject_SetAttr(cls, name, value)
 */
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_constants);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_constants);
      __Pyx_GIVEREF(__pyx_v_constants);
      __pyx_t_4 = PyObject_Call(__pyx_v_find_constants, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
        __pyx_t_8 = 0; __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1);
      } else {
        __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
          if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++;
        } else {
          __pyx_t_4 = PyIter_Next(__pyx_t_1);
          if (!__pyx_t_4) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
          PyObject* tuple = __pyx_t_4;
          __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
          __pyx_t_9 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_v_name);
          __pyx_v_name = __pyx_t_3;
          __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_v_value);
          __pyx_v_value = __pyx_t_9;
          __pyx_t_9 = 0;
        } else {
          __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_10, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_10, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_9);
          if (__Pyx_EndUnpack(__pyx_t_10) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_v_name);
          __pyx_v_name = __pyx_t_3;
          __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_v_value);
          __pyx_v_value = __pyx_t_9;
          __pyx_t_9 = 0;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":587
 *             #print len(constants) + 1
 *             for name, value in find_constants(constants):
 *                 value = int(value)             # <<<<<<<<<<<<<<
 *                 python.PyObject_SetAttr(cls, name, value)
 *                 reverse_dict[value] = name
 */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_value);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_value);
        __Pyx_GIVEREF(__pyx_v_value);
        __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_value);
        __pyx_v_value = __pyx_t_9;
        __pyx_t_9 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":588
 *             for name, value in find_constants(constants):
 *                 value = int(value)
 *                 python.PyObject_SetAttr(cls, name, value)             # <<<<<<<<<<<<<<
 *                 reverse_dict[value] = name
 * 
 */
        PyObject_SetAttr(__pyx_v_cls, __pyx_v_name, __pyx_v_value);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":589
 *                 value = int(value)
 *                 python.PyObject_SetAttr(cls, name, value)
 *                 reverse_dict[value] = name             # <<<<<<<<<<<<<<
 * 
 * 
 */
        if (PyDict_SetItem(((PyObject *)__pyx_v_reverse_dict), __pyx_v_value, __pyx_v_name) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("lxml.etree.__initErrorConstants");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_reverse_dict);
  __Pyx_DECREF(__pyx_v_find_constants);
  __Pyx_DECREF(__pyx_v_const_defs);
  __Pyx_DECREF(__pyx_v_cls);
  __Pyx_DECREF(__pyx_v_constant_tuple);
  __Pyx_DECREF(__pyx_v_constants);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":262
 *     cdef _BaseParser _parser
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         # if there are no more references to the document, it is safe
 *         # to clean the whole thing up, as all nodes have a reference to
 */

static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_9_Document___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":270
 *         #print <long>self._c_doc, self._c_doc.dict is __GLOBAL_PARSER_CONTEXT._c_dict
 *         #print <long>self._c_doc, canDeallocateChildNodes(<xmlNode*>self._c_doc)
 *         tree.xmlFreeDoc(self._c_doc)             # <<<<<<<<<<<<<<
 *         #_deallocDocument(self._c_doc)
 * 
 */
  xmlFreeDoc(((struct LxmlDocument *)__pyx_v_self)->_c_doc);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":273
 *         #_deallocDocument(self._c_doc)
 * 
 *     cdef getroot(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         c_node = tree.xmlDocGetRootElement(self._c_doc)
 */

static  PyObject *__pyx_f_4lxml_5etree_9_Document_getroot(struct LxmlDocument *__pyx_v_self) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("getroot");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":275
 *     cdef getroot(self):
 *         cdef xmlNode* c_node
 *         c_node = tree.xmlDocGetRootElement(self._c_doc)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
  __pyx_v_c_node = xmlDocGetRootElement(__pyx_v_self->_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":276
 *         cdef xmlNode* c_node
 *         c_node = tree.xmlDocGetRootElement(self._c_doc)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(self, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":277
 *         c_node = tree.xmlDocGetRootElement(self._c_doc)
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(self, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":278
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(self, c_node)             # <<<<<<<<<<<<<<
 * 
 *     cdef bint hasdoctype(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_self, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Document.getroot");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":280
 *         return _elementFactory(self, c_node)
 * 
 *     cdef bint hasdoctype(self):             # <<<<<<<<<<<<<<
 *         return self._c_doc.intSubset is not NULL
 * 
 */

static  int __pyx_f_4lxml_5etree_9_Document_hasdoctype(struct LxmlDocument *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("hasdoctype");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":281
 * 
 *     cdef bint hasdoctype(self):
 *         return self._c_doc.intSubset is not NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef getdoctype(self):
 */
  __pyx_r = (__pyx_v_self->_c_doc->intSubset != NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":283
 *         return self._c_doc.intSubset is not NULL
 * 
 *     cdef getdoctype(self):             # <<<<<<<<<<<<<<
 *         cdef tree.xmlDtd* c_dtd
 *         cdef xmlNode* c_root_node
 */

static  PyObject *__pyx_f_4lxml_5etree_9_Document_getdoctype(struct LxmlDocument *__pyx_v_self) {
  xmlDtd *__pyx_v_c_dtd;
  xmlNode *__pyx_v_c_root_node;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_sys_url;
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("getdoctype");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_sys_url = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":286
 *         cdef tree.xmlDtd* c_dtd
 *         cdef xmlNode* c_root_node
 *         public_id = None             # <<<<<<<<<<<<<<
 *         sys_url   = None
 *         c_dtd = self._c_doc.intSubset
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_public_id);
  __pyx_v_public_id = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":287
 *         cdef xmlNode* c_root_node
 *         public_id = None
 *         sys_url   = None             # <<<<<<<<<<<<<<
 *         c_dtd = self._c_doc.intSubset
 *         if c_dtd is not NULL:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_sys_url);
  __pyx_v_sys_url = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":288
 *         public_id = None
 *         sys_url   = None
 *         c_dtd = self._c_doc.intSubset             # <<<<<<<<<<<<<<
 *         if c_dtd is not NULL:
 *             if c_dtd.ExternalID is not NULL:
 */
  __pyx_v_c_dtd = __pyx_v_self->_c_doc->intSubset;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":289
 *         sys_url   = None
 *         c_dtd = self._c_doc.intSubset
 *         if c_dtd is not NULL:             # <<<<<<<<<<<<<<
 *             if c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)
 */
  __pyx_t_1 = (__pyx_v_c_dtd != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":290
 *         c_dtd = self._c_doc.intSubset
 *         if c_dtd is not NULL:
 *             if c_dtd.ExternalID is not NULL:             # <<<<<<<<<<<<<<
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if c_dtd.SystemID is not NULL:
 */
    __pyx_t_1 = (__pyx_v_c_dtd->ExternalID != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":291
 *         if c_dtd is not NULL:
 *             if c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)             # <<<<<<<<<<<<<<
 *             if c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->ExternalID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_public_id);
      __pyx_v_public_id = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":292
 *             if c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if c_dtd.SystemID is not NULL:             # <<<<<<<<<<<<<<
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_dtd = self._c_doc.extSubset
 */
    __pyx_t_1 = (__pyx_v_c_dtd->SystemID != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":293
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)             # <<<<<<<<<<<<<<
 *         c_dtd = self._c_doc.extSubset
 *         if c_dtd is not NULL:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->SystemID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_sys_url);
      __pyx_v_sys_url = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":294
 *             if c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_dtd = self._c_doc.extSubset             # <<<<<<<<<<<<<<
 *         if c_dtd is not NULL:
 *             if not public_id and c_dtd.ExternalID is not NULL:
 */
  __pyx_v_c_dtd = __pyx_v_self->_c_doc->extSubset;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":295
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_dtd = self._c_doc.extSubset
 *         if c_dtd is not NULL:             # <<<<<<<<<<<<<<
 *             if not public_id and c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)
 */
  __pyx_t_1 = (__pyx_v_c_dtd != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":296
 *         c_dtd = self._c_doc.extSubset
 *         if c_dtd is not NULL:
 *             if not public_id and c_dtd.ExternalID is not NULL:             # <<<<<<<<<<<<<<
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if not sys_url and c_dtd.SystemID is not NULL:
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (!__pyx_t_1);
    if (__pyx_t_3) {
      __pyx_t_1 = (__pyx_v_c_dtd->ExternalID != NULL);
      __pyx_t_4 = __pyx_t_1;
    } else {
      __pyx_t_4 = __pyx_t_3;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":297
 *         if c_dtd is not NULL:
 *             if not public_id and c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)             # <<<<<<<<<<<<<<
 *             if not sys_url and c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->ExternalID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_public_id);
      __pyx_v_public_id = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":298
 *             if not public_id and c_dtd.ExternalID is not NULL:
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if not sys_url and c_dtd.SystemID is not NULL:             # <<<<<<<<<<<<<<
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_sys_url); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (!__pyx_t_4);
    if (__pyx_t_3) {
      __pyx_t_4 = (__pyx_v_c_dtd->SystemID != NULL);
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":299
 *                 public_id = funicode(c_dtd.ExternalID)
 *             if not sys_url and c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)             # <<<<<<<<<<<<<<
 *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
 *         if c_root_node is NULL:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_dtd->SystemID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_sys_url);
      __pyx_v_sys_url = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":300
 *             if not sys_url and c_dtd.SystemID is not NULL:
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)             # <<<<<<<<<<<<<<
 *         if c_root_node is NULL:
 *             root_name = None
 */
  __pyx_v_c_root_node = xmlDocGetRootElement(__pyx_v_self->_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":301
 *                 sys_url = funicode(c_dtd.SystemID)
 *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
 *         if c_root_node is NULL:             # <<<<<<<<<<<<<<
 *             root_name = None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_c_root_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":302
 *         c_root_node = tree.xmlDocGetRootElement(self._c_doc)
 *         if c_root_node is NULL:
 *             root_name = None             # <<<<<<<<<<<<<<
 *         else:
 *             root_name = funicode(c_root_node.name)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = Py_None;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":304
 *             root_name = None
 *         else:
 *             root_name = funicode(c_root_node.name)             # <<<<<<<<<<<<<<
 *         return (root_name, public_id, sys_url)
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_root_node->name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":305
 *         else:
 *             root_name = funicode(c_root_node.name)
 *         return (root_name, public_id, sys_url)             # <<<<<<<<<<<<<<
 * 
 *     cdef getxmlinfo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_root_name);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_root_name);
  __Pyx_GIVEREF(__pyx_v_root_name);
  __Pyx_INCREF(__pyx_v_public_id);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_public_id);
  __Pyx_GIVEREF(__pyx_v_public_id);
  __Pyx_INCREF(__pyx_v_sys_url);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_sys_url);
  __Pyx_GIVEREF(__pyx_v_sys_url);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Document.getdoctype");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_sys_url);
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":307
 *         return (root_name, public_id, sys_url)
 * 
 *     cdef getxmlinfo(self):             # <<<<<<<<<<<<<<
 *         cdef xmlDoc* c_doc
 *         c_doc = self._c_doc
 */

static  PyObject *__pyx_f_4lxml_5etree_9_Document_getxmlinfo(struct LxmlDocument *__pyx_v_self) {
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_v_version;
  PyObject *__pyx_v_encoding;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("getxmlinfo");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_version = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_encoding = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":309
 *     cdef getxmlinfo(self):
 *         cdef xmlDoc* c_doc
 *         c_doc = self._c_doc             # <<<<<<<<<<<<<<
 *         if c_doc.version is NULL:
 *             version = None
 */
  __pyx_v_c_doc = __pyx_v_self->_c_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":310
 *         cdef xmlDoc* c_doc
 *         c_doc = self._c_doc
 *         if c_doc.version is NULL:             # <<<<<<<<<<<<<<
 *             version = None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_c_doc->version == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":311
 *         c_doc = self._c_doc
 *         if c_doc.version is NULL:
 *             version = None             # <<<<<<<<<<<<<<
 *         else:
 *             version = funicode(c_doc.version)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_version);
    __pyx_v_version = Py_None;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":313
 *             version = None
 *         else:
 *             version = funicode(c_doc.version)             # <<<<<<<<<<<<<<
 *         if c_doc.encoding is NULL:
 *             encoding = None
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_doc->version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_version);
    __pyx_v_version = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":314
 *         else:
 *             version = funicode(c_doc.version)
 *         if c_doc.encoding is NULL:             # <<<<<<<<<<<<<<
 *             encoding = None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_c_doc->encoding == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":315
 *             version = funicode(c_doc.version)
 *         if c_doc.encoding is NULL:
 *             encoding = None             # <<<<<<<<<<<<<<
 *         else:
 *             encoding = funicode(c_doc.encoding)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = Py_None;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":317
 *             encoding = None
 *         else:
 *             encoding = funicode(c_doc.encoding)             # <<<<<<<<<<<<<<
 *         return (version, encoding)
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_doc->encoding); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":318
 *         else:
 *             encoding = funicode(c_doc.encoding)
 *         return (version, encoding)             # <<<<<<<<<<<<<<
 * 
 *     cdef isstandalone(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_version);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_version);
  __Pyx_GIVEREF(__pyx_v_version);
  __Pyx_INCREF(__pyx_v_encoding);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_encoding);
  __Pyx_GIVEREF(__pyx_v_encoding);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Document.getxmlinfo");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_version);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":320
 *         return (version, encoding)
 * 
 *     cdef isstandalone(self):             # <<<<<<<<<<<<<<
 *         if self._c_doc.standalone == -1:
 *             return None
 */

static  PyObject *__pyx_f_4lxml_5etree_9_Document_isstandalone(struct LxmlDocument *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("isstandalone");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":321
 * 
 *     cdef isstandalone(self):
 *         if self._c_doc.standalone == -1:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_c_doc->standalone == -1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":322
 *     cdef isstandalone(self):
 *         if self._c_doc.standalone == -1:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             return <bint>(self._c_doc.standalone == 1)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":324
 *             return None
 *         else:
 *             return <bint>(self._c_doc.standalone == 1)             # <<<<<<<<<<<<<<
 * 
 *     cdef buildNewPrefix(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(((int)(__pyx_v_self->_c_doc->standalone == 1))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Document.isstandalone");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":326
 *             return <bint>(self._c_doc.standalone == 1)
 * 
 *     cdef buildNewPrefix(self):             # <<<<<<<<<<<<<<
 *         if self._ns_counter < python.PyTuple_GET_SIZE(_PREFIX_CACHE):
 *             ns = python.PyTuple_GET_ITEM(_PREFIX_CACHE, self._ns_counter)
 */

static  PyObject *__pyx_f_4lxml_5etree_9_Document_buildNewPrefix(struct LxmlDocument *__pyx_v_self) {
  PyObject *__pyx_v_ns;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("buildNewPrefix");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":327
 * 
 *     cdef buildNewPrefix(self):
 *         if self._ns_counter < python.PyTuple_GET_SIZE(_PREFIX_CACHE):             # <<<<<<<<<<<<<<
 *             ns = python.PyTuple_GET_ITEM(_PREFIX_CACHE, self._ns_counter)
 *             python.Py_INCREF(ns)
 */
  __pyx_t_1 = (__pyx_v_self->_ns_counter < PyTuple_GET_SIZE(__pyx_v_4lxml_5etree__PREFIX_CACHE));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":328
 *     cdef buildNewPrefix(self):
 *         if self._ns_counter < python.PyTuple_GET_SIZE(_PREFIX_CACHE):
 *             ns = python.PyTuple_GET_ITEM(_PREFIX_CACHE, self._ns_counter)             # <<<<<<<<<<<<<<
 *             python.Py_INCREF(ns)
 *         else:
 */
    __pyx_t_2 = PyTuple_GET_ITEM(__pyx_v_4lxml_5etree__PREFIX_CACHE, __pyx_v_self->_ns_counter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":329
 *         if self._ns_counter < python.PyTuple_GET_SIZE(_PREFIX_CACHE):
 *             ns = python.PyTuple_GET_ITEM(_PREFIX_CACHE, self._ns_counter)
 *             python.Py_INCREF(ns)             # <<<<<<<<<<<<<<
 *         else:
 *             ns = python.PyString_FromFormat("ns%d", self._ns_counter)
 */
    Py_INCREF(__pyx_v_ns);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":331
 *             python.Py_INCREF(ns)
 *         else:
 *             ns = python.PyString_FromFormat("ns%d", self._ns_counter)             # <<<<<<<<<<<<<<
 *         if self._prefix_tail is not None:
 *             ns += self._prefix_tail
 */
    __pyx_t_2 = PyString_FromFormat(__pyx_k_42, __pyx_v_self->_ns_counter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":332
 *         else:
 *             ns = python.PyString_FromFormat("ns%d", self._ns_counter)
 *         if self._prefix_tail is not None:             # <<<<<<<<<<<<<<
 *             ns += self._prefix_tail
 *         self._ns_counter += 1
 */
  __pyx_t_1 = (__pyx_v_self->_prefix_tail != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":333
 *             ns = python.PyString_FromFormat("ns%d", self._ns_counter)
 *         if self._prefix_tail is not None:
 *             ns += self._prefix_tail             # <<<<<<<<<<<<<<
 *         self._ns_counter += 1
 *         if self._ns_counter < 0:
 */
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_ns, __pyx_v_self->_prefix_tail); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":334
 *         if self._prefix_tail is not None:
 *             ns += self._prefix_tail
 *         self._ns_counter += 1             # <<<<<<<<<<<<<<
 *         if self._ns_counter < 0:
 *             # overflow!
 */
  __pyx_v_self->_ns_counter += 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":335
 *             ns += self._prefix_tail
 *         self._ns_counter += 1
 *         if self._ns_counter < 0:             # <<<<<<<<<<<<<<
 *             # overflow!
 *             self._ns_counter = 0
 */
  __pyx_t_1 = (__pyx_v_self->_ns_counter < 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":337
 *         if self._ns_counter < 0:
 *             # overflow!
 *             self._ns_counter = 0             # <<<<<<<<<<<<<<
 *             if self._prefix_tail is None:
 *                 self._prefix_tail = "A"
 */
    __pyx_v_self->_ns_counter = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":338
 *             # overflow!
 *             self._ns_counter = 0
 *             if self._prefix_tail is None:             # <<<<<<<<<<<<<<
 *                 self._prefix_tail = "A"
 *             else:
 */
    __pyx_t_1 = (__pyx_v_self->_prefix_tail == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":339
 *             self._ns_counter = 0
 *             if self._prefix_tail is None:
 *                 self._prefix_tail = "A"             # <<<<<<<<<<<<<<
 *             else:
 *                 self._prefix_tail += "A"
 */
      __Pyx_INCREF(((PyObject *)__pyx_n_s__A));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__A));
      __Pyx_GOTREF(__pyx_v_self->_prefix_tail);
      __Pyx_DECREF(__pyx_v_self->_prefix_tail);
      __pyx_v_self->_prefix_tail = ((PyObject *)__pyx_n_s__A);
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":341
 *                 self._prefix_tail = "A"
 *             else:
 *                 self._prefix_tail += "A"             # <<<<<<<<<<<<<<
 *         return ns
 * 
 */
      __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_self->_prefix_tail, ((PyObject *)__pyx_n_s__A)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_self->_prefix_tail);
      __Pyx_DECREF(__pyx_v_self->_prefix_tail);
      __pyx_v_self->_prefix_tail = __pyx_t_2;
      __pyx_t_2 = 0;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":342
 *             else:
 *                 self._prefix_tail += "A"
 *         return ns             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ns);
  __pyx_r = __pyx_v_ns;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Document.buildNewPrefix");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":344
 *         return ns
 * 
 *     cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                                    char* c_href, char* c_prefix) except NULL:
 *         u"""Get or create namespace structure for a node.  Reuses the prefix if
 */

static  xmlNs *__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(struct LxmlDocument *__pyx_v_self, xmlNode *__pyx_v_c_node, char *__pyx_v_c_href, char *__pyx_v_c_prefix) {
  xmlNs *__pyx_v_c_ns;
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_prefix;
  xmlNs *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_findOrBuildNodeNs");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":352
 *         cdef xmlNs* c_doc_ns
 *         cdef python.PyObject* dict_result
 *         if c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *             assert c_node.type == tree.XML_ELEMENT_NODE, \
 *                 u"invalid node type %d, expected %d" % (
 */
  __pyx_t_1 = (__pyx_v_c_node->type != XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":353
 *         cdef python.PyObject* dict_result
 *         if c_node.type != tree.XML_ELEMENT_NODE:
 *             assert c_node.type == tree.XML_ELEMENT_NODE, \             # <<<<<<<<<<<<<<
 *                 u"invalid node type %d, expected %d" % (
 *                 c_node.type, tree.XML_ELEMENT_NODE)
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!(__pyx_v_c_node->type == XML_ELEMENT_NODE))) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":355
 *             assert c_node.type == tree.XML_ELEMENT_NODE, \
 *                 u"invalid node type %d, expected %d" % (
 *                 c_node.type, tree.XML_ELEMENT_NODE)             # <<<<<<<<<<<<<<
 *         # look for existing ns
 *         c_ns = tree.xmlSearchNsByHref(self._c_doc, c_node, c_href)
 */
      __pyx_t_2 = PyInt_FromLong(__pyx_v_c_node->type); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyInt_FromLong(XML_ELEMENT_NODE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_2 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_43), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":357
 *                 c_node.type, tree.XML_ELEMENT_NODE)
 *         # look for existing ns
 *         c_ns = tree.xmlSearchNsByHref(self._c_doc, c_node, c_href)             # <<<<<<<<<<<<<<
 *         if c_ns is not NULL:
 *             return c_ns
 */
  __pyx_v_c_ns = xmlSearchNsByHref(__pyx_v_self->_c_doc, __pyx_v_c_node, __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":358
 *         # look for existing ns
 *         c_ns = tree.xmlSearchNsByHref(self._c_doc, c_node, c_href)
 *         if c_ns is not NULL:             # <<<<<<<<<<<<<<
 *             return c_ns
 * 
 */
  __pyx_t_1 = (__pyx_v_c_ns != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":359
 *         c_ns = tree.xmlSearchNsByHref(self._c_doc, c_node, c_href)
 *         if c_ns is not NULL:
 *             return c_ns             # <<<<<<<<<<<<<<
 * 
 *         if c_prefix is NULL:
 */
    __pyx_r = __pyx_v_c_ns;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":361
 *             return c_ns
 * 
 *         if c_prefix is NULL:             # <<<<<<<<<<<<<<
 *             dict_result = python.PyDict_GetItem(
 *                 _DEFAULT_NAMESPACE_PREFIXES, c_href)
 */
  __pyx_t_1 = (__pyx_v_c_prefix == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":363
 *         if c_prefix is NULL:
 *             dict_result = python.PyDict_GetItem(
 *                 _DEFAULT_NAMESPACE_PREFIXES, c_href)             # <<<<<<<<<<<<<<
 *             if dict_result is not NULL:
 *                 prefix = <object>dict_result
 */
    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_c_href); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_v_dict_result = PyDict_GetItem(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES, ((PyObject *)__pyx_t_3));
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":364
 *             dict_result = python.PyDict_GetItem(
 *                 _DEFAULT_NAMESPACE_PREFIXES, c_href)
 *             if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *                 prefix = <object>dict_result
 *             else:
 */
    __pyx_t_1 = (__pyx_v_dict_result != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":365
 *                 _DEFAULT_NAMESPACE_PREFIXES, c_href)
 *             if dict_result is not NULL:
 *                 prefix = <object>dict_result             # <<<<<<<<<<<<<<
 *             else:
 *                 prefix = self.buildNewPrefix()
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = ((PyObject *)__pyx_v_dict_result);
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":367
 *                 prefix = <object>dict_result
 *             else:
 *                 prefix = self.buildNewPrefix()             # <<<<<<<<<<<<<<
 *             c_prefix = _cstr(prefix)
 * 
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->__pyx_vtab)->buildNewPrefix(__pyx_v_self); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":368
 *             else:
 *                 prefix = self.buildNewPrefix()
 *             c_prefix = _cstr(prefix)             # <<<<<<<<<<<<<<
 * 
 *         # make sure the prefix is not in use already
 */
    __pyx_v_c_prefix = PyString_AS_STRING(__pyx_v_prefix);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":371
 * 
 *         # make sure the prefix is not in use already
 *         while tree.xmlSearchNs(self._c_doc, c_node, c_prefix) is not NULL:             # <<<<<<<<<<<<<<
 *             prefix = self.buildNewPrefix()
 *             c_prefix = _cstr(prefix)
 */
  while (1) {
    __pyx_t_1 = (xmlSearchNs(__pyx_v_self->_c_doc, __pyx_v_c_node, __pyx_v_c_prefix) != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":372
 *         # make sure the prefix is not in use already
 *         while tree.xmlSearchNs(self._c_doc, c_node, c_prefix) is not NULL:
 *             prefix = self.buildNewPrefix()             # <<<<<<<<<<<<<<
 *             c_prefix = _cstr(prefix)
 * 
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->__pyx_vtab)->buildNewPrefix(__pyx_v_self); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_prefix);
    __pyx_v_prefix = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":373
 *         while tree.xmlSearchNs(self._c_doc, c_node, c_prefix) is not NULL:
 *             prefix = self.buildNewPrefix()
 *             c_prefix = _cstr(prefix)             # <<<<<<<<<<<<<<
 * 
 *         c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 */
    __pyx_v_c_prefix = PyString_AS_STRING(__pyx_v_prefix);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":375
 *             c_prefix = _cstr(prefix)
 * 
 *         c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)             # <<<<<<<<<<<<<<
 *         if c_ns is NULL:
 *             python.PyErr_NoMemory()
 */
  __pyx_v_c_ns = xmlNewNs(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_prefix);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":376
 * 
 *         c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 *         if c_ns is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         return c_ns
 */
  __pyx_t_1 = (__pyx_v_c_ns == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":377
 *         c_ns = tree.xmlNewNs(c_node, c_href, c_prefix)
 *         if c_ns is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         return c_ns
 * 
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":378
 *         if c_ns is NULL:
 *             python.PyErr_NoMemory()
 *         return c_ns             # <<<<<<<<<<<<<<
 * 
 *     cdef int _setNodeNs(self, xmlNode* c_node, char* href) except -1:
 */
  __pyx_r = __pyx_v_c_ns;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Document._findOrBuildNodeNs");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":380
 *         return c_ns
 * 
 *     cdef int _setNodeNs(self, xmlNode* c_node, char* href) except -1:             # <<<<<<<<<<<<<<
 *         u"Lookup namespace structure and set it for the node."
 *         cdef xmlNs* c_ns
 */

static  int __pyx_f_4lxml_5etree_9_Document__setNodeNs(struct LxmlDocument *__pyx_v_self, xmlNode *__pyx_v_c_node, char *__pyx_v_href) {
  xmlNs *__pyx_v_c_ns;
  int __pyx_r;
  xmlNs *__pyx_t_1;
  __Pyx_RefNannySetupContext("_setNodeNs");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":383
 *         u"Lookup namespace structure and set it for the node."
 *         cdef xmlNs* c_ns
 *         c_ns = self._findOrBuildNodeNs(c_node, href, NULL)             # <<<<<<<<<<<<<<
 *         tree.xmlSetNs(c_node, c_ns)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_self, __pyx_v_c_node, __pyx_v_href, NULL); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_ns = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":384
 *         cdef xmlNs* c_ns
 *         c_ns = self._findOrBuildNodeNs(c_node, href, NULL)
 *         tree.xmlSetNs(c_node, c_ns)             # <<<<<<<<<<<<<<
 * 
 * cdef __initPrefixCache():
 */
  xmlSetNs(__pyx_v_c_node, __pyx_v_c_ns);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Document._setNodeNs");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":386
 *         tree.xmlSetNs(c_node, c_ns)
 * 
 * cdef __initPrefixCache():             # <<<<<<<<<<<<<<
 *     cdef int i
 *     return tuple([ python.PyString_FromFormat("ns%d", i)
 */

static  PyObject *__pyx_f_4lxml_5etree___initPrefixCache(void) {
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__initPrefixCache");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":388
 * cdef __initPrefixCache():
 *     cdef int i
 *     return tuple([ python.PyString_FromFormat("ns%d", i)             # <<<<<<<<<<<<<<
 *                    for i from 0 <= i < 30 ])
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  for (__pyx_v_i = 0; __pyx_v_i < 30; __pyx_v_i++) {
    __pyx_t_2 = PyString_FromFormat(__pyx_k_42, __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_2); if (unlikely(__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = ((PyObject *)PyList_AsTuple(__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = ((PyObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.__initPrefixCache");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":398
 *     cdef _Document NEW_DOCUMENT "PY_NEW" (object t)
 * 
 * cdef _Document _documentFactory(xmlDoc* c_doc, _BaseParser parser):             # <<<<<<<<<<<<<<
 *     cdef _Document result
 *     result = NEW_DOCUMENT(_Document)
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__documentFactory(xmlDoc *__pyx_v_c_doc, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  struct LxmlDocument *__pyx_v_result;
  struct LxmlDocument *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_documentFactory");
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __pyx_v_result = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":400
 * cdef _Document _documentFactory(xmlDoc* c_doc, _BaseParser parser):
 *     cdef _Document result
 *     result = NEW_DOCUMENT(_Document)             # <<<<<<<<<<<<<<
 *     result._c_doc = c_doc
 *     result._ns_counter = 0
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":401
 *     cdef _Document result
 *     result = NEW_DOCUMENT(_Document)
 *     result._c_doc = c_doc             # <<<<<<<<<<<<<<
 *     result._ns_counter = 0
 *     result._prefix_tail = None
 */
  __pyx_v_result->_c_doc = __pyx_v_c_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":402
 *     result = NEW_DOCUMENT(_Document)
 *     result._c_doc = c_doc
 *     result._ns_counter = 0             # <<<<<<<<<<<<<<
 *     result._prefix_tail = None
 *     if parser is None:
 */
  __pyx_v_result->_ns_counter = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":403
 *     result._c_doc = c_doc
 *     result._ns_counter = 0
 *     result._prefix_tail = None             # <<<<<<<<<<<<<<
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_result->_prefix_tail);
  __Pyx_DECREF(__pyx_v_result->_prefix_tail);
  __pyx_v_result->_prefix_tail = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":404
 *     result._ns_counter = 0
 *     result._prefix_tail = None
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     result._parser = parser
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":405
 *     result._prefix_tail = None
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *     result._parser = parser
 *     return result
 */
    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":406
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     result._parser = parser             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
  __Pyx_GOTREF(__pyx_v_result->_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_result->_parser));
  __pyx_v_result->_parser = __pyx_v_parser;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":407
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     result._parser = parser
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._documentFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":413
 *     u"Document information provided by parser and DTD."
 *     cdef _Document _doc
 *     def __init__(self, tree):             # <<<<<<<<<<<<<<
 *         u"Create a DocInfo object for an ElementTree object or root Element."
 *         self._doc = _documentOrRaise(tree)
 */

static int __pyx_pf_4lxml_5etree_7DocInfo___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_7DocInfo___init__[] = "Create a DocInfo object for an ElementTree object or root Element.";
static int __pyx_pf_4lxml_5etree_7DocInfo___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tree = 0;
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_url;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tree,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_tree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.DocInfo.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tree);
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":415
 *     def __init__(self, tree):
 *         u"Create a DocInfo object for an ElementTree object or root Element."
 *         self._doc = _documentOrRaise(tree)             # <<<<<<<<<<<<<<
 *         root_name, public_id, system_url = self._doc.getdoctype()
 *         if not root_name and (public_id or system_url):
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc));
  ((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":416
 *         u"Create a DocInfo object for an ElementTree object or root Element."
 *         self._doc = _documentOrRaise(tree)
 *         root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
 *         if not root_name and (public_id or system_url):
 *             raise ValueError, u"Could not find root node"
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 3)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":417
 *         self._doc = _documentOrRaise(tree)
 *         root_name, public_id, system_url = self._doc.getdoctype()
 *         if not root_name and (public_id or system_url):             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Could not find root node"
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_root_name); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = (!__pyx_t_6);
  if (__pyx_t_7) {
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!__pyx_t_6) {
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = __pyx_t_8;
    } else {
      __pyx_t_9 = __pyx_t_6;
    }
    __pyx_t_6 = __pyx_t_9;
  } else {
    __pyx_t_6 = __pyx_t_7;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":418
 *         root_name, public_id, system_url = self._doc.getdoctype()
 *         if not root_name and (public_id or system_url):
 *             raise ValueError, u"Could not find root node"             # <<<<<<<<<<<<<<
 * 
 *     property root_name:
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_44), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.DocInfo.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tree);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":422
 *     property root_name:
 *         u"Returns the name of the root node as defined by the DOCTYPE."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return root_name
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_url;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":423
 *         u"Returns the name of the root node as defined by the DOCTYPE."
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
 *             return root_name
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 3)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":424
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return root_name             # <<<<<<<<<<<<<<
 * 
 *     property public_id:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_root_name);
  __pyx_r = __pyx_v_root_name;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.DocInfo.root_name.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":428
 *     property public_id:
 *         u"Returns the public ID of the DOCTYPE."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return public_id
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_url;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":429
 *         u"Returns the public ID of the DOCTYPE."
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
 *             return public_id
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 3)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":430
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return public_id             # <<<<<<<<<<<<<<
 * 
 *     property system_url:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_public_id);
  __pyx_r = __pyx_v_public_id;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.DocInfo.public_id.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":434
 *     property system_url:
 *         u"Returns the system ID of the DOCTYPE."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return system_url
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_url;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":435
 *         u"Returns the system ID of the DOCTYPE."
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
 *             return system_url
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 3)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":436
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             return system_url             # <<<<<<<<<<<<<<
 * 
 *     property xml_version:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_system_url);
  __pyx_r = __pyx_v_system_url;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.DocInfo.system_url.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":440
 *     property xml_version:
 *         u"Returns the XML version as declared by the document."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             xml_version, encoding = self._doc.getxmlinfo()
 *             return xml_version
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_xml_version;
  PyObject *__pyx_v_encoding;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_xml_version = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_encoding = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":441
 *         u"Returns the XML version as declared by the document."
 *         def __get__(self):
 *             xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
 *             return xml_version
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getxmlinfo(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_xml_version);
    __pyx_v_xml_version = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_xml_version);
    __pyx_v_xml_version = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":442
 *         def __get__(self):
 *             xml_version, encoding = self._doc.getxmlinfo()
 *             return xml_version             # <<<<<<<<<<<<<<
 * 
 *     property encoding:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xml_version);
  __pyx_r = __pyx_v_xml_version;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.DocInfo.xml_version.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_xml_version);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":446
 *     property encoding:
 *         u"Returns the encoding name as declared by the document."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             xml_version, encoding = self._doc.getxmlinfo()
 *             return encoding
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_xml_version;
  PyObject *__pyx_v_encoding;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_xml_version = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_encoding = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":447
 *         u"Returns the encoding name as declared by the document."
 *         def __get__(self):
 *             xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
 *             return encoding
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getxmlinfo(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_xml_version);
    __pyx_v_xml_version = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_xml_version);
    __pyx_v_xml_version = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":448
 *         def __get__(self):
 *             xml_version, encoding = self._doc.getxmlinfo()
 *             return encoding             # <<<<<<<<<<<<<<
 * 
 *     property standalone:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_encoding);
  __pyx_r = __pyx_v_encoding;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.DocInfo.encoding.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_xml_version);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":458
 *         ``standalone`` flag was set to ``'yes'`` or not.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._doc.isstandalone()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":459
 *         """
 *         def __get__(self):
 *             return self._doc.isstandalone()             # <<<<<<<<<<<<<<
 * 
 *     property URL:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->isstandalone(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.DocInfo.standalone.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":463
 *     property URL:
 *         u"The source URL of the document (or None if unknown)."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._doc._c_doc.URL is NULL:
 *                 return None
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":464
 *         u"The source URL of the document (or None if unknown)."
 *         def __get__(self):
 *             if self._doc._c_doc.URL is NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             return _decodeFilename(self._doc._c_doc.URL)
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->URL == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":465
 *         def __get__(self):
 *             if self._doc._c_doc.URL is NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             return _decodeFilename(self._doc._c_doc.URL)
 *         def __set__(self, url):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":466
 *             if self._doc._c_doc.URL is NULL:
 *                 return None
 *             return _decodeFilename(self._doc._c_doc.URL)             # <<<<<<<<<<<<<<
 *         def __set__(self, url):
 *             cdef char* c_oldurl
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->URL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.DocInfo.URL.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":467
 *                 return None
 *             return _decodeFilename(self._doc._c_doc.URL)
 *         def __set__(self, url):             # <<<<<<<<<<<<<<
 *             cdef char* c_oldurl
 *             url = _encodeFilename(url)
 */

static int __pyx_pf_4lxml_5etree_7DocInfo_3URL___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_url); /*proto*/
static int __pyx_pf_4lxml_5etree_7DocInfo_3URL___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_url) {
  char *__pyx_v_c_oldurl;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_url);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":469
 *         def __set__(self, url):
 *             cdef char* c_oldurl
 *             url = _encodeFilename(url)             # <<<<<<<<<<<<<<
 *             c_oldurl = self._doc._c_doc.URL
 *             if url is None:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_url);
  __pyx_v_url = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":470
 *             cdef char* c_oldurl
 *             url = _encodeFilename(url)
 *             c_oldurl = self._doc._c_doc.URL             # <<<<<<<<<<<<<<
 *             if url is None:
 *                 self._doc._c_doc.URL = NULL
 */
  __pyx_v_c_oldurl = ((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->URL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":471
 *             url = _encodeFilename(url)
 *             c_oldurl = self._doc._c_doc.URL
 *             if url is None:             # <<<<<<<<<<<<<<
 *                 self._doc._c_doc.URL = NULL
 *             else:
 */
  __pyx_t_2 = (__pyx_v_url == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":472
 *             c_oldurl = self._doc._c_doc.URL
 *             if url is None:
 *                 self._doc._c_doc.URL = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._doc._c_doc.URL = tree.xmlStrdup(_cstr(url))
 */
    ((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->URL = NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":474
 *                 self._doc._c_doc.URL = NULL
 *             else:
 *                 self._doc._c_doc.URL = tree.xmlStrdup(_cstr(url))             # <<<<<<<<<<<<<<
 *             if c_oldurl is not NULL:
 *                 tree.xmlFree(c_oldurl)
 */
    ((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->URL = xmlStrdup(PyString_AS_STRING(__pyx_v_url));
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":475
 *             else:
 *                 self._doc._c_doc.URL = tree.xmlStrdup(_cstr(url))
 *             if c_oldurl is not NULL:             # <<<<<<<<<<<<<<
 *                 tree.xmlFree(c_oldurl)
 * 
 */
  __pyx_t_2 = (__pyx_v_c_oldurl != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":476
 *                 self._doc._c_doc.URL = tree.xmlStrdup(_cstr(url))
 *             if c_oldurl is not NULL:
 *                 tree.xmlFree(c_oldurl)             # <<<<<<<<<<<<<<
 * 
 *     property doctype:
 */
    xmlFree(__pyx_v_c_oldurl);
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.DocInfo.URL.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":480
 *     property doctype:
 *         u"Returns a DOCTYPE declaration string for the document."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             if public_id:
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_root_name;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_url;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_root_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":481
 *         u"Returns a DOCTYPE declaration string for the document."
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
 *             if public_id:
 *                 if system_url:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->getdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 3)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 2); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_root_name);
    __pyx_v_root_name = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_public_id);
    __pyx_v_public_id = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_system_url);
    __pyx_v_system_url = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":482
 *         def __get__(self):
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             if public_id:             # <<<<<<<<<<<<<<
 *                 if system_url:
 *                     return u'<!DOCTYPE %s PUBLIC "%s" "%s">' % (
 */
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":483
 *             root_name, public_id, system_url = self._doc.getdoctype()
 *             if public_id:
 *                 if system_url:             # <<<<<<<<<<<<<<
 *                     return u'<!DOCTYPE %s PUBLIC "%s" "%s">' % (
 *                         root_name, public_id, system_url)
 */
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":484
 *             if public_id:
 *                 if system_url:
 *                     return u'<!DOCTYPE %s PUBLIC "%s" "%s">' % (             # <<<<<<<<<<<<<<
 *                         root_name, public_id, system_url)
 *                 else:
 */
      __Pyx_XDECREF(__pyx_r);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":485
 *                 if system_url:
 *                     return u'<!DOCTYPE %s PUBLIC "%s" "%s">' % (
 *                         root_name, public_id, system_url)             # <<<<<<<<<<<<<<
 *                 else:
 *                     return u'<!DOCTYPE %s PUBLIC "%s">' % (
 */
      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_root_name);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_root_name);
      __Pyx_GIVEREF(__pyx_v_root_name);
      __Pyx_INCREF(__pyx_v_public_id);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_public_id);
      __Pyx_GIVEREF(__pyx_v_public_id);
      __Pyx_INCREF(__pyx_v_system_url);
      PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_system_url);
      __Pyx_GIVEREF(__pyx_v_system_url);
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_45), __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":487
 *                         root_name, public_id, system_url)
 *                 else:
 *                     return u'<!DOCTYPE %s PUBLIC "%s">' % (             # <<<<<<<<<<<<<<
 *                         root_name, public_id)
 *             elif system_url:
 */
      __Pyx_XDECREF(__pyx_r);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":488
 *                 else:
 *                     return u'<!DOCTYPE %s PUBLIC "%s">' % (
 *                         root_name, public_id)             # <<<<<<<<<<<<<<
 *             elif system_url:
 *                 return u'<!DOCTYPE %s SYSTEM "%s">' % (
 */
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_root_name);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_root_name);
      __Pyx_GIVEREF(__pyx_v_root_name);
      __Pyx_INCREF(__pyx_v_public_id);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_public_id);
      __Pyx_GIVEREF(__pyx_v_public_id);
      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_46), __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":489
 *                     return u'<!DOCTYPE %s PUBLIC "%s">' % (
 *                         root_name, public_id)
 *             elif system_url:             # <<<<<<<<<<<<<<
 *                 return u'<!DOCTYPE %s SYSTEM "%s">' % (
 *                     root_name, system_url)
 */
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":490
 *                         root_name, public_id)
 *             elif system_url:
 *                 return u'<!DOCTYPE %s SYSTEM "%s">' % (             # <<<<<<<<<<<<<<
 *                     root_name, system_url)
 *             elif self._doc.hasdoctype():
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":491
 *             elif system_url:
 *                 return u'<!DOCTYPE %s SYSTEM "%s">' % (
 *                     root_name, system_url)             # <<<<<<<<<<<<<<
 *             elif self._doc.hasdoctype():
 *                 return u'<!DOCTYPE %s>' % root_name
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_root_name);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_root_name);
    __Pyx_GIVEREF(__pyx_v_root_name);
    __Pyx_INCREF(__pyx_v_system_url);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_system_url);
    __Pyx_GIVEREF(__pyx_v_system_url);
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_47), __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":492
 *                 return u'<!DOCTYPE %s SYSTEM "%s">' % (
 *                     root_name, system_url)
 *             elif self._doc.hasdoctype():             # <<<<<<<<<<<<<<
 *                 return u'<!DOCTYPE %s>' % root_name
 *             else:
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->__pyx_vtab)->hasdoctype(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":493
 *                     root_name, system_url)
 *             elif self._doc.hasdoctype():
 *                 return u'<!DOCTYPE %s>' % root_name             # <<<<<<<<<<<<<<
 *             else:
 *                 return u""
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_48), __pyx_v_root_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":495
 *                 return u'<!DOCTYPE %s>' % root_name
 *             else:
 *                 return u""             # <<<<<<<<<<<<<<
 * 
 *     property internalDTD:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
    __pyx_r = ((PyObject *)__pyx_kp_u_14);
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.DocInfo.doctype.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root_name);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":499
 *     property internalDTD:
 *         u"Returns a DTD validator based on the internal subset of the document."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return _dtdFactory(self._doc._c_doc.intSubset)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":500
 *         u"Returns a DTD validator based on the internal subset of the document."
 *         def __get__(self):
 *             return _dtdFactory(self._doc._c_doc.intSubset)             # <<<<<<<<<<<<<<
 * 
 *     property externalDTD:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__dtdFactory(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->intSubset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.DocInfo.internalDTD.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":504
 *     property externalDTD:
 *         u"Returns a DTD validator based on the external subset of the document."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return _dtdFactory(self._doc._c_doc.extSubset)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":505
 *         u"Returns a DTD validator based on the external subset of the document."
 *         def __get__(self):
 *             return _dtdFactory(self._doc._c_doc.extSubset)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__dtdFactory(((struct __pyx_obj_4lxml_5etree_DocInfo *)__pyx_v_self)->_doc->_c_doc->extSubset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.DocInfo.externalDTD.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":522
 *     cdef object _attrib
 * 
 *     def _init(self):             # <<<<<<<<<<<<<<
 *         u"""_init(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element__init(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element__init[] = "_init(self)\n\n        Called after object initialisation.  Custom subclasses may override\n        this if they recursively call _init() in the superclasses.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element__init(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_init");

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":529
 *         """
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         #print "trying to free node:", <int>self._c_node
 *         #displayNode(self._c_node, 0)
 */

static void __pyx_pf_4lxml_5etree_8_Element___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_8_Element___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":532
 *         #print "trying to free node:", <int>self._c_node
 *         #displayNode(self._c_node, 0)
 *         if self._c_node is not NULL:             # <<<<<<<<<<<<<<
 *             _unregisterProxy(self)
 *             attemptDeallocation(self._c_node)
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_c_node != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":533
 *         #displayNode(self._c_node, 0)
 *         if self._c_node is not NULL:
 *             _unregisterProxy(self)             # <<<<<<<<<<<<<<
 *             attemptDeallocation(self._c_node)
 *         _releaseProxy(self)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__unregisterProxy(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":534
 *         if self._c_node is not NULL:
 *             _unregisterProxy(self)
 *             attemptDeallocation(self._c_node)             # <<<<<<<<<<<<<<
 *         _releaseProxy(self)
 * 
 */
    __pyx_f_4lxml_5etree_attemptDeallocation(((struct LxmlElement *)__pyx_v_self)->_c_node);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":535
 *             _unregisterProxy(self)
 *             attemptDeallocation(self._c_node)
 *         _releaseProxy(self)             # <<<<<<<<<<<<<<
 * 
 *     # MANIPULATORS
 */
  __pyx_f_4lxml_5etree__releaseProxy(((struct LxmlElement *)__pyx_v_self));

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.__dealloc__");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":539
 *     # MANIPULATORS
 * 
 *     def __setitem__(self, x, value):             # <<<<<<<<<<<<<<
 *         u"""__setitem__(self, x, value)
 * 
 */

static int __pyx_pf_4lxml_5etree_8_Element___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_value); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___setitem__[] = "__setitem__(self, x, value)\n\n        Replaces the given subelement index or slice.\n        ";
static int __pyx_pf_4lxml_5etree_8_Element___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_value) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  xmlDoc *__pyx_v_c_source_doc;
  struct LxmlElement *__pyx_v_element;
  int __pyx_v_left_to_right;
  Py_ssize_t __pyx_v_slicelength;
  Py_ssize_t __pyx_v_step;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("__setitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_x);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":550
 *         cdef bint left_to_right
 *         cdef Py_ssize_t slicelength, step
 *         if value is None:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"cannot assign None"
 *         if python.PySlice_Check(x):
 */
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":551
 *         cdef Py_ssize_t slicelength, step
 *         if value is None:
 *             raise ValueError, u"cannot assign None"             # <<<<<<<<<<<<<<
 *         if python.PySlice_Check(x):
 *             # slice assignment
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_49), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":552
 *         if value is None:
 *             raise ValueError, u"cannot assign None"
 *         if python.PySlice_Check(x):             # <<<<<<<<<<<<<<
 *             # slice assignment
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 */
  __pyx_t_1 = PySlice_Check(__pyx_v_x);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":554
 *         if python.PySlice_Check(x):
 *             # slice assignment
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)             # <<<<<<<<<<<<<<
 *             if step > 0:
 *                 left_to_right = 1
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__findChildSlice(((PySliceObject *)__pyx_v_x), ((struct LxmlElement *)__pyx_v_self)->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":555
 *             # slice assignment
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *             if step > 0:             # <<<<<<<<<<<<<<
 *                 left_to_right = 1
 *             else:
 */
    __pyx_t_1 = (__pyx_v_step > 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":556
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *             if step > 0:
 *                 left_to_right = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 left_to_right = 0
 */
      __pyx_v_left_to_right = 1;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":558
 *                 left_to_right = 1
 *             else:
 *                 left_to_right = 0             # <<<<<<<<<<<<<<
 *                 step = -step
 *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)
 */
      __pyx_v_left_to_right = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":559
 *             else:
 *                 left_to_right = 0
 *                 step = -step             # <<<<<<<<<<<<<<
 *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)
 *             return
 */
      __pyx_v_step = (-__pyx_v_step);
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":560
 *                 left_to_right = 0
 *                 step = -step
 *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__replaceSlice(((struct LxmlElement *)__pyx_v_self), __pyx_v_c_node, __pyx_v_slicelength, __pyx_v_step, __pyx_v_left_to_right, __pyx_v_value); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":561
 *                 step = -step
 *             _replaceSlice(self, c_node, slicelength, step, left_to_right, value)
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             # otherwise: normal item assignment
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":564
 *         else:
 *             # otherwise: normal item assignment
 *             element = value             # <<<<<<<<<<<<<<
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:
 */
    if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_INCREF(__pyx_v_value);
    __Pyx_DECREF(((PyObject *)__pyx_v_element));
    __pyx_v_element = ((struct LxmlElement *)__pyx_v_value);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":565
 *             # otherwise: normal item assignment
 *             element = value
 *             c_node = _findChild(self._c_node, x)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 */
    __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":566
 *             element = value
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 raise IndexError, u"list index out of range"
 *             c_source_doc = element._c_node.doc
 */
    __pyx_t_1 = (__pyx_v_c_node == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":567
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"             # <<<<<<<<<<<<<<
 *             c_source_doc = element._c_node.doc
 *             c_next = element._c_node.next
 */
      __Pyx_Raise(__pyx_builtin_IndexError, ((PyObject *)__pyx_kp_u_50), 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":568
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 *             c_source_doc = element._c_node.doc             # <<<<<<<<<<<<<<
 *             c_next = element._c_node.next
 *             _removeText(c_node.next)
 */
    __pyx_v_c_source_doc = __pyx_v_element->_c_node->doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":569
 *                 raise IndexError, u"list index out of range"
 *             c_source_doc = element._c_node.doc
 *             c_next = element._c_node.next             # <<<<<<<<<<<<<<
 *             _removeText(c_node.next)
 *             tree.xmlReplaceNode(c_node, element._c_node)
 */
    __pyx_v_c_next = __pyx_v_element->_c_node->next;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":570
 *             c_source_doc = element._c_node.doc
 *             c_next = element._c_node.next
 *             _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *             tree.xmlReplaceNode(c_node, element._c_node)
 *             _moveTail(c_next, element._c_node)
 */
    __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":571
 *             c_next = element._c_node.next
 *             _removeText(c_node.next)
 *             tree.xmlReplaceNode(c_node, element._c_node)             # <<<<<<<<<<<<<<
 *             _moveTail(c_next, element._c_node)
 *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 */
    xmlReplaceNode(__pyx_v_c_node, __pyx_v_element->_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":572
 *             _removeText(c_node.next)
 *             tree.xmlReplaceNode(c_node, element._c_node)
 *             _moveTail(c_next, element._c_node)             # <<<<<<<<<<<<<<
 *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 *             if not attemptDeallocation(c_node):
 */
    __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":573
 *             tree.xmlReplaceNode(c_node, element._c_node)
 *             _moveTail(c_next, element._c_node)
 *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)             # <<<<<<<<<<<<<<
 *             if not attemptDeallocation(c_node):
 *                 moveNodeToDocument(self._doc, c_node.doc, c_node)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":574
 *             _moveTail(c_next, element._c_node)
 *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 *             if not attemptDeallocation(c_node):             # <<<<<<<<<<<<<<
 *                 moveNodeToDocument(self._doc, c_node.doc, c_node)
 * 
 */
    __pyx_t_1 = (!__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":575
 *             moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 *             if not attemptDeallocation(c_node):
 *                 moveNodeToDocument(self._doc, c_node.doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, x):
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.__setitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_x);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":577
 *                 moveNodeToDocument(self._doc, c_node.doc, c_node)
 * 
 *     def __delitem__(self, x):             # <<<<<<<<<<<<<<
 *         u"""__delitem__(self, x)
 * 
 */

static int __pyx_pf_4lxml_5etree_8_Element___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___delitem__[] = "__delitem__(self, x)\n\n        Deletes the given subelement or a slice.\n        ";
static int __pyx_pf_4lxml_5etree_8_Element___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_slicelength;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__delitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_x);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":585
 *         cdef xmlNode* c_next
 *         cdef Py_ssize_t step, slicelength
 *         if python.PySlice_Check(x):             # <<<<<<<<<<<<<<
 *             # slice deletion
 *             if _isFullSlice(<python.slice>x):
 */
  __pyx_t_1 = PySlice_Check(__pyx_v_x);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":587
 *         if python.PySlice_Check(x):
 *             # slice deletion
 *             if _isFullSlice(<python.slice>x):             # <<<<<<<<<<<<<<
 *                 c_node = self._c_node.children
 *                 if c_node is not NULL:
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__isFullSlice(((PySliceObject *)__pyx_v_x));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":588
 *             # slice deletion
 *             if _isFullSlice(<python.slice>x):
 *                 c_node = self._c_node.children             # <<<<<<<<<<<<<<
 *                 if c_node is not NULL:
 *                     if not _isElement(c_node):
 */
      __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_self)->_c_node->children;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":589
 *             if _isFullSlice(<python.slice>x):
 *                 c_node = self._c_node.children
 *                 if c_node is not NULL:             # <<<<<<<<<<<<<<
 *                     if not _isElement(c_node):
 *                         c_node = _nextElement(c_node)
 */
      __pyx_t_1 = (__pyx_v_c_node != NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":590
 *                 c_node = self._c_node.children
 *                 if c_node is not NULL:
 *                     if not _isElement(c_node):             # <<<<<<<<<<<<<<
 *                         c_node = _nextElement(c_node)
 *                     while c_node is not NULL:
 */
        __pyx_t_1 = (!_isElement(__pyx_v_c_node));
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":591
 *                 if c_node is not NULL:
 *                     if not _isElement(c_node):
 *                         c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *                     while c_node is not NULL:
 *                         c_next = _nextElement(c_node)
 */
          __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
          goto __pyx_L8;
        }
        __pyx_L8:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":592
 *                     if not _isElement(c_node):
 *                         c_node = _nextElement(c_node)
 *                     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *                         c_next = _nextElement(c_node)
 *                         _removeNode(self._doc, c_node)
 */
        while (1) {
          __pyx_t_1 = (__pyx_v_c_node != NULL);
          if (!__pyx_t_1) break;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":593
 *                         c_node = _nextElement(c_node)
 *                     while c_node is not NULL:
 *                         c_next = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *                         _removeNode(self._doc, c_node)
 *                         c_node = c_next
 */
          __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":594
 *                     while c_node is not NULL:
 *                         c_next = _nextElement(c_node)
 *                         _removeNode(self._doc, c_node)             # <<<<<<<<<<<<<<
 *                         c_node = c_next
 *             else:
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":595
 *                         c_next = _nextElement(c_node)
 *                         _removeNode(self._doc, c_node)
 *                         c_node = c_next             # <<<<<<<<<<<<<<
 *             else:
 *                 _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 */
          __pyx_v_c_node = __pyx_v_c_next;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":597
 *                         c_node = c_next
 *             else:
 *                 _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)             # <<<<<<<<<<<<<<
 *                 _deleteSlice(self._doc, c_node, slicelength, step)
 *         else:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__findChildSlice(((PySliceObject *)__pyx_v_x), ((struct LxmlElement *)__pyx_v_self)->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":598
 *             else:
 *                 _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *                 _deleteSlice(self._doc, c_node, slicelength, step)             # <<<<<<<<<<<<<<
 *         else:
 *             # item deletion
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__deleteSlice(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node, __pyx_v_slicelength, __pyx_v_step); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":601
 *         else:
 *             # item deletion
 *             c_node = _findChild(self._c_node, x)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 raise IndexError, u"index out of range: %d" % x
 */
    __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":602
 *             # item deletion
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 raise IndexError, u"index out of range: %d" % x
 *             _removeText(c_node.next)
 */
    __pyx_t_1 = (__pyx_v_c_node == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":603
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:
 *                 raise IndexError, u"index out of range: %d" % x             # <<<<<<<<<<<<<<
 *             _removeText(c_node.next)
 *             _removeNode(self._doc, c_node)
 */
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_51), __pyx_v_x); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_4, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L11;
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":604
 *             if c_node is NULL:
 *                 raise IndexError, u"index out of range: %d" % x
 *             _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *             _removeNode(self._doc, c_node)
 * 
 */
    __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":605
 *                 raise IndexError, u"index out of range: %d" % x
 *             _removeText(c_node.next)
 *             _removeNode(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __deepcopy__(self, memo):
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.__delitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_x);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":607
 *             _removeNode(self._doc, c_node)
 * 
 *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
 *         u"__deepcopy__(self, memo)"
 *         return self.__copy__()
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___deepcopy__[] = "__deepcopy__(self, memo)";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__deepcopy__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":609
 *     def __deepcopy__(self, memo):
 *         u"__deepcopy__(self, memo)"
 *         return self.__copy__()             # <<<<<<<<<<<<<<
 * 
 *     def __copy__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____copy__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.__deepcopy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":611
 *         return self.__copy__()
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         u"__copy__(self)"
 *         cdef xmlDoc* c_doc
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___copy__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___copy__[] = "__copy__(self)";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___copy__(PyObject *__pyx_v_self, PyObject *unused) {
  xmlDoc *__pyx_v_c_doc;
  xmlNode *__pyx_v_c_node;
  struct LxmlDocument *__pyx_v_new_doc;
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  xmlDoc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__copy__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_new_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":616
 *         cdef xmlNode* c_node
 *         cdef _Document new_doc
 *         c_doc = _copyDocRoot(self._doc._c_doc, self._c_node) # recursive             # <<<<<<<<<<<<<<
 *         new_doc = _documentFactory(c_doc, self._doc._parser)
 *         root = new_doc.getroot()
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__copyDocRoot(((struct LxmlElement *)__pyx_v_self)->_doc->_c_doc, ((struct LxmlElement *)__pyx_v_self)->_c_node); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":617
 *         cdef _Document new_doc
 *         c_doc = _copyDocRoot(self._doc._c_doc, self._c_node) # recursive
 *         new_doc = _documentFactory(c_doc, self._doc._parser)             # <<<<<<<<<<<<<<
 *         root = new_doc.getroot()
 *         if root is not None:
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct LxmlElement *)__pyx_v_self)->_doc->_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_doc));
  __pyx_v_new_doc = ((struct LxmlDocument *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":618
 *         c_doc = _copyDocRoot(self._doc._c_doc, self._c_node) # recursive
 *         new_doc = _documentFactory(c_doc, self._doc._parser)
 *         root = new_doc.getroot()             # <<<<<<<<<<<<<<
 *         if root is not None:
 *             return root
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_new_doc->__pyx_vtab)->getroot(__pyx_v_new_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":619
 *         new_doc = _documentFactory(c_doc, self._doc._parser)
 *         root = new_doc.getroot()
 *         if root is not None:             # <<<<<<<<<<<<<<
 *             return root
 *         # Comment/PI
 */
  __pyx_t_3 = (__pyx_v_root != Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":620
 *         root = new_doc.getroot()
 *         if root is not None:
 *             return root             # <<<<<<<<<<<<<<
 *         # Comment/PI
 *         c_node = c_doc.children
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_root);
    __pyx_r = __pyx_v_root;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":622
 *             return root
 *         # Comment/PI
 *         c_node = c_doc.children             # <<<<<<<<<<<<<<
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next
 */
  __pyx_v_c_node = __pyx_v_c_doc->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":623
 *         # Comment/PI
 *         c_node = c_doc.children
 *         while c_node is not NULL and c_node.type != self._c_node.type:             # <<<<<<<<<<<<<<
 *             c_node = c_node.next
 *         if c_node is NULL:
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_node != NULL);
    if (__pyx_t_3) {
      __pyx_t_4 = (__pyx_v_c_node->type != ((struct LxmlElement *)__pyx_v_self)->_c_node->type);
      __pyx_t_5 = __pyx_t_4;
    } else {
      __pyx_t_5 = __pyx_t_3;
    }
    if (!__pyx_t_5) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":624
 *         c_node = c_doc.children
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":625
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(new_doc, c_node)
 */
  __pyx_t_5 = (__pyx_v_c_node == NULL);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":626
 *             c_node = c_node.next
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(new_doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":627
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(new_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def set(self, key, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_new_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.__copy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_new_doc);
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":629
 *         return _elementFactory(new_doc, c_node)
 * 
 *     def set(self, key, value):             # <<<<<<<<<<<<<<
 *         u"""set(self, key, value)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_set[] = "set(self, key, value)\n\n        Sets an element attribute.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__value,0};
  __Pyx_RefNannySetupContext("set");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.set");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":634
 *         Sets an element attribute.
 *         """
 *         _setAttributeValue(self, key, value)             # <<<<<<<<<<<<<<
 * 
 *     def append(self, _Element element not None):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setAttributeValue(((struct LxmlElement *)__pyx_v_self), __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.set");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":636
 *         _setAttributeValue(self, key, value)
 * 
 *     def append(self, _Element element not None):             # <<<<<<<<<<<<<<
 *         u"""append(self, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_append(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_append[] = "append(self, element)\n\n        Adds a subelement to the end of this element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_append(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("append");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":641
 *         Adds a subelement to the end of this element.
 *         """
 *         _appendChild(self, element)             # <<<<<<<<<<<<<<
 * 
 *     def addnext(self, _Element element):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.append");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":643
 *         _appendChild(self, element)
 * 
 *     def addnext(self, _Element element):             # <<<<<<<<<<<<<<
 *         u"""addnext(self, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_addnext(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_addnext[] = "addnext(self, element)\n\n        Adds the element as a following sibling directly after this\n        element.\n\n        This is normally used to set a processing instruction or comment after\n        the root node of a document.  Note that tail text is automatically\n        discarded when adding at the root level.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_addnext(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("addnext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":653
 *         discarded when adding at the root level.
 *         """
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):             # <<<<<<<<<<<<<<
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_c_node->parent != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (!_isElement(((struct LxmlElement *)__pyx_v_self)->_c_node->parent));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":654
 *         """
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
 *             if element._c_node.type != tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 */
    __pyx_t_3 = (((struct LxmlElement *)__pyx_v_element)->_c_node->type != XML_PI_NODE);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":655
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None
 */
      __pyx_t_3 = (((struct LxmlElement *)__pyx_v_element)->_c_node->type != XML_COMMENT_NODE);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":656
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"             # <<<<<<<<<<<<<<
 *             element.tail = None
 *         _appendSibling(self, element)
 */
        __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_52), 0);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L7;
      }
      __pyx_L7:;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":657
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None             # <<<<<<<<<<<<<<
 *         _appendSibling(self, element)
 * 
 */
    if (PyObject_SetAttr(__pyx_v_element, __pyx_n_s__tail, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":658
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None
 *         _appendSibling(self, element)             # <<<<<<<<<<<<<<
 * 
 *     def addprevious(self, _Element element):
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__appendSibling(((struct LxmlElement *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.addnext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":660
 *         _appendSibling(self, element)
 * 
 *     def addprevious(self, _Element element):             # <<<<<<<<<<<<<<
 *         u"""addprevious(self, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_addprevious(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_addprevious[] = "addprevious(self, element)\n\n        Adds the element as a preceding sibling directly before this\n        element.\n\n        This is normally used to set a processing instruction or comment\n        before the root node of a document.  Note that tail text is\n        automatically discarded when adding at the root level.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_addprevious(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("addprevious");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":670
 *         automatically discarded when adding at the root level.
 *         """
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):             # <<<<<<<<<<<<<<
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_c_node->parent != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (!_isElement(((struct LxmlElement *)__pyx_v_self)->_c_node->parent));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":671
 *         """
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
 *             if element._c_node.type != tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 */
    __pyx_t_3 = (((struct LxmlElement *)__pyx_v_element)->_c_node->type != XML_PI_NODE);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":672
 *         if self._c_node.parent != NULL and not _isElement(self._c_node.parent):
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None
 */
      __pyx_t_3 = (((struct LxmlElement *)__pyx_v_element)->_c_node->type != XML_COMMENT_NODE);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":673
 *             if element._c_node.type != tree.XML_PI_NODE:
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"             # <<<<<<<<<<<<<<
 *             element.tail = None
 *         _prependSibling(self, element)
 */
        __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_52), 0);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L7;
      }
      __pyx_L7:;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":674
 *                 if element._c_node.type != tree.XML_COMMENT_NODE:
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None             # <<<<<<<<<<<<<<
 *         _prependSibling(self, element)
 * 
 */
    if (PyObject_SetAttr(__pyx_v_element, __pyx_n_s__tail, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":675
 *                     raise TypeError, u"Only processing instructions and comments can be siblings of the root element"
 *             element.tail = None
 *         _prependSibling(self, element)             # <<<<<<<<<<<<<<
 * 
 *     def extend(self, elements):
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__prependSibling(((struct LxmlElement *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.addprevious");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":677
 *         _prependSibling(self, element)
 * 
 *     def extend(self, elements):             # <<<<<<<<<<<<<<
 *         u"""extend(self, elements)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_extend(PyObject *__pyx_v_self, PyObject *__pyx_v_elements); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_extend[] = "extend(self, elements)\n\n        Extends the current children by the elements in the iterable.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_extend(PyObject *__pyx_v_self, PyObject *__pyx_v_elements) {
  PyObject *__pyx_v_element;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("extend");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_elements);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":682
 *         Extends the current children by the elements in the iterable.
 *         """
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             _appendChild(self, element)
 * 
 */
  if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_v_element);
    __pyx_v_element = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":683
 *         """
 *         for element in elements:
 *             _appendChild(self, element)             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
    if (!(likely(((__pyx_v_element) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.extend");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_elements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":685
 *             _appendChild(self, element)
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         u"""clear(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_clear(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_clear[] = "clear(self)\n\n        Resets an element.  This function removes all subelements, clears\n        all attributes and sets the text and tail properties to None.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_clear(PyObject *__pyx_v_self, PyObject *unused) {
  xmlAttr *__pyx_v_c_attr;
  xmlAttr *__pyx_v_c_attr_next;
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_node_next;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("clear");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":695
 *         cdef xmlNode* c_node
 *         cdef xmlNode* c_node_next
 *         c_node = self._c_node             # <<<<<<<<<<<<<<
 *         # remove self.text and self.tail
 *         _removeText(c_node.children)
 */
  __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_self)->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":697
 *         c_node = self._c_node
 *         # remove self.text and self.tail
 *         _removeText(c_node.children)             # <<<<<<<<<<<<<<
 *         _removeText(c_node.next)
 *         # remove all attributes
 */
  __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->children);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":698
 *         # remove self.text and self.tail
 *         _removeText(c_node.children)
 *         _removeText(c_node.next)             # <<<<<<<<<<<<<<
 *         # remove all attributes
 *         c_attr = c_node.properties
 */
  __pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":700
 *         _removeText(c_node.next)
 *         # remove all attributes
 *         c_attr = c_node.properties             # <<<<<<<<<<<<<<
 *         while c_attr is not NULL:
 *             c_attr_next = c_attr.next
 */
  __pyx_v_c_attr = __pyx_v_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":701
 *         # remove all attributes
 *         c_attr = c_node.properties
 *         while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *             c_attr_next = c_attr.next
 *             tree.xmlRemoveProp(c_attr)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":702
 *         c_attr = c_node.properties
 *         while c_attr is not NULL:
 *             c_attr_next = c_attr.next             # <<<<<<<<<<<<<<
 *             tree.xmlRemoveProp(c_attr)
 *             c_attr = c_attr_next
 */
    __pyx_v_c_attr_next = __pyx_v_c_attr->next;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":703
 *         while c_attr is not NULL:
 *             c_attr_next = c_attr.next
 *             tree.xmlRemoveProp(c_attr)             # <<<<<<<<<<<<<<
 *             c_attr = c_attr_next
 *         # remove all subelements
 */
    xmlRemoveProp(__pyx_v_c_attr);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":704
 *             c_attr_next = c_attr.next
 *             tree.xmlRemoveProp(c_attr)
 *             c_attr = c_attr_next             # <<<<<<<<<<<<<<
 *         # remove all subelements
 *         c_node = c_node.children
 */
    __pyx_v_c_attr = __pyx_v_c_attr_next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":706
 *             c_attr = c_attr_next
 *         # remove all subelements
 *         c_node = c_node.children             # <<<<<<<<<<<<<<
 *         if c_node is not NULL:
 *             if not _isElement(c_node):
 */
  __pyx_v_c_node = __pyx_v_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":707
 *         # remove all subelements
 *         c_node = c_node.children
 *         if c_node is not NULL:             # <<<<<<<<<<<<<<
 *             if not _isElement(c_node):
 *                 c_node = _nextElement(c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":708
 *         c_node = c_node.children
 *         if c_node is not NULL:
 *             if not _isElement(c_node):             # <<<<<<<<<<<<<<
 *                 c_node = _nextElement(c_node)
 *             while c_node is not NULL:
 */
    __pyx_t_1 = (!_isElement(__pyx_v_c_node));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":709
 *         if c_node is not NULL:
 *             if not _isElement(c_node):
 *                 c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *             while c_node is not NULL:
 *                 c_node_next = _nextElement(c_node)
 */
      __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":710
 *             if not _isElement(c_node):
 *                 c_node = _nextElement(c_node)
 *             while c_node is not NULL:             # <<<<<<<<<<<<<<
 *                 c_node_next = _nextElement(c_node)
 *                 _removeNode(self._doc, c_node)
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_node != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":711
 *                 c_node = _nextElement(c_node)
 *             while c_node is not NULL:
 *                 c_node_next = _nextElement(c_node)             # <<<<<<<<<<<<<<
 *                 _removeNode(self._doc, c_node)
 *                 c_node = c_node_next
 */
      __pyx_v_c_node_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":712
 *             while c_node is not NULL:
 *                 c_node_next = _nextElement(c_node)
 *                 _removeNode(self._doc, c_node)             # <<<<<<<<<<<<<<
 *                 c_node = c_node_next
 * 
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":713
 *                 c_node_next = _nextElement(c_node)
 *                 _removeNode(self._doc, c_node)
 *                 c_node = c_node_next             # <<<<<<<<<<<<<<
 * 
 *     def insert(self, index, _Element element not None):
 */
      __pyx_v_c_node = __pyx_v_c_node_next;
    }
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.clear");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":715
 *                 c_node = c_node_next
 * 
 *     def insert(self, index, _Element element not None):             # <<<<<<<<<<<<<<
 *         u"""insert(self, index, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_insert[] = "insert(self, index, element)\n\n        Inserts a subelement at the given position in this element\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_index = 0;
  struct LxmlElement *__pyx_v_element = 0;
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  xmlDoc *__pyx_v_c_source_doc;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__element,0};
  __Pyx_RefNannySetupContext("insert");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "insert") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_index = values[0];
    __pyx_v_element = ((struct LxmlElement *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_index = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 1));
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.insert");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":723
 *         cdef xmlNode* c_next
 *         cdef xmlDoc* c_source_doc
 *         c_node = _findChild(self._c_node, index)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             _appendChild(self, element)
 */
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":724
 *         cdef xmlDoc* c_source_doc
 *         c_node = _findChild(self._c_node, index)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             _appendChild(self, element)
 *             return
 */
  __pyx_t_2 = (__pyx_v_c_node == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":725
 *         c_node = _findChild(self._c_node, index)
 *         if c_node is NULL:
 *             _appendChild(self, element)             # <<<<<<<<<<<<<<
 *             return
 *         c_source_doc = c_node.doc
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_element); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":726
 *         if c_node is NULL:
 *             _appendChild(self, element)
 *             return             # <<<<<<<<<<<<<<
 *         c_source_doc = c_node.doc
 *         c_next = element._c_node.next
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":727
 *             _appendChild(self, element)
 *             return
 *         c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
 *         c_next = element._c_node.next
 *         tree.xmlAddPrevSibling(c_node, element._c_node)
 */
  __pyx_v_c_source_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":728
 *             return
 *         c_source_doc = c_node.doc
 *         c_next = element._c_node.next             # <<<<<<<<<<<<<<
 *         tree.xmlAddPrevSibling(c_node, element._c_node)
 *         _moveTail(c_next, element._c_node)
 */
  __pyx_v_c_next = __pyx_v_element->_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":729
 *         c_source_doc = c_node.doc
 *         c_next = element._c_node.next
 *         tree.xmlAddPrevSibling(c_node, element._c_node)             # <<<<<<<<<<<<<<
 *         _moveTail(c_next, element._c_node)
 *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 */
  xmlAddPrevSibling(__pyx_v_c_node, __pyx_v_element->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":730
 *         c_next = element._c_node.next
 *         tree.xmlAddPrevSibling(c_node, element._c_node)
 *         _moveTail(c_next, element._c_node)             # <<<<<<<<<<<<<<
 *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 * 
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":731
 *         tree.xmlAddPrevSibling(c_node, element._c_node)
 *         _moveTail(c_next, element._c_node)
 *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)             # <<<<<<<<<<<<<<
 * 
 *     def remove(self, _Element element not None):
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.insert");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_index);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":733
 *         moveNodeToDocument(self._doc, c_source_doc, element._c_node)
 * 
 *     def remove(self, _Element element not None):             # <<<<<<<<<<<<<<
 *         u"""remove(self, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_remove(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_remove[] = "remove(self, element)\n\n        Removes a matching subelement. Unlike the find methods, this\n        method compares elements based on identity, not on tag value\n        or contents.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_remove(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("remove");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":742
 *         cdef xmlNode* c_node
 *         cdef xmlNode* c_next
 *         c_node = element._c_node             # <<<<<<<<<<<<<<
 *         if c_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."
 */
  __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_element)->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":743
 *         cdef xmlNode* c_next
 *         c_node = element._c_node
 *         if c_node.parent is not self._c_node:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Element is not a child of this node."
 *         c_next = element._c_node.next
 */
  __pyx_t_1 = (__pyx_v_c_node->parent != ((struct LxmlElement *)__pyx_v_self)->_c_node);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":744
 *         c_node = element._c_node
 *         if c_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."             # <<<<<<<<<<<<<<
 *         c_next = element._c_node.next
 *         tree.xmlUnlinkNode(c_node)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_53), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":745
 *         if c_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."
 *         c_next = element._c_node.next             # <<<<<<<<<<<<<<
 *         tree.xmlUnlinkNode(c_node)
 *         _moveTail(c_next, c_node)
 */
  __pyx_v_c_next = ((struct LxmlElement *)__pyx_v_element)->_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":746
 *             raise ValueError, u"Element is not a child of this node."
 *         c_next = element._c_node.next
 *         tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *         _moveTail(c_next, c_node)
 *         # fix namespace declarations
 */
  xmlUnlinkNode(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":747
 *         c_next = element._c_node.next
 *         tree.xmlUnlinkNode(c_node)
 *         _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 *         # fix namespace declarations
 *         moveNodeToDocument(self._doc, c_node.doc, c_node)
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":749
 *         _moveTail(c_next, c_node)
 *         # fix namespace declarations
 *         moveNodeToDocument(self._doc, c_node.doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def replace(self, _Element old_element not None,
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.remove");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":751
 *         moveNodeToDocument(self._doc, c_node.doc, c_node)
 * 
 *     def replace(self, _Element old_element not None,             # <<<<<<<<<<<<<<
 *                 _Element new_element not None):
 *         u"""replace(self, old_element, new_element)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_replace[] = "replace(self, old_element, new_element)\n\n        Replaces a subelement with the element passed as second argument.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_old_element = 0;
  struct LxmlElement *__pyx_v_new_element = 0;
  xmlNode *__pyx_v_c_old_node;
  xmlNode *__pyx_v_c_old_next;
  xmlNode *__pyx_v_c_new_node;
  xmlNode *__pyx_v_c_new_next;
  xmlDoc *__pyx_v_c_source_doc;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old_element,&__pyx_n_s__new_element,0};
  __Pyx_RefNannySetupContext("replace");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_element);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("replace", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "replace") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_old_element = ((struct LxmlElement *)values[0]);
    __pyx_v_new_element = ((struct LxmlElement *)values[1]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_old_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_new_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 1));
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("replace", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.replace");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_old_element);
  __Pyx_INCREF((PyObject *)__pyx_v_new_element);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old_element), __pyx_ptype_4lxml_5etree__Element, 0, "old_element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new_element), __pyx_ptype_4lxml_5etree__Element, 0, "new_element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":762
 *         cdef xmlNode* c_new_next
 *         cdef xmlDoc* c_source_doc
 *         c_old_node = old_element._c_node             # <<<<<<<<<<<<<<
 *         if c_old_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."
 */
  __pyx_v_c_old_node = __pyx_v_old_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":763
 *         cdef xmlDoc* c_source_doc
 *         c_old_node = old_element._c_node
 *         if c_old_node.parent is not self._c_node:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Element is not a child of this node."
 *         c_old_next = c_old_node.next
 */
  __pyx_t_1 = (__pyx_v_c_old_node->parent != ((struct LxmlElement *)__pyx_v_self)->_c_node);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":764
 *         c_old_node = old_element._c_node
 *         if c_old_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."             # <<<<<<<<<<<<<<
 *         c_old_next = c_old_node.next
 *         c_new_node = new_element._c_node
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_53), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":765
 *         if c_old_node.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."
 *         c_old_next = c_old_node.next             # <<<<<<<<<<<<<<
 *         c_new_node = new_element._c_node
 *         c_new_next = c_new_node.next
 */
  __pyx_v_c_old_next = __pyx_v_c_old_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":766
 *             raise ValueError, u"Element is not a child of this node."
 *         c_old_next = c_old_node.next
 *         c_new_node = new_element._c_node             # <<<<<<<<<<<<<<
 *         c_new_next = c_new_node.next
 *         c_source_doc = c_new_node.doc
 */
  __pyx_v_c_new_node = __pyx_v_new_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":767
 *         c_old_next = c_old_node.next
 *         c_new_node = new_element._c_node
 *         c_new_next = c_new_node.next             # <<<<<<<<<<<<<<
 *         c_source_doc = c_new_node.doc
 *         tree.xmlReplaceNode(c_old_node, c_new_node)
 */
  __pyx_v_c_new_next = __pyx_v_c_new_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":768
 *         c_new_node = new_element._c_node
 *         c_new_next = c_new_node.next
 *         c_source_doc = c_new_node.doc             # <<<<<<<<<<<<<<
 *         tree.xmlReplaceNode(c_old_node, c_new_node)
 *         _moveTail(c_new_next, c_new_node)
 */
  __pyx_v_c_source_doc = __pyx_v_c_new_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":769
 *         c_new_next = c_new_node.next
 *         c_source_doc = c_new_node.doc
 *         tree.xmlReplaceNode(c_old_node, c_new_node)             # <<<<<<<<<<<<<<
 *         _moveTail(c_new_next, c_new_node)
 *         _moveTail(c_old_next, c_old_node)
 */
  xmlReplaceNode(__pyx_v_c_old_node, __pyx_v_c_new_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":770
 *         c_source_doc = c_new_node.doc
 *         tree.xmlReplaceNode(c_old_node, c_new_node)
 *         _moveTail(c_new_next, c_new_node)             # <<<<<<<<<<<<<<
 *         _moveTail(c_old_next, c_old_node)
 *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_new_next, __pyx_v_c_new_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":771
 *         tree.xmlReplaceNode(c_old_node, c_new_node)
 *         _moveTail(c_new_next, c_new_node)
 *         _moveTail(c_old_next, c_old_node)             # <<<<<<<<<<<<<<
 *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)
 *         # fix namespace declarations
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_old_next, __pyx_v_c_old_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":772
 *         _moveTail(c_new_next, c_new_node)
 *         _moveTail(c_old_next, c_old_node)
 *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)             # <<<<<<<<<<<<<<
 *         # fix namespace declarations
 *         moveNodeToDocument(self._doc, c_old_node.doc, c_old_node)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_source_doc, __pyx_v_c_new_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":774
 *         moveNodeToDocument(self._doc, c_source_doc, c_new_node)
 *         # fix namespace declarations
 *         moveNodeToDocument(self._doc, c_old_node.doc, c_old_node)             # <<<<<<<<<<<<<<
 * 
 *     # PROPERTIES
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_old_node->doc, __pyx_v_c_old_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.replace");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_old_element);
  __Pyx_DECREF((PyObject *)__pyx_v_new_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":780
 *         u"""Element tag
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._tag is not None:
 *                 return self._tag
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":781
 *         """
 *         def __get__(self):
 *             if self._tag is not None:             # <<<<<<<<<<<<<<
 *                 return self._tag
 *             self._tag = _namespacedName(self._c_node)
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_tag != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":782
 *         def __get__(self):
 *             if self._tag is not None:
 *                 return self._tag             # <<<<<<<<<<<<<<
 *             self._tag = _namespacedName(self._c_node)
 *             return self._tag
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((struct LxmlElement *)__pyx_v_self)->_tag);
    __pyx_r = ((struct LxmlElement *)__pyx_v_self)->_tag;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":783
 *             if self._tag is not None:
 *                 return self._tag
 *             self._tag = _namespacedName(self._c_node)             # <<<<<<<<<<<<<<
 *             return self._tag
 * 
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(((struct LxmlElement *)__pyx_v_self)->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(((struct LxmlElement *)__pyx_v_self)->_tag);
  __Pyx_DECREF(((struct LxmlElement *)__pyx_v_self)->_tag);
  ((struct LxmlElement *)__pyx_v_self)->_tag = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":784
 *                 return self._tag
 *             self._tag = _namespacedName(self._c_node)
 *             return self._tag             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((struct LxmlElement *)__pyx_v_self)->_tag);
  __pyx_r = ((struct LxmlElement *)__pyx_v_self)->_tag;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.tag.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":786
 *             return self._tag
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             cdef _BaseParser parser
 *             ns, name = _getNsTag(value)
 */

static int __pyx_pf_4lxml_5etree_8_Element_3tag___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_8_Element_3tag___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_name;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":788
 *         def __set__(self, value):
 *             cdef _BaseParser parser
 *             ns, name = _getNsTag(value)             # <<<<<<<<<<<<<<
 *             parser = self._doc._parser
 *             if parser is not None and parser._for_html:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":789
 *             cdef _BaseParser parser
 *             ns, name = _getNsTag(value)
 *             parser = self._doc._parser             # <<<<<<<<<<<<<<
 *             if parser is not None and parser._for_html:
 *                 _htmlTagValidOrRaise(name)
 */
  __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_self)->_doc->_parser));
  __Pyx_DECREF(((PyObject *)__pyx_v_parser));
  __pyx_v_parser = ((struct LxmlElement *)__pyx_v_self)->_doc->_parser;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":790
 *             ns, name = _getNsTag(value)
 *             parser = self._doc._parser
 *             if parser is not None and parser._for_html:             # <<<<<<<<<<<<<<
 *                 _htmlTagValidOrRaise(name)
 *             else:
 */
  __pyx_t_5 = (((PyObject *)__pyx_v_parser) != Py_None);
  if (__pyx_t_5) {
    __pyx_t_6 = __pyx_v_parser->_for_html;
  } else {
    __pyx_t_6 = __pyx_t_5;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":791
 *             parser = self._doc._parser
 *             if parser is not None and parser._for_html:
 *                 _htmlTagValidOrRaise(name)             # <<<<<<<<<<<<<<
 *             else:
 *                 _tagValidOrRaise(name)
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__htmlTagValidOrRaise(__pyx_v_name); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":793
 *                 _htmlTagValidOrRaise(name)
 *             else:
 *                 _tagValidOrRaise(name)             # <<<<<<<<<<<<<<
 *             self._tag = value
 *             tree.xmlNodeSetName(self._c_node, _cstr(name))
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_name); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":794
 *             else:
 *                 _tagValidOrRaise(name)
 *             self._tag = value             # <<<<<<<<<<<<<<
 *             tree.xmlNodeSetName(self._c_node, _cstr(name))
 *             if ns is None:
 */
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(((struct LxmlElement *)__pyx_v_self)->_tag);
  __Pyx_DECREF(((struct LxmlElement *)__pyx_v_self)->_tag);
  ((struct LxmlElement *)__pyx_v_self)->_tag = __pyx_v_value;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":795
 *                 _tagValidOrRaise(name)
 *             self._tag = value
 *             tree.xmlNodeSetName(self._c_node, _cstr(name))             # <<<<<<<<<<<<<<
 *             if ns is None:
 *                 self._c_node.ns = NULL
 */
  xmlNodeSetName(((struct LxmlElement *)__pyx_v_self)->_c_node, PyString_AS_STRING(__pyx_v_name));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":796
 *             self._tag = value
 *             tree.xmlNodeSetName(self._c_node, _cstr(name))
 *             if ns is None:             # <<<<<<<<<<<<<<
 *                 self._c_node.ns = NULL
 *             else:
 */
  __pyx_t_6 = (__pyx_v_ns == Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":797
 *             tree.xmlNodeSetName(self._c_node, _cstr(name))
 *             if ns is None:
 *                 self._c_node.ns = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._doc._setNodeNs(self._c_node, _cstr(ns))
 */
    ((struct LxmlElement *)__pyx_v_self)->_c_node->ns = NULL;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":799
 *                 self._c_node.ns = NULL
 *             else:
 *                 self._doc._setNodeNs(self._c_node, _cstr(ns))             # <<<<<<<<<<<<<<
 * 
 *     property attrib:
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct LxmlElement *)__pyx_v_self)->_doc->__pyx_vtab)->_setNodeNs(((struct LxmlElement *)__pyx_v_self)->_doc, ((struct LxmlElement *)__pyx_v_self)->_c_node, PyString_AS_STRING(__pyx_v_ns)); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.tag.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":805
 *         keys(), values() and items() to access element attributes.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._attrib is None:
 *                 self._attrib = _Attrib(self)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":806
 *         """
 *         def __get__(self):
 *             if self._attrib is None:             # <<<<<<<<<<<<<<
 *                 self._attrib = _Attrib(self)
 *             return self._attrib
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_attrib == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":807
 *         def __get__(self):
 *             if self._attrib is None:
 *                 self._attrib = _Attrib(self)             # <<<<<<<<<<<<<<
 *             return self._attrib
 * 
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Attrib)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(((struct LxmlElement *)__pyx_v_self)->_attrib);
    __Pyx_DECREF(((struct LxmlElement *)__pyx_v_self)->_attrib);
    ((struct LxmlElement *)__pyx_v_self)->_attrib = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":808
 *             if self._attrib is None:
 *                 self._attrib = _Attrib(self)
 *             return self._attrib             # <<<<<<<<<<<<<<
 * 
 *     property text:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((struct LxmlElement *)__pyx_v_self)->_attrib);
  __pyx_r = ((struct LxmlElement *)__pyx_v_self)->_attrib;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.attrib.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":814
 *         the value None, if there was no text.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return _collectText(self._c_node.children)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_4text___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":815
 *         """
 *         def __get__(self):
 *             return _collectText(self._c_node.children)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectText(((struct LxmlElement *)__pyx_v_self)->_c_node->children); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.text.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":817
 *             return _collectText(self._c_node.children)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             if isinstance(value, QName):
 *                 value = python.PyUnicode_FromEncodedObject(
 */

static int __pyx_pf_4lxml_5etree_8_Element_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_8_Element_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_value);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":818
 * 
 *         def __set__(self, value):
 *             if isinstance(value, QName):             # <<<<<<<<<<<<<<
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_value, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":820
 *             if isinstance(value, QName):
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *             _setNodeText(self._c_node, value)
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__resolveQNameText(((struct LxmlElement *)__pyx_v_self), __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyUnicode_FromEncodedObject(__pyx_t_2, __pyx_k_20, __pyx_k__strict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":821
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')
 *             _setNodeText(self._c_node, value)             # <<<<<<<<<<<<<<
 * 
 *         # using 'del el.text' is the wrong thing to do
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__setNodeText(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_v_value); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.text.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":832
 *         there was no text.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return _collectText(self._c_node.next)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_4tail___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":833
 *         """
 *         def __get__(self):
 *             return _collectText(self._c_node.next)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectText(((struct LxmlElement *)__pyx_v_self)->_c_node->next); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.tail.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":835
 *             return _collectText(self._c_node.next)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             _setTailText(self._c_node, value)
 * 
 */

static int __pyx_pf_4lxml_5etree_8_Element_4tail___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_8_Element_4tail___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":836
 * 
 *         def __set__(self, value):
 *             _setTailText(self._c_node, value)             # <<<<<<<<<<<<<<
 * 
 *         # using 'del el.tail' is the wrong thing to do
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setTailText(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Element.tail.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":846
 *         u"""Namespace prefix or None.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":847
 *         """
 *         def __get__(self):
 *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_c_node->ns != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":848
 *         def __get__(self):
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
 *                     return funicode(self._c_node.ns.prefix)
 *             return None
 */
    __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_c_node->ns->prefix != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":849
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
 *             return None
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(((struct LxmlElement *)__pyx_v_self)->_c_node->ns->prefix); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":850
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     # not in ElementTree, read-only
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.prefix.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":856
 *         u"""Original line number as found by the parser or None if unknown.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef long line
 *             line = tree.xmlGetLineNo(self._c_node)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(PyObject *__pyx_v_self) {
  long __pyx_v_line;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":858
 *         def __get__(self):
 *             cdef long line
 *             line = tree.xmlGetLineNo(self._c_node)             # <<<<<<<<<<<<<<
 *             if line > 0:
 *                 return line
 */
  __pyx_v_line = xmlGetLineNo(((struct LxmlElement *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":859
 *             cdef long line
 *             line = tree.xmlGetLineNo(self._c_node)
 *             if line > 0:             # <<<<<<<<<<<<<<
 *                 return line
 *             else:
 */
  __pyx_t_1 = (__pyx_v_line > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":860
 *             line = tree.xmlGetLineNo(self._c_node)
 *             if line > 0:
 *                 return line             # <<<<<<<<<<<<<<
 *             else:
 *                 return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyInt_FromLong(__pyx_v_line); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":862
 *                 return line
 *             else:
 *                 return None             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, line):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.sourceline.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":864
 *                 return None
 * 
 *         def __set__(self, line):             # <<<<<<<<<<<<<<
 *             if line < 0:
 *                 self._c_node.line = 0
 */

static int __pyx_pf_4lxml_5etree_8_Element_10sourceline___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_line); /*proto*/
static int __pyx_pf_4lxml_5etree_8_Element_10sourceline___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_line) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  unsigned short __pyx_t_3;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_line);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":865
 * 
 *         def __set__(self, line):
 *             if line < 0:             # <<<<<<<<<<<<<<
 *                 self._c_node.line = 0
 *             else:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_line, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":866
 *         def __set__(self, line):
 *             if line < 0:
 *                 self._c_node.line = 0             # <<<<<<<<<<<<<<
 *             else:
 *                 self._c_node.line = line
 */
    ((struct LxmlElement *)__pyx_v_self)->_c_node->line = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":868
 *                 self._c_node.line = 0
 *             else:
 *                 self._c_node.line = line             # <<<<<<<<<<<<<<
 * 
 *     # not in ElementTree, read-only
 */
    __pyx_t_3 = __Pyx_PyInt_AsUnsignedShort(__pyx_v_line); if (unlikely((__pyx_t_3 == (unsigned short)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((struct LxmlElement *)__pyx_v_self)->_c_node->line = __pyx_t_3;
  }
  __pyx_L5:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.sourceline.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_line);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":874
 *         u"""Namespace prefix->URI mapping known in the context of this Element.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef xmlNode* c_node
 *             cdef xmlNs* c_ns
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(PyObject *__pyx_v_self) {
  xmlNode *__pyx_v_c_node;
  xmlNs *__pyx_v_c_ns;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":877
 *             cdef xmlNode* c_node
 *             cdef xmlNs* c_ns
 *             cdef dict nsmap = {}             # <<<<<<<<<<<<<<
 *             c_node = self._c_node
 *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_nsmap = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":878
 *             cdef xmlNs* c_ns
 *             cdef dict nsmap = {}
 *             c_node = self._c_node             # <<<<<<<<<<<<<<
 *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
 *                 c_ns = c_node.nsDef
 */
  __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_self)->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":879
 *             cdef dict nsmap = {}
 *             c_node = self._c_node
 *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                 c_ns = c_node.nsDef
 *                 while c_ns is not NULL:
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_node != NULL);
    if (__pyx_t_2) {
      __pyx_t_3 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    if (!__pyx_t_4) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":880
 *             c_node = self._c_node
 *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
 *                 c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
 *                 while c_ns is not NULL:
 *                     if c_ns.prefix is NULL:
 */
    __pyx_v_c_ns = __pyx_v_c_node->nsDef;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":881
 *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
 *                 c_ns = c_node.nsDef
 *                 while c_ns is not NULL:             # <<<<<<<<<<<<<<
 *                     if c_ns.prefix is NULL:
 *                         prefix = None
 */
    while (1) {
      __pyx_t_4 = (__pyx_v_c_ns != NULL);
      if (!__pyx_t_4) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":882
 *                 c_ns = c_node.nsDef
 *                 while c_ns is not NULL:
 *                     if c_ns.prefix is NULL:             # <<<<<<<<<<<<<<
 *                         prefix = None
 *                     else:
 */
      __pyx_t_4 = (__pyx_v_c_ns->prefix == NULL);
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":883
 *                 while c_ns is not NULL:
 *                     if c_ns.prefix is NULL:
 *                         prefix = None             # <<<<<<<<<<<<<<
 *                     else:
 *                         prefix = funicode(c_ns.prefix)
 */
        __Pyx_INCREF(Py_None);
        __Pyx_DECREF(__pyx_v_prefix);
        __pyx_v_prefix = Py_None;
        goto __pyx_L9;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":885
 *                         prefix = None
 *                     else:
 *                         prefix = funicode(c_ns.prefix)             # <<<<<<<<<<<<<<
 *                     if not python.PyDict_GetItem(nsmap, prefix):
 *                         nsmap[prefix] = funicode(c_ns.href)
 */
        __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_v_prefix);
        __pyx_v_prefix = __pyx_t_1;
        __pyx_t_1 = 0;
      }
      __pyx_L9:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":886
 *                     else:
 *                         prefix = funicode(c_ns.prefix)
 *                     if not python.PyDict_GetItem(nsmap, prefix):             # <<<<<<<<<<<<<<
 *                         nsmap[prefix] = funicode(c_ns.href)
 *                     c_ns = c_ns.next
 */
      __pyx_t_4 = (!(PyDict_GetItem(((PyObject *)__pyx_v_nsmap), __pyx_v_prefix) != 0));
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":887
 *                         prefix = funicode(c_ns.prefix)
 *                     if not python.PyDict_GetItem(nsmap, prefix):
 *                         nsmap[prefix] = funicode(c_ns.href)             # <<<<<<<<<<<<<<
 *                     c_ns = c_ns.next
 *                 c_node = c_node.parent
 */
        __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        if (PyDict_SetItem(((PyObject *)__pyx_v_nsmap), __pyx_v_prefix, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":888
 *                     if not python.PyDict_GetItem(nsmap, prefix):
 *                         nsmap[prefix] = funicode(c_ns.href)
 *                     c_ns = c_ns.next             # <<<<<<<<<<<<<<
 *                 c_node = c_node.parent
 *             return nsmap
 */
      __pyx_v_c_ns = __pyx_v_c_ns->next;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":889
 *                         nsmap[prefix] = funicode(c_ns.href)
 *                     c_ns = c_ns.next
 *                 c_node = c_node.parent             # <<<<<<<<<<<<<<
 *             return nsmap
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->parent;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":890
 *                     c_ns = c_ns.next
 *                 c_node = c_node.parent
 *             return nsmap             # <<<<<<<<<<<<<<
 * 
 *     # not in ElementTree, read-only
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_nsmap));
  __pyx_r = ((PyObject *)__pyx_v_nsmap);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.nsmap.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_nsmap);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":904
 *         Element, regardless of the document type (XML or HTML).
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef char* c_base
 *             c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Element_4base___get__(PyObject *__pyx_v_self) {
  char *__pyx_v_c_base;
  PyObject *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_base = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":906
 *         def __get__(self):
 *             cdef char* c_base
 *             c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node)             # <<<<<<<<<<<<<<
 *             if c_base is NULL:
 *                 if self._doc._c_doc.URL is NULL:
 */
  __pyx_v_c_base = xmlNodeGetBase(((struct LxmlElement *)__pyx_v_self)->_doc->_c_doc, ((struct LxmlElement *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":907
 *             cdef char* c_base
 *             c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node)
 *             if c_base is NULL:             # <<<<<<<<<<<<<<
 *                 if self._doc._c_doc.URL is NULL:
 *                     return None
 */
  __pyx_t_1 = (__pyx_v_c_base == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":908
 *             c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node)
 *             if c_base is NULL:
 *                 if self._doc._c_doc.URL is NULL:             # <<<<<<<<<<<<<<
 *                     return None
 *                 return _decodeFilename(self._doc._c_doc.URL)
 */
    __pyx_t_1 = (((struct LxmlElement *)__pyx_v_self)->_doc->_c_doc->URL == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":909
 *             if c_base is NULL:
 *                 if self._doc._c_doc.URL is NULL:
 *                     return None             # <<<<<<<<<<<<<<
 *                 return _decodeFilename(self._doc._c_doc.URL)
 *             base = _decodeFilename(c_base)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":910
 *                 if self._doc._c_doc.URL is NULL:
 *                     return None
 *                 return _decodeFilename(self._doc._c_doc.URL)             # <<<<<<<<<<<<<<
 *             base = _decodeFilename(c_base)
 *             tree.xmlFree(c_base)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(((struct LxmlElement *)__pyx_v_self)->_doc->_c_doc->URL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":911
 *                     return None
 *                 return _decodeFilename(self._doc._c_doc.URL)
 *             base = _decodeFilename(c_base)             # <<<<<<<<<<<<<<
 *             tree.xmlFree(c_base)
 *             return base
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_base); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_base);
  __pyx_v_base = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":912
 *                 return _decodeFilename(self._doc._c_doc.URL)
 *             base = _decodeFilename(c_base)
 *             tree.xmlFree(c_base)             # <<<<<<<<<<<<<<
 *             return base
 *         def __set__(self, url):
 */
  xmlFree(__pyx_v_c_base);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":913
 *             base = _decodeFilename(c_base)
 *             tree.xmlFree(c_base)
 *             return base             # <<<<<<<<<<<<<<
 *         def __set__(self, url):
 *             cdef char* c_base
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_base);
  __pyx_r = __pyx_v_base;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.base.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_base);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":914
 *             tree.xmlFree(c_base)
 *             return base
 *         def __set__(self, url):             # <<<<<<<<<<<<<<
 *             cdef char* c_base
 *             if url is None:
 */

static int __pyx_pf_4lxml_5etree_8_Element_4base___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_url); /*proto*/
static int __pyx_pf_4lxml_5etree_8_Element_4base___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_url) {
  char *__pyx_v_c_base;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_url);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":916
 *         def __set__(self, url):
 *             cdef char* c_base
 *             if url is None:             # <<<<<<<<<<<<<<
 *                 c_base = NULL
 *             else:
 */
  __pyx_t_1 = (__pyx_v_url == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":917
 *             cdef char* c_base
 *             if url is None:
 *                 c_base = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 url = _encodeFilename(url)
 */
    __pyx_v_c_base = NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":919
 *                 c_base = NULL
 *             else:
 *                 url = _encodeFilename(url)             # <<<<<<<<<<<<<<
 *                 c_base = _cstr(url)
 *             tree.xmlNodeSetBase(self._c_node, c_base)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":920
 *             else:
 *                 url = _encodeFilename(url)
 *                 c_base = _cstr(url)             # <<<<<<<<<<<<<<
 *             tree.xmlNodeSetBase(self._c_node, c_base)
 * 
 */
    __pyx_v_c_base = PyString_AS_STRING(__pyx_v_url);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":921
 *                 url = _encodeFilename(url)
 *                 c_base = _cstr(url)
 *             tree.xmlNodeSetBase(self._c_node, c_base)             # <<<<<<<<<<<<<<
 * 
 *     # ACCESSORS
 */
  xmlNodeSetBase(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_v_c_base);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.base.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":924
 * 
 *     # ACCESSORS
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         u"__repr__(self)"
 *         return u"<Element %s at %x>" % (self.tag, id(self))
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___repr__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___repr__[] = "__repr__(self)";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":926
 *     def __repr__(self):
 *         u"__repr__(self)"
 *         return u"<Element %s at %x>" % (self.tag, id(self))             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_builtin_id, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_54), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":928
 *         return u"<Element %s at %x>" % (self.tag, id(self))
 * 
 *     def __getitem__(self, x):             # <<<<<<<<<<<<<<
 *         u"""Returns the subelement at the given position or the requested
 *         slice.
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___getitem__[] = "Returns the subelement at the given position or the requested\n        slice.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
  xmlNode *__pyx_v_c_node;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_slicelength;
  Py_ssize_t __pyx_v_c;
  Py_ssize_t __pyx_v_i;
  _node_to_node_function __pyx_v_next_element;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_v_result = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":937
 *         cdef _node_to_node_function next_element
 *         cdef list result
 *         if python.PySlice_Check(x):             # <<<<<<<<<<<<<<
 *             # slicing
 *             if _isFullSlice(<python.slice>x):
 */
  __pyx_t_1 = PySlice_Check(__pyx_v_x);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":939
 *         if python.PySlice_Check(x):
 *             # slicing
 *             if _isFullSlice(<python.slice>x):             # <<<<<<<<<<<<<<
 *                 return _collectChildren(self)
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__isFullSlice(((PySliceObject *)__pyx_v_x));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":940
 *             # slicing
 *             if _isFullSlice(<python.slice>x):
 *                 return _collectChildren(self)             # <<<<<<<<<<<<<<
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __pyx_f_4lxml_5etree__collectChildren(((struct LxmlElement *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":941
 *             if _isFullSlice(<python.slice>x):
 *                 return _collectChildren(self)
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 return []
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__findChildSlice(((PySliceObject *)__pyx_v_x), ((struct LxmlElement *)__pyx_v_self)->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":942
 *                 return _collectChildren(self)
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 return []
 *             if step > 0:
 */
    __pyx_t_1 = (__pyx_v_c_node == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":943
 *             _findChildSlice(<python.slice>x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:
 *                 return []             # <<<<<<<<<<<<<<
 *             if step > 0:
 *                 next_element = _nextElement
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_r = ((PyObject *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":944
 *             if c_node is NULL:
 *                 return []
 *             if step > 0:             # <<<<<<<<<<<<<<
 *                 next_element = _nextElement
 *             else:
 */
    __pyx_t_1 = (__pyx_v_step > 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":945
 *                 return []
 *             if step > 0:
 *                 next_element = _nextElement             # <<<<<<<<<<<<<<
 *             else:
 *                 step = -step
 */
      __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":947
 *                 next_element = _nextElement
 *             else:
 *                 step = -step             # <<<<<<<<<<<<<<
 *                 next_element = _previousElement
 *             result = []
 */
      __pyx_v_step = (-__pyx_v_step);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":948
 *             else:
 *                 step = -step
 *                 next_element = _previousElement             # <<<<<<<<<<<<<<
 *             result = []
 *             c = 0
 */
      __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":949
 *                 step = -step
 *                 next_element = _previousElement
 *             result = []             # <<<<<<<<<<<<<<
 *             c = 0
 *             while c_node is not NULL and c < slicelength:
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_v_result));
    __pyx_v_result = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":950
 *                 next_element = _previousElement
 *             result = []
 *             c = 0             # <<<<<<<<<<<<<<
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_elementFactory(self._doc, c_node))
 */
    __pyx_v_c = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":951
 *             result = []
 *             c = 0
 *             while c_node is not NULL and c < slicelength:             # <<<<<<<<<<<<<<
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_node != NULL);
      if (__pyx_t_1) {
        __pyx_t_4 = (__pyx_v_c < __pyx_v_slicelength);
        __pyx_t_5 = __pyx_t_4;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      if (!__pyx_t_5) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":952
 *             c = 0
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_elementFactory(self._doc, c_node))             # <<<<<<<<<<<<<<
 *                 c = c + 1
 *                 for i from 0 <= i < step:
 */
      if (unlikely(__pyx_v_result == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_result), __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":953
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 */
      __pyx_v_c = (__pyx_v_c + 1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":954
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1
 *                 for i from 0 <= i < step:             # <<<<<<<<<<<<<<
 *                     c_node = next_element(c_node)
 *             return result
 */
      __pyx_t_6 = __pyx_v_step;
      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":955
 *                 c = c + 1
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)             # <<<<<<<<<<<<<<
 *             return result
 *         else:
 */
        __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":956
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 *             return result             # <<<<<<<<<<<<<<
 *         else:
 *             # indexing
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_result));
    __pyx_r = ((PyObject *)__pyx_v_result);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":959
 *         else:
 *             # indexing
 *             c_node = _findChild(self._c_node, x)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 */
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(((struct LxmlElement *)__pyx_v_self)->_c_node, __pyx_t_6);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":960
 *             # indexing
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 raise IndexError, u"list index out of range"
 *             return _elementFactory(self._doc, c_node)
 */
    __pyx_t_5 = (__pyx_v_c_node == NULL);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":961
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"             # <<<<<<<<<<<<<<
 *             return _elementFactory(self._doc, c_node)
 * 
 */
      __Pyx_Raise(__pyx_builtin_IndexError, ((PyObject *)__pyx_kp_u_50), 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":962
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 *             return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":964
 *             return _elementFactory(self._doc, c_node)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         u"""__len__(self)
 * 
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element___len__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___len__[] = "__len__(self)\n\n        Returns the number of subelements.\n        ";
static Py_ssize_t __pyx_pf_4lxml_5etree_8_Element___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannySetupContext("__len__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":969
 *         Returns the number of subelements.
 *         """
 *         return _countElements(self._c_node.children)             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
  __pyx_r = __pyx_f_4lxml_5etree__countElements(((struct LxmlElement *)__pyx_v_self)->_c_node->children);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":971
 *         return _countElements(self._c_node.children)
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         u"__nonzero__(self)"
 *         import warnings
 */

static int __pyx_pf_4lxml_5etree_8_Element___nonzero__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___nonzero__[] = "__nonzero__(self)";
static int __pyx_pf_4lxml_5etree_8_Element___nonzero__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_warnings;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__nonzero__");
  __pyx_v_warnings = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":973
 *     def __nonzero__(self):
 *         u"__nonzero__(self)"
 *         import warnings             # <<<<<<<<<<<<<<
 *         warnings.warn(
 *             u"The behavior of this method will change in future versions. "
 */
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__warnings), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_warnings);
  __pyx_v_warnings = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":974
 *         u"__nonzero__(self)"
 *         import warnings
 *         warnings.warn(             # <<<<<<<<<<<<<<
 *             u"The behavior of this method will change in future versions. "
 *             u"Use specific 'len(elem)' or 'elem is not None' test instead.",
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_warnings, __pyx_n_s__warn); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":978
 *             u"Use specific 'len(elem)' or 'elem is not None' test instead.",
 *             FutureWarning
 *             )             # <<<<<<<<<<<<<<
 *         # emulate old behaviour
 *         return _hasChild(self._c_node)
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_55));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_55));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_55));
  __Pyx_INCREF(__pyx_builtin_FutureWarning);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_builtin_FutureWarning);
  __Pyx_GIVEREF(__pyx_builtin_FutureWarning);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":980
 *             )
 *         # emulate old behaviour
 *         return _hasChild(self._c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, element):
 */
  __pyx_r = __pyx_f_4lxml_5etree__hasChild(((struct LxmlElement *)__pyx_v_self)->_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.__nonzero__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_warnings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":982
 *         return _hasChild(self._c_node)
 * 
 *     def __contains__(self, element):             # <<<<<<<<<<<<<<
 *         u"__contains__(self, element)"
 *         cdef xmlNode* c_node
 */

static int __pyx_pf_4lxml_5etree_8_Element___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___contains__[] = "__contains__(self, element)";
static int __pyx_pf_4lxml_5etree_8_Element___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__contains__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":985
 *         u"__contains__(self, element)"
 *         cdef xmlNode* c_node
 *         if not isinstance(element, _Element):             # <<<<<<<<<<<<<<
 *             return 0
 *         c_node = (<_Element>element)._c_node
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":986
 *         cdef xmlNode* c_node
 *         if not isinstance(element, _Element):
 *             return 0             # <<<<<<<<<<<<<<
 *         c_node = (<_Element>element)._c_node
 *         return c_node is not NULL and c_node.parent is self._c_node
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":987
 *         if not isinstance(element, _Element):
 *             return 0
 *         c_node = (<_Element>element)._c_node             # <<<<<<<<<<<<<<
 *         return c_node is not NULL and c_node.parent is self._c_node
 * 
 */
  __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_element)->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":988
 *             return 0
 *         c_node = (<_Element>element)._c_node
 *         return c_node is not NULL and c_node.parent is self._c_node             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_2 = (__pyx_v_c_node != NULL);
  if (__pyx_t_2) {
    __pyx_t_1 = (__pyx_v_c_node->parent == ((struct LxmlElement *)__pyx_v_self)->_c_node);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":990
 *         return c_node is not NULL and c_node.parent is self._c_node
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         u"__iter__(self)"
 *         return ElementChildIterator(self)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___iter__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___iter__[] = "__iter__(self)";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":992
 *     def __iter__(self):
 *         u"__iter__(self)"
 *         return ElementChildIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reversed__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementChildIterator)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":994
 *         return ElementChildIterator(self)
 * 
 *     def __reversed__(self):             # <<<<<<<<<<<<<<
 *         u"__reversed__(self)"
 *         return ElementChildIterator(self, reversed=True)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element___reversed__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element___reversed__[] = "__reversed__(self)";
static PyObject *__pyx_pf_4lxml_5etree_8_Element___reversed__(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__reversed__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":996
 *     def __reversed__(self):
 *         u"__reversed__(self)"
 *         return ElementChildIterator(self, reversed=True)             # <<<<<<<<<<<<<<
 * 
 *     def index(self, _Element child not None, start=None, stop=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__reversed), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementChildIterator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.__reversed__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":998
 *         return ElementChildIterator(self, reversed=True)
 * 
 *     def index(self, _Element child not None, start=None, stop=None):             # <<<<<<<<<<<<<<
 *         u"""index(self, child, start=None, stop=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_index[] = "index(self, child, start=None, stop=None)\n\n        Find the position of the child within the parent.\n\n        This method is not part of the original ElementTree API.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_index(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_child = 0;
  PyObject *__pyx_v_start = 0;
  PyObject *__pyx_v_stop = 0;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_l;
  Py_ssize_t __pyx_v_c_start;
  Py_ssize_t __pyx_v_c_stop;
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_start_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__child,&__pyx_n_s__start,&__pyx_n_s__stop,0};
  __Pyx_RefNannySetupContext("index");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__child);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stop);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "index") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_child = ((struct LxmlElement *)values[0]);
    __pyx_v_start = values[1];
    __pyx_v_stop = values[2];
  } else {
    __pyx_v_start = ((PyObject *)Py_None);
    __pyx_v_stop = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_stop = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_start = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_child = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.index");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_child);
  __Pyx_INCREF(__pyx_v_start);
  __Pyx_INCREF(__pyx_v_stop);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child), __pyx_ptype_4lxml_5etree__Element, 0, "child", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1009
 *         cdef xmlNode* c_child
 *         cdef xmlNode* c_start_node
 *         c_child = child._c_node             # <<<<<<<<<<<<<<
 *         if c_child.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."
 */
  __pyx_v_c_child = __pyx_v_child->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1010
 *         cdef xmlNode* c_start_node
 *         c_child = child._c_node
 *         if c_child.parent is not self._c_node:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Element is not a child of this node."
 * 
 */
  __pyx_t_1 = (__pyx_v_c_child->parent != ((struct LxmlElement *)__pyx_v_self)->_c_node);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1011
 *         c_child = child._c_node
 *         if c_child.parent is not self._c_node:
 *             raise ValueError, u"Element is not a child of this node."             # <<<<<<<<<<<<<<
 * 
 *         # handle the unbounded search straight away (normal case)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_53), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1014
 * 
 *         # handle the unbounded search straight away (normal case)
 *         if stop is None and (start is None or start == 0):             # <<<<<<<<<<<<<<
 *             k = 0
 *             c_child = c_child.prev
 */
  __pyx_t_1 = (__pyx_v_stop == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_start == Py_None);
    if (!__pyx_t_2) {
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_start, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_4;
    } else {
      __pyx_t_5 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_5;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1015
 *         # handle the unbounded search straight away (normal case)
 *         if stop is None and (start is None or start == 0):
 *             k = 0             # <<<<<<<<<<<<<<
 *             c_child = c_child.prev
 *             while c_child is not NULL:
 */
    __pyx_v_k = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1016
 *         if stop is None and (start is None or start == 0):
 *             k = 0
 *             c_child = c_child.prev             # <<<<<<<<<<<<<<
 *             while c_child is not NULL:
 *                 if _isElement(c_child):
 */
    __pyx_v_c_child = __pyx_v_c_child->prev;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1017
 *             k = 0
 *             c_child = c_child.prev
 *             while c_child is not NULL:             # <<<<<<<<<<<<<<
 *                 if _isElement(c_child):
 *                     k = k + 1
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_2) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1018
 *             c_child = c_child.prev
 *             while c_child is not NULL:
 *                 if _isElement(c_child):             # <<<<<<<<<<<<<<
 *                     k = k + 1
 *                 c_child = c_child.prev
 */
      __pyx_t_2 = _isElement(__pyx_v_c_child);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1019
 *             while c_child is not NULL:
 *                 if _isElement(c_child):
 *                     k = k + 1             # <<<<<<<<<<<<<<
 *                 c_child = c_child.prev
 *             return k
 */
        __pyx_v_k = (__pyx_v_k + 1);
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1020
 *                 if _isElement(c_child):
 *                     k = k + 1
 *                 c_child = c_child.prev             # <<<<<<<<<<<<<<
 *             return k
 * 
 */
      __pyx_v_c_child = __pyx_v_c_child->prev;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1021
 *                     k = k + 1
 *                 c_child = c_child.prev
 *             return k             # <<<<<<<<<<<<<<
 * 
 *         # check indices
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1024
 * 
 *         # check indices
 *         if start is None:             # <<<<<<<<<<<<<<
 *             c_start = 0
 *         else:
 */
  __pyx_t_2 = (__pyx_v_start == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1025
 *         # check indices
 *         if start is None:
 *             c_start = 0             # <<<<<<<<<<<<<<
 *         else:
 *             c_start = start
 */
    __pyx_v_c_start = 0;
    goto __pyx_L11;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1027
 *             c_start = 0
 *         else:
 *             c_start = start             # <<<<<<<<<<<<<<
 *         if stop is None:
 *             c_stop = 0
 */
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_start); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_start = __pyx_t_6;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1028
 *         else:
 *             c_start = start
 *         if stop is None:             # <<<<<<<<<<<<<<
 *             c_stop = 0
 *         else:
 */
  __pyx_t_2 = (__pyx_v_stop == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1029
 *             c_start = start
 *         if stop is None:
 *             c_stop = 0             # <<<<<<<<<<<<<<
 *         else:
 *             c_stop = stop
 */
    __pyx_v_c_stop = 0;
    goto __pyx_L12;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1031
 *             c_stop = 0
 *         else:
 *             c_stop = stop             # <<<<<<<<<<<<<<
 *             if c_stop == 0 or \
 *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
 */
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_stop); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_stop = __pyx_t_6;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1032
 *         else:
 *             c_stop = stop
 *             if c_stop == 0 or \             # <<<<<<<<<<<<<<
 *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
 *                 raise ValueError, u"list.index(x): x not in slice"
 */
    __pyx_t_2 = (__pyx_v_c_stop == 0);
    if (!__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1033
 *             c_stop = stop
 *             if c_stop == 0 or \
 *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):             # <<<<<<<<<<<<<<
 *                 raise ValueError, u"list.index(x): x not in slice"
 * 
 */
      __pyx_t_1 = (__pyx_v_c_start >= __pyx_v_c_stop);
      if (__pyx_t_1) {
        __pyx_t_5 = (__pyx_v_c_stop > 0);
        if (!__pyx_t_5) {
          __pyx_t_4 = (__pyx_v_c_start < 0);
          __pyx_t_7 = __pyx_t_4;
        } else {
          __pyx_t_7 = __pyx_t_5;
        }
        __pyx_t_5 = __pyx_t_7;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_5;
    } else {
      __pyx_t_1 = __pyx_t_2;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1034
 *             if c_stop == 0 or \
 *                    c_start >= c_stop and (c_stop > 0 or c_start < 0):
 *                 raise ValueError, u"list.index(x): x not in slice"             # <<<<<<<<<<<<<<
 * 
 *         # for negative slice indices, check slice before searching index
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_56), 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L13;
    }
    __pyx_L13:;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1037
 * 
 *         # for negative slice indices, check slice before searching index
 *         if c_start < 0 or c_stop < 0:             # <<<<<<<<<<<<<<
 *             # start from right, at most up to leftmost(c_start, c_stop)
 *             if c_start < c_stop:
 */
  __pyx_t_1 = (__pyx_v_c_start < 0);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_stop < 0);
    __pyx_t_5 = __pyx_t_2;
  } else {
    __pyx_t_5 = __pyx_t_1;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1039
 *         if c_start < 0 or c_stop < 0:
 *             # start from right, at most up to leftmost(c_start, c_stop)
 *             if c_start < c_stop:             # <<<<<<<<<<<<<<
 *                 k = -c_start
 *             else:
 */
    __pyx_t_5 = (__pyx_v_c_start < __pyx_v_c_stop);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1040
 *             # start from right, at most up to leftmost(c_start, c_stop)
 *             if c_start < c_stop:
 *                 k = -c_start             # <<<<<<<<<<<<<<
 *             else:
 *                 k = -c_stop
 */
      __pyx_v_k = (-__pyx_v_c_start);
      goto __pyx_L15;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1042
 *                 k = -c_start
 *             else:
 *                 k = -c_stop             # <<<<<<<<<<<<<<
 *             c_start_node = self._c_node.last
 *             l = 1
 */
      __pyx_v_k = (-__pyx_v_c_stop);
    }
    __pyx_L15:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1043
 *             else:
 *                 k = -c_stop
 *             c_start_node = self._c_node.last             # <<<<<<<<<<<<<<
 *             l = 1
 *             while c_start_node != c_child and l < k:
 */
    __pyx_v_c_start_node = ((struct LxmlElement *)__pyx_v_self)->_c_node->last;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1044
 *                 k = -c_stop
 *             c_start_node = self._c_node.last
 *             l = 1             # <<<<<<<<<<<<<<
 *             while c_start_node != c_child and l < k:
 *                 if _isElement(c_start_node):
 */
    __pyx_v_l = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1045
 *             c_start_node = self._c_node.last
 *             l = 1
 *             while c_start_node != c_child and l < k:             # <<<<<<<<<<<<<<
 *                 if _isElement(c_start_node):
 *                     l = l + 1
 */
    while (1) {
      __pyx_t_5 = (__pyx_v_c_start_node != __pyx_v_c_child);
      if (__pyx_t_5) {
        __pyx_t_1 = (__pyx_v_l < __pyx_v_k);
        __pyx_t_2 = __pyx_t_1;
      } else {
        __pyx_t_2 = __pyx_t_5;
      }
      if (!__pyx_t_2) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1046
 *             l = 1
 *             while c_start_node != c_child and l < k:
 *                 if _isElement(c_start_node):             # <<<<<<<<<<<<<<
 *                     l = l + 1
 *                 c_start_node = c_start_node.prev
 */
      __pyx_t_2 = _isElement(__pyx_v_c_start_node);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1047
 *             while c_start_node != c_child and l < k:
 *                 if _isElement(c_start_node):
 *                     l = l + 1             # <<<<<<<<<<<<<<
 *                 c_start_node = c_start_node.prev
 *             if c_start_node == c_child:
 */
        __pyx_v_l = (__pyx_v_l + 1);
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1048
 *                 if _isElement(c_start_node):
 *                     l = l + 1
 *                 c_start_node = c_start_node.prev             # <<<<<<<<<<<<<<
 *             if c_start_node == c_child:
 *                 # found! before slice end?
 */
      __pyx_v_c_start_node = __pyx_v_c_start_node->prev;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1049
 *                     l = l + 1
 *                 c_start_node = c_start_node.prev
 *             if c_start_node == c_child:             # <<<<<<<<<<<<<<
 *                 # found! before slice end?
 *                 if c_stop < 0 and l <= -c_stop:
 */
    __pyx_t_2 = (__pyx_v_c_start_node == __pyx_v_c_child);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1051
 *             if c_start_node == c_child:
 *                 # found! before slice end?
 *                 if c_stop < 0 and l <= -c_stop:             # <<<<<<<<<<<<<<
 *                     raise ValueError, u"list.index(x): x not in slice"
 *             elif c_start < 0:
 */
      __pyx_t_2 = (__pyx_v_c_stop < 0);
      if (__pyx_t_2) {
        __pyx_t_5 = (__pyx_v_l <= (-__pyx_v_c_stop));
        __pyx_t_1 = __pyx_t_5;
      } else {
        __pyx_t_1 = __pyx_t_2;
      }
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1052
 *                 # found! before slice end?
 *                 if c_stop < 0 and l <= -c_stop:
 *                     raise ValueError, u"list.index(x): x not in slice"             # <<<<<<<<<<<<<<
 *             elif c_start < 0:
 *                 raise ValueError, u"list.index(x): x not in slice"
 */
        __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_56), 0);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L20;
      }
      __pyx_L20:;
      goto __pyx_L19;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1053
 *                 if c_stop < 0 and l <= -c_stop:
 *                     raise ValueError, u"list.index(x): x not in slice"
 *             elif c_start < 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError, u"list.index(x): x not in slice"
 * 
 */
    __pyx_t_1 = (__pyx_v_c_start < 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1054
 *                     raise ValueError, u"list.index(x): x not in slice"
 *             elif c_start < 0:
 *                 raise ValueError, u"list.index(x): x not in slice"             # <<<<<<<<<<<<<<
 * 
 *         # now determine the index backwards from child
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_56), 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L19;
    }
    __pyx_L19:;
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1057
 * 
 *         # now determine the index backwards from child
 *         c_child = c_child.prev             # <<<<<<<<<<<<<<
 *         k = 0
 *         if c_stop > 0:
 */
  __pyx_v_c_child = __pyx_v_c_child->prev;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1058
 *         # now determine the index backwards from child
 *         c_child = c_child.prev
 *         k = 0             # <<<<<<<<<<<<<<
 *         if c_stop > 0:
 *             # we can optimize: stop after c_stop elements if not found
 */
  __pyx_v_k = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1059
 *         c_child = c_child.prev
 *         k = 0
 *         if c_stop > 0:             # <<<<<<<<<<<<<<
 *             # we can optimize: stop after c_stop elements if not found
 *             while c_child != NULL and k < c_stop:
 */
  __pyx_t_1 = (__pyx_v_c_stop > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1061
 *         if c_stop > 0:
 *             # we can optimize: stop after c_stop elements if not found
 *             while c_child != NULL and k < c_stop:             # <<<<<<<<<<<<<<
 *                 if _isElement(c_child):
 *                     k = k + 1
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_child != NULL);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_k < __pyx_v_c_stop);
        __pyx_t_5 = __pyx_t_2;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      if (!__pyx_t_5) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1062
 *             # we can optimize: stop after c_stop elements if not found
 *             while c_child != NULL and k < c_stop:
 *                 if _isElement(c_child):             # <<<<<<<<<<<<<<
 *                     k = k + 1
 *                 c_child = c_child.prev
 */
      __pyx_t_5 = _isElement(__pyx_v_c_child);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1063
 *             while c_child != NULL and k < c_stop:
 *                 if _isElement(c_child):
 *                     k = k + 1             # <<<<<<<<<<<<<<
 *                 c_child = c_child.prev
 *             if k < c_stop:
 */
        __pyx_v_k = (__pyx_v_k + 1);
        goto __pyx_L24;
      }
      __pyx_L24:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1064
 *                 if _isElement(c_child):
 *                     k = k + 1
 *                 c_child = c_child.prev             # <<<<<<<<<<<<<<
 *             if k < c_stop:
 *                 return k
 */
      __pyx_v_c_child = __pyx_v_c_child->prev;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1065
 *                     k = k + 1
 *                 c_child = c_child.prev
 *             if k < c_stop:             # <<<<<<<<<<<<<<
 *                 return k
 *         else:
 */
    __pyx_t_5 = (__pyx_v_k < __pyx_v_c_stop);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1066
 *                 c_child = c_child.prev
 *             if k < c_stop:
 *                 return k             # <<<<<<<<<<<<<<
 *         else:
 *             # traverse all
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
      goto __pyx_L25;
    }
    __pyx_L25:;
    goto __pyx_L21;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1069
 *         else:
 *             # traverse all
 *             while c_child != NULL:             # <<<<<<<<<<<<<<
 *                 if _isElement(c_child):
 *                     k = k + 1
 */
    while (1) {
      __pyx_t_5 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_5) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1070
 *             # traverse all
 *             while c_child != NULL:
 *                 if _isElement(c_child):             # <<<<<<<<<<<<<<
 *                     k = k + 1
 *                 c_child = c_child.prev
 */
      __pyx_t_5 = _isElement(__pyx_v_c_child);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1071
 *             while c_child != NULL:
 *                 if _isElement(c_child):
 *                     k = k + 1             # <<<<<<<<<<<<<<
 *                 c_child = c_child.prev
 *             if c_start > 0:
 */
        __pyx_v_k = (__pyx_v_k + 1);
        goto __pyx_L28;
      }
      __pyx_L28:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1072
 *                 if _isElement(c_child):
 *                     k = k + 1
 *                 c_child = c_child.prev             # <<<<<<<<<<<<<<
 *             if c_start > 0:
 *                 if k >= c_start:
 */
      __pyx_v_c_child = __pyx_v_c_child->prev;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1073
 *                     k = k + 1
 *                 c_child = c_child.prev
 *             if c_start > 0:             # <<<<<<<<<<<<<<
 *                 if k >= c_start:
 *                     return k
 */
    __pyx_t_5 = (__pyx_v_c_start > 0);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1074
 *                 c_child = c_child.prev
 *             if c_start > 0:
 *                 if k >= c_start:             # <<<<<<<<<<<<<<
 *                     return k
 *             else:
 */
      __pyx_t_5 = (__pyx_v_k >= __pyx_v_c_start);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1075
 *             if c_start > 0:
 *                 if k >= c_start:
 *                     return k             # <<<<<<<<<<<<<<
 *             else:
 *                 return k
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;
        goto __pyx_L30;
      }
      __pyx_L30:;
      goto __pyx_L29;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1077
 *                     return k
 *             else:
 *                 return k             # <<<<<<<<<<<<<<
 *         if c_start != 0 or c_stop != 0:
 *             raise ValueError, u"list.index(x): x not in slice"
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
    }
    __pyx_L29:;
  }
  __pyx_L21:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1078
 *             else:
 *                 return k
 *         if c_start != 0 or c_stop != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"list.index(x): x not in slice"
 *         else:
 */
  __pyx_t_5 = (__pyx_v_c_start != 0);
  if (!__pyx_t_5) {
    __pyx_t_1 = (__pyx_v_c_stop != 0);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_5;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1079
 *                 return k
 *         if c_start != 0 or c_stop != 0:
 *             raise ValueError, u"list.index(x): x not in slice"             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError, u"list.index(x): x not in list"
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_56), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L31;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1081
 *             raise ValueError, u"list.index(x): x not in slice"
 *         else:
 *             raise ValueError, u"list.index(x): x not in list"             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key, default=None):
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_57), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L31:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.index");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_child);
  __Pyx_DECREF(__pyx_v_start);
  __Pyx_DECREF(__pyx_v_stop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1083
 *             raise ValueError, u"list.index(x): x not in list"
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         u"""get(self, key, default=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_get[] = "get(self, key, default=None)\n\n        Gets an element attribute.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1088
 *         Gets an element attribute.
 *         """
 *         return _getAttributeValue(self, key, default)             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__getAttributeValue(((struct LxmlElement *)__pyx_v_self), __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1090
 *         return _getAttributeValue(self, key, default)
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         u"""keys(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_keys[] = "keys(self)\n\n        Gets a list of attribute names.  The names are returned in an\n        arbitrary order (just like for an ordinary Python dictionary).\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_keys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("keys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1096
 *         arbitrary order (just like for an ordinary Python dictionary).
 *         """
 *         return _collectAttributes(self._c_node, 1)             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct LxmlElement *)__pyx_v_self)->_c_node, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.keys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1098
 *         return _collectAttributes(self._c_node, 1)
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         u"""values(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_values[] = "values(self)\n\n        Gets element attribute values as a sequence of strings.  The\n        attributes are returned in an arbitrary order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_values(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("values");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1104
 *         attributes are returned in an arbitrary order.
 *         """
 *         return _collectAttributes(self._c_node, 2)             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct LxmlElement *)__pyx_v_self)->_c_node, 2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1106
 *         return _collectAttributes(self._c_node, 2)
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         u"""items(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_items[] = "items(self)\n\n        Gets element attributes, as a sequence. The attributes are returned in\n        an arbitrary order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("items");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1112
 *         an arbitrary order.
 *         """
 *         return _collectAttributes(self._c_node, 3)             # <<<<<<<<<<<<<<
 * 
 *     def getchildren(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct LxmlElement *)__pyx_v_self)->_c_node, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1114
 *         return _collectAttributes(self._c_node, 3)
 * 
 *     def getchildren(self):             # <<<<<<<<<<<<<<
 *         u"""getchildren(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getchildren(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getchildren[] = "getchildren(self)\n\n        Returns all direct children.  The elements are returned in document\n        order.\n\n        :deprecated: Note that this method has been deprecated as of\n          ElementTree 1.3 and lxml 2.0.  New code should use\n          ``list(element)`` or simply iterate over elements.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getchildren(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getchildren");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1124
 *           ``list(element)`` or simply iterate over elements.
 *         """
 *         return _collectChildren(self)             # <<<<<<<<<<<<<<
 * 
 *     def getparent(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectChildren(((struct LxmlElement *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.getchildren");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1126
 *         return _collectChildren(self)
 * 
 *     def getparent(self):             # <<<<<<<<<<<<<<
 *         u"""getparent(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getparent(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getparent[] = "getparent(self)\n\n        Returns the parent of this element or None for the root element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getparent(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("getparent");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1132
 *         """
 *         cdef xmlNode* c_node
 *         c_node = _parentElement(self._c_node)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__parentElement(((struct LxmlElement *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1133
 *         cdef xmlNode* c_node
 *         c_node = _parentElement(self._c_node)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(self._doc, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1134
 *         c_node = _parentElement(self._c_node)
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(self._doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1135
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def getnext(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.getparent");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1137
 *         return _elementFactory(self._doc, c_node)
 * 
 *     def getnext(self):             # <<<<<<<<<<<<<<
 *         u"""getnext(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getnext(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getnext[] = "getnext(self)\n\n        Returns the following sibling of this element or None.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getnext(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("getnext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1143
 *         """
 *         cdef xmlNode* c_node
 *         c_node = _nextElement(self._c_node)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(((struct LxmlElement *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1144
 *         cdef xmlNode* c_node
 *         c_node = _nextElement(self._c_node)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(self._doc, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1145
 *         c_node = _nextElement(self._c_node)
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(self._doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1146
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def getprevious(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.getnext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1148
 *         return _elementFactory(self._doc, c_node)
 * 
 *     def getprevious(self):             # <<<<<<<<<<<<<<
 *         u"""getprevious(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getprevious(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getprevious[] = "getprevious(self)\n\n        Returns the preceding sibling of this element or None.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getprevious(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("getprevious");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1154
 *         """
 *         cdef xmlNode* c_node
 *         c_node = _previousElement(self._c_node)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__previousElement(((struct LxmlElement *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1155
 *         cdef xmlNode* c_node
 *         c_node = _previousElement(self._c_node)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(self._doc, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1156
 *         c_node = _previousElement(self._c_node)
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(self._doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1157
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def itersiblings(self, tag=None, *, preceding=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlElement *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.getprevious");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1159
 *         return _elementFactory(self._doc, c_node)
 * 
 *     def itersiblings(self, tag=None, *, preceding=False):             # <<<<<<<<<<<<<<
 *         u"""itersiblings(self, tag=None, preceding=False)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_itersiblings(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_itersiblings[] = "itersiblings(self, tag=None, preceding=False)\n\n        Iterate over the following or preceding siblings of this element.\n\n        The direction is determined by the 'preceding' keyword which defaults\n        to False, i.e. forward iteration over the following siblings.  The\n        generated elements can be restricted to a specific tag name with the\n        'tag' keyword.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_itersiblings(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_preceding = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__preceding,0};
  __Pyx_RefNannySetupContext("itersiblings");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_58;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__preceding);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "itersiblings") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
    __pyx_v_preceding = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_preceding = __pyx_k_58;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("itersiblings", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.itersiblings");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1169
 *         'tag' keyword.
 *         """
 *         return SiblingsIterator(self, tag, preceding=preceding)             # <<<<<<<<<<<<<<
 * 
 *     def iterancestors(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__preceding), __pyx_v_preceding) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_SiblingsIterator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.itersiblings");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1171
 *         return SiblingsIterator(self, tag, preceding=preceding)
 * 
 *     def iterancestors(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""iterancestors(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterancestors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_iterancestors[] = "iterancestors(self, tag=None)\n\n        Iterate over the ancestors of this element (from parent to parent).\n\n        The generated elements can be restricted to a specific tag name with\n        the 'tag' keyword.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterancestors(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("iterancestors");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iterancestors") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iterancestors", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.iterancestors");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1179
 *         the 'tag' keyword.
 *         """
 *         return AncestorsIterator(self, tag)             # <<<<<<<<<<<<<<
 * 
 *     def iterdescendants(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_AncestorsIterator)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.iterancestors");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1181
 *         return AncestorsIterator(self, tag)
 * 
 *     def iterdescendants(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""iterdescendants(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterdescendants(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_iterdescendants[] = "iterdescendants(self, tag=None)\n\n        Iterate over the descendants of this element in document order.\n\n        As opposed to ``el.iter()``, this iterator does not yield the element\n        itself.  The generated elements can be restricted to a specific tag\n        name with the 'tag' keyword.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterdescendants(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("iterdescendants");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iterdescendants") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iterdescendants", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.iterdescendants");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1190
 *         name with the 'tag' keyword.
 *         """
 *         return ElementDepthFirstIterator(self, tag, inclusive=False)             # <<<<<<<<<<<<<<
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__inclusive), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.iterdescendants");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1192
 *         return ElementDepthFirstIterator(self, tag, inclusive=False)
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         u"""iterchildren(self, tag=None, reversed=False)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterchildren(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_iterchildren[] = "iterchildren(self, tag=None, reversed=False)\n\n        Iterate over the children of this element.\n\n        As opposed to using normal iteration on this element, the generated\n        elements can be restricted to a specific tag name with the 'tag'\n        keyword and reversed with the 'reversed' keyword.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterchildren(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_reversed = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__reversed,0};
  __Pyx_RefNannySetupContext("iterchildren");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_59;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reversed);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iterchildren") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
    __pyx_v_reversed = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_reversed = __pyx_k_59;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iterchildren", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.iterchildren");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1201
 *         keyword and reversed with the 'reversed' keyword.
 *         """
 *         return ElementChildIterator(self, tag, reversed=reversed)             # <<<<<<<<<<<<<<
 * 
 *     def getroottree(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__reversed), __pyx_v_reversed) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementChildIterator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.iterchildren");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1203
 *         return ElementChildIterator(self, tag, reversed=reversed)
 * 
 *     def getroottree(self):             # <<<<<<<<<<<<<<
 *         u"""getroottree(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getroottree(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getroottree[] = "getroottree(self)\n\n        Return an ElementTree for the root node of the document that\n        contains this element.\n\n        This is the same as following element.getparent() up the tree until it\n        returns None (for the root element) and then build an ElementTree for\n        the last parent that was returned.";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getroottree(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getroottree");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1212
 *         returns None (for the root element) and then build an ElementTree for
 *         the last parent that was returned."""
 *         return _elementTreeFactory(self._doc, None)             # <<<<<<<<<<<<<<
 * 
 *     def getiterator(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlElement *)__pyx_v_self)->_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.getroottree");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1214
 *         return _elementTreeFactory(self._doc, None)
 * 
 *     def getiterator(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""getiterator(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_getiterator(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_getiterator[] = "getiterator(self, tag=None)\n\n        Returns a sequence or iterator of all elements in the subtree in\n        document order (depth first pre-order), starting with this\n        element.\n\n        Can be restricted to find only elements with a specific tag\n        (pass ``tag=\"xyz\"``) or from a namespace (pass ``tag=\"{ns}*\"``).\n\n        You can also pass the Element, Comment, ProcessingInstruction and\n        Entity factory functions to look only for the specific element type.\n\n        :deprecated: Note that this method is deprecated as of\n          ElementTree 1.3 and lxml 2.0.  It returns an iterator in\n          lxml, which diverges from the original ElementTree\n          behaviour.  If you want an efficient iterator, use the\n          ``element.iter()`` method instead.  You should only use this\n          method in new code if you require backwards compatibility\n          with older versions of lxml or ElementTree.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_getiterator(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("getiterator");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "getiterator") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getiterator", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.getiterator");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1235
 *           with older versions of lxml or ElementTree.
 *         """
 *         return ElementDepthFirstIterator(self, tag)             # <<<<<<<<<<<<<<
 * 
 *     def iter(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.getiterator");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1237
 *         return ElementDepthFirstIterator(self, tag)
 * 
 *     def iter(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""iter(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_iter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_iter[] = "iter(self, tag=None)\n\n        Iterate over all elements in the subtree in document order (depth\n        first pre-order), starting with this element.\n\n        Can be restricted to find only elements with a specific tag\n        (pass ``tag=\"xyz\"``) or from a namespace (pass ``tag=\"{ns}*\"``).\n\n        You can also pass the Element, Comment, ProcessingInstruction and\n        Entity factory functions to look only for the specific element type.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_iter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("iter");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iter") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.iter");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1249
 *         Entity factory functions to look only for the specific element type.
 *         """
 *         return ElementDepthFirstIterator(self, tag)             # <<<<<<<<<<<<<<
 * 
 *     def itertext(self, tag=None, *, with_tail=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Element.iter");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1251
 *         return ElementDepthFirstIterator(self, tag)
 * 
 *     def itertext(self, tag=None, *, with_tail=True):             # <<<<<<<<<<<<<<
 *         u"""itertext(self, tag=None, with_tail=True)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_itertext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_itertext[] = "itertext(self, tag=None, with_tail=True)\n\n        Iterates over the text content of a subtree.\n\n        You can pass the ``tag`` keyword argument to restrict text content to\n        a specific tag name.\n\n        You can set the ``with_tail`` keyword argument to ``False`` to skip\n        over tail text.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_itertext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__with_tail,0};
  __Pyx_RefNannySetupContext("itertext");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_60;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "itertext") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
    __pyx_v_with_tail = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_with_tail = __pyx_k_60;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("itertext", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.itertext");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1262
 *         over tail text.
 *         """
 *         return ElementTextIterator(self, tag, with_tail=with_tail)             # <<<<<<<<<<<<<<
 * 
 *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__with_tail), __pyx_v_with_tail) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementTextIterator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.itertext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1264
 *         return ElementTextIterator(self, tag, with_tail=with_tail)
 * 
 *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
 *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_makeelement(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_makeelement[] = "makeelement(self, _tag, attrib=None, nsmap=None, **_extra)\n\n        Creates a new element associated with the same document.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_makeelement(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__tag = 0;
  PyObject *__pyx_v_attrib = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v__extra = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("makeelement");
  __pyx_v__extra = PyDict_New(); if (unlikely(!__pyx_v__extra)) return NULL;
  __Pyx_GOTREF(__pyx_v__extra);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___tag);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrib);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nsmap);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, PyTuple_GET_SIZE(__pyx_args), "makeelement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__tag = values[0];
    __pyx_v_attrib = values[1];
    __pyx_v_nsmap = values[2];
  } else {
    __pyx_v_attrib = ((PyObject *)Py_None);
    __pyx_v_nsmap = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_nsmap = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_attrib = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v__tag = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_AddTraceback("lxml.etree._Element.makeelement");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1269
 *         Creates a new element associated with the same document.
 *         """
 *         return _makeElement(_tag, NULL, self._doc, None, None, None,             # <<<<<<<<<<<<<<
 *                             attrib, nsmap, _extra)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1270
 *         """
 *         return _makeElement(_tag, NULL, self._doc, None, None, None,
 *                             attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
 * 
 *     def find(self, path):
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlElement *)__pyx_v_self)->_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Element.makeelement");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1272
 *                             attrib, nsmap, _extra)
 * 
 *     def find(self, path):             # <<<<<<<<<<<<<<
 *         u"""find(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_find(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_find[] = "find(self, path)\n\n        Finds the first matching subelement, by tag name or path.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_find(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("find");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1277
 *         Finds the first matching subelement, by tag name or path.
 *         """
 *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
 *             path = (<QName>path).text
 *         return _elementpath.find(self, path)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_path, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1278
 *         """
 *         if isinstance(path, QName):
 *             path = (<QName>path).text             # <<<<<<<<<<<<<<
 *         return _elementpath.find(self, path)
 * 
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text);
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1279
 *         if isinstance(path, QName):
 *             path = (<QName>path).text
 *         return _elementpath.find(self, path)             # <<<<<<<<<<<<<<
 * 
 *     def findtext(self, path, default=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s__find); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.find");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1281
 *         return _elementpath.find(self, path)
 * 
 *     def findtext(self, path, default=None):             # <<<<<<<<<<<<<<
 *         u"""findtext(self, path, default=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_findtext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_findtext[] = "findtext(self, path, default=None)\n\n        Finds text for the first matching subelement, by tag name or path.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_findtext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__path,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("findtext");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "findtext") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_path = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_path = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Element.findtext");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_default);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1286
 *         Finds text for the first matching subelement, by tag name or path.
 *         """
 *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
 *             path = (<QName>path).text
 *         return _elementpath.findtext(self, path, default)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_path, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1287
 *         """
 *         if isinstance(path, QName):
 *             path = (<QName>path).text             # <<<<<<<<<<<<<<
 *         return _elementpath.findtext(self, path, default)
 * 
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text);
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1288
 *         if isinstance(path, QName):
 *             path = (<QName>path).text
 *         return _elementpath.findtext(self, path, default)             # <<<<<<<<<<<<<<
 * 
 *     def findall(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s__findtext); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_default);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_default);
  __Pyx_GIVEREF(__pyx_v_default);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.findtext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1290
 *         return _elementpath.findtext(self, path, default)
 * 
 *     def findall(self, path):             # <<<<<<<<<<<<<<
 *         u"""findall(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_findall(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_findall[] = "findall(self, path)\n\n        Finds all matching subelements, by tag name or path.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_findall(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("findall");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1295
 *         Finds all matching subelements, by tag name or path.
 *         """
 *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
 *             path = (<QName>path).text
 *         return _elementpath.findall(self, path)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_path, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1296
 *         """
 *         if isinstance(path, QName):
 *             path = (<QName>path).text             # <<<<<<<<<<<<<<
 *         return _elementpath.findall(self, path)
 * 
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text);
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1297
 *         if isinstance(path, QName):
 *             path = (<QName>path).text
 *         return _elementpath.findall(self, path)             # <<<<<<<<<<<<<<
 * 
 *     def iterfind(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s__findall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.findall");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1299
 *         return _elementpath.findall(self, path)
 * 
 *     def iterfind(self, path):             # <<<<<<<<<<<<<<
 *         u"""iterfind(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterfind(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_iterfind[] = "iterfind(self, path)\n\n        Iterates over all matching subelements, by tag name or path.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_iterfind(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("iterfind");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1304
 *         Iterates over all matching subelements, by tag name or path.
 *         """
 *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
 *             path = (<QName>path).text
 *         return _elementpath.iterfind(self, path)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_path, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1305
 *         """
 *         if isinstance(path, QName):
 *             path = (<QName>path).text             # <<<<<<<<<<<<<<
 *         return _elementpath.iterfind(self, path)
 * 
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text);
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_path)->text;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1306
 *         if isinstance(path, QName):
 *             path = (<QName>path).text
 *         return _elementpath.iterfind(self, path)             # <<<<<<<<<<<<<<
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s__iterfind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Element.iterfind");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1308
 *         return _elementpath.iterfind(self, path)
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
 *               smart_strings=True, **_variables):
 *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Element_xpath(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8_Element_xpath[] = "xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)\n\n        Evaluate an xpath expression using the element as context node.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8_Element_xpath(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__path = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_smart_strings = 0;
  PyObject *__pyx_v__variables = 0;
  PyObject *__pyx_v_evaluator;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___path,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("xpath");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_61;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "xpath") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__path = values[0];
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__path = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_namespaces = ((PyObject *)Py_None);
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_smart_strings = __pyx_k_61;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree._Element.xpath");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_evaluator = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1314
 *         Evaluate an xpath expression using the element as context node.
 *         """
 *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *                                           extensions=extensions,
 *                                           smart_strings=smart_strings)
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1315
 *         """
 *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,
 *                                           extensions=extensions,             # <<<<<<<<<<<<<<
 *                                           smart_strings=smart_strings)
 *         return evaluator(_path, **_variables)
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1316
 *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,
 *                                           extensions=extensions,
 *                                           smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 *         return evaluator(_path, **_variables)
 * 
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPathElementEvaluator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_evaluator);
  __pyx_v_evaluator = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1317
 *                                           extensions=extensions,
 *                                           smart_strings=smart_strings)
 *         return evaluator(_path, **_variables)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v__path);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__path);
  __Pyx_GIVEREF(__pyx_v__path);
  __pyx_t_2 = __Pyx_PyEval_CallObjectWithKeywords(__pyx_v_evaluator, __pyx_t_3, __pyx_v__variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Element.xpath");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_DECREF(__pyx_v_evaluator);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1324
 *     cdef _Element NEW_ELEMENT "PY_NEW" (object t)
 * 
 * cdef _Element _elementFactory(_Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef _Element result
 *     result = getProxy(c_node)
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  struct LxmlElement *__pyx_v_result;
  PyObject *__pyx_v_element_class;
  struct LxmlElement *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_elementFactory");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_result = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element_class = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1326
 * cdef _Element _elementFactory(_Document doc, xmlNode* c_node):
 *     cdef _Element result
 *     result = getProxy(c_node)             # <<<<<<<<<<<<<<
 *     if result is not None:
 *         return result
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1327
 *     cdef _Element result
 *     result = getProxy(c_node)
 *     if result is not None:             # <<<<<<<<<<<<<<
 *         return result
 *     if c_node is NULL:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_result) != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1328
 *     result = getProxy(c_node)
 *     if result is not None:
 *         return result             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         return None
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_result));
    __pyx_r = __pyx_v_result;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1329
 *     if result is not None:
 *         return result
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
  __pyx_t_2 = (__pyx_v_c_node == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1330
 *         return result
 *     if c_node is NULL:
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     element_class = LOOKUP_ELEMENT_CLASS(
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct LxmlElement *)Py_None);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1333
 * 
 *     element_class = LOOKUP_ELEMENT_CLASS(
 *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)             # <<<<<<<<<<<<<<
 *     if hasProxy(c_node):
 *         # prevent re-entry race condition - we just called into Python
 */
  __pyx_t_1 = __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS(__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_element_class);
  __pyx_v_element_class = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1334
 *     element_class = LOOKUP_ELEMENT_CLASS(
 *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)
 *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
 *         # prevent re-entry race condition - we just called into Python
 *         return getProxy(c_node)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1336
 *     if hasProxy(c_node):
 *         # prevent re-entry race condition - we just called into Python
 *         return getProxy(c_node)             # <<<<<<<<<<<<<<
 *     result = NEW_ELEMENT(element_class)
 *     if hasProxy(c_node):
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = ((struct LxmlElement *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1337
 *         # prevent re-entry race condition - we just called into Python
 *         return getProxy(c_node)
 *     result = NEW_ELEMENT(element_class)             # <<<<<<<<<<<<<<
 *     if hasProxy(c_node):
 *         # prevent re-entry race condition - we just called into Python
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(__pyx_v_element_class)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1338
 *         return getProxy(c_node)
 *     result = NEW_ELEMENT(element_class)
 *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
 *         # prevent re-entry race condition - we just called into Python
 *         result._c_node = NULL
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1340
 *     if hasProxy(c_node):
 *         # prevent re-entry race condition - we just called into Python
 *         result._c_node = NULL             # <<<<<<<<<<<<<<
 *         return getProxy(c_node)
 * 
 */
    __pyx_v_result->_c_node = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1341
 *         # prevent re-entry race condition - we just called into Python
 *         result._c_node = NULL
 *         return getProxy(c_node)             # <<<<<<<<<<<<<<
 * 
 *     _registerProxy(result, doc, c_node)
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = ((struct LxmlElement *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1343
 *         return getProxy(c_node)
 * 
 *     _registerProxy(result, doc, c_node)             # <<<<<<<<<<<<<<
 *     if element_class is not _Element:
 *         result._init()
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__registerProxy(__pyx_v_result, __pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1344
 * 
 *     _registerProxy(result, doc, c_node)
 *     if element_class is not _Element:             # <<<<<<<<<<<<<<
 *         result._init()
 *     return result
 */
  __pyx_t_2 = (__pyx_v_element_class != ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element)));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1345
 *     _registerProxy(result, doc, c_node)
 *     if element_class is not _Element:
 *         result._init()             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s___init); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1346
 *     if element_class is not _Element:
 *         result._init()
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._elementFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_result);
  __Pyx_DECREF(__pyx_v_element_class);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1350
 * 
 * cdef class __ContentOnlyElement(_Element):
 *     cdef int _raiseImmutable(self) except -1:             # <<<<<<<<<<<<<<
 *         raise TypeError, u"this element does not have children or attributes"
 * 
 */

static  int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_raiseImmutable");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1351
 * cdef class __ContentOnlyElement(_Element):
 *     cdef int _raiseImmutable(self) except -1:
 *         raise TypeError, u"this element does not have children or attributes"             # <<<<<<<<<<<<<<
 * 
 *     def set(self, key, value):
 */
  __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_62), 0);
  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement._raiseImmutable");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1353
 *         raise TypeError, u"this element does not have children or attributes"
 * 
 *     def set(self, key, value):             # <<<<<<<<<<<<<<
 *         u"set(self, key, value)"
 *         self._raiseImmutable()
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_set[] = "set(self, key, value)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__value,0};
  __Pyx_RefNannySetupContext("set");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.set");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1355
 *     def set(self, key, value):
 *         u"set(self, key, value)"
 *         self._raiseImmutable()             # <<<<<<<<<<<<<<
 * 
 *     def append(self, value):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_vtab)->_raiseImmutable(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.set");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1357
 *         self._raiseImmutable()
 * 
 *     def append(self, value):             # <<<<<<<<<<<<<<
 *         u"append(self, value)"
 *         self._raiseImmutable()
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_append(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_append[] = "append(self, value)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_append(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("append");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1359
 *     def append(self, value):
 *         u"append(self, value)"
 *         self._raiseImmutable()             # <<<<<<<<<<<<<<
 * 
 *     def insert(self, index, value):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_vtab)->_raiseImmutable(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.append");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1361
 *         self._raiseImmutable()
 * 
 *     def insert(self, index, value):             # <<<<<<<<<<<<<<
 *         u"insert(self, index, value)"
 *         self._raiseImmutable()
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_insert[] = "insert(self, index, value)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__value,0};
  __Pyx_RefNannySetupContext("insert");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "insert") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_index = values[0];
    __pyx_v_value = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_index = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.insert");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1363
 *     def insert(self, index, value):
 *         u"insert(self, index, value)"
 *         self._raiseImmutable()             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, index, value):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_vtab)->_raiseImmutable(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.insert");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1365
 *         self._raiseImmutable()
 * 
 *     def __setitem__(self, index, value):             # <<<<<<<<<<<<<<
 *         u"__setitem__(self, index, value)"
 *         self._raiseImmutable()
 */

static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement___setitem__[] = "__setitem__(self, index, value)";
static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__setitem__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1367
 *     def __setitem__(self, index, value):
 *         u"__setitem__(self, index, value)"
 *         self._raiseImmutable()             # <<<<<<<<<<<<<<
 * 
 *     property attrib:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *)((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_vtab)->_raiseImmutable(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.__setitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1370
 * 
 *     property attrib:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return {}
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1371
 *     property attrib:
 *         def __get__(self):
 *             return {}             # <<<<<<<<<<<<<<
 * 
 *     property text:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.attrib.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1374
 * 
 *     property text:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._c_node.content is NULL:
 *                 return ''
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1375
 *     property text:
 *         def __get__(self):
 *             if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
 *                 return ''
 *             else:
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_base._c_node->content == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1376
 *         def __get__(self):
 *             if self._c_node.content is NULL:
 *                 return ''             # <<<<<<<<<<<<<<
 *             else:
 *                 return funicode(self._c_node.content)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
    __pyx_r = ((PyObject *)__pyx_kp_s_14);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1378
 *                 return ''
 *             else:
 *                 return funicode(self._c_node.content)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_base._c_node->content); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.text.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1380
 *                 return funicode(self._c_node.content)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             cdef tree.xmlDict* c_dict
 *             cdef char* c_text
 */

static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  char *__pyx_v_c_text;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_value);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1383
 *             cdef tree.xmlDict* c_dict
 *             cdef char* c_text
 *             if value is None:             # <<<<<<<<<<<<<<
 *                 c_text = NULL
 *             else:
 */
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1384
 *             cdef char* c_text
 *             if value is None:
 *                 c_text = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 value = _utf8(value)
 */
    __pyx_v_c_text = NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1386
 *                 c_text = NULL
 *             else:
 *                 value = _utf8(value)             # <<<<<<<<<<<<<<
 *                 c_text = _cstr(value)
 *             tree.xmlNodeSetContent(self._c_node, c_text)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1387
 *             else:
 *                 value = _utf8(value)
 *                 c_text = _cstr(value)             # <<<<<<<<<<<<<<
 *             tree.xmlNodeSetContent(self._c_node, c_text)
 * 
 */
    __pyx_v_c_text = PyString_AS_STRING(__pyx_v_value);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1388
 *                 value = _utf8(value)
 *                 c_text = _cstr(value)
 *             tree.xmlNodeSetContent(self._c_node, c_text)             # <<<<<<<<<<<<<<
 * 
 *     # ACCESSORS
 */
  xmlNodeSetContent(((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)__pyx_v_self)->__pyx_base._c_node, __pyx_v_c_text);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.text.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1391
 * 
 *     # ACCESSORS
 *     def __getitem__(self, x):             # <<<<<<<<<<<<<<
 *         u"__getitem__(self, x)"
 *         if python.PySlice_Check(x):
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement___getitem__[] = "__getitem__(self, x)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_x);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1393
 *     def __getitem__(self, x):
 *         u"__getitem__(self, x)"
 *         if python.PySlice_Check(x):             # <<<<<<<<<<<<<<
 *             return []
 *         else:
 */
  __pyx_t_1 = PySlice_Check(__pyx_v_x);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1394
 *         u"__getitem__(self, x)"
 *         if python.PySlice_Check(x):
 *             return []             # <<<<<<<<<<<<<<
 *         else:
 *             raise IndexError, u"list index out of range"
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_r = ((PyObject *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1396
 *             return []
 *         else:
 *             raise IndexError, u"list index out of range"             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
    __Pyx_Raise(__pyx_builtin_IndexError, ((PyObject *)__pyx_kp_u_50), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1398
 *             raise IndexError, u"list index out of range"
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         u"__len__(self)"
 *         return 0
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement___len__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement___len__[] = "__len__(self)";
static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannySetupContext("__len__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1400
 *     def __len__(self):
 *         u"__len__(self)"
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key, default=None):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1402
 *         return 0
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         u"get(self, key, default=None)"
 *         return None
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_get[] = "get(self, key, default=None)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1402; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1402; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1404
 *     def get(self, key, default=None):
 *         u"get(self, key, default=None)"
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1406
 *         return None
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         u"keys(self)"
 *         return []
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_keys[] = "keys(self)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_keys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("keys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1408
 *     def keys(self):
 *         u"keys(self)"
 *         return []             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.keys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1410
 *         return []
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         u"items(self)"
 *         return []
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_items[] = "items(self)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("items");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1412
 *     def items(self):
 *         u"items(self)"
 *         return []             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1414
 *         return []
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         u"values(self)"
 *         return []
 */

static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_20__ContentOnlyElement_values[] = "values(self)";
static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_values(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("values");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1416
 *     def values(self):
 *         u"values(self)"
 *         return []             # <<<<<<<<<<<<<<
 * 
 * cdef class _Comment(__ContentOnlyElement):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1420
 * cdef class _Comment(__ContentOnlyElement):
 *     property tag:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return Comment
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1421
 *     property tag:
 *         def __get__(self):
 *             return Comment             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__Comment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Comment.tag.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1423
 *             return Comment
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"<!--%s-->" % self.text
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1424
 * 
 *     def __repr__(self):
 *         return u"<!--%s-->" % self.text             # <<<<<<<<<<<<<<
 * 
 * cdef class _ProcessingInstruction(__ContentOnlyElement):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_63), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Comment.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1428
 * cdef class _ProcessingInstruction(__ContentOnlyElement):
 *     property tag:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return ProcessingInstruction
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1429
 *     property tag:
 *         def __get__(self):
 *             return ProcessingInstruction             # <<<<<<<<<<<<<<
 * 
 *     property target:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ProcessingInstruction.tag.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1433
 *     property target:
 *         # not in ElementTree
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return funicode(self._c_node.name)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1434
 *         # not in ElementTree
 *         def __get__(self):
 *             return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree__ProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ProcessingInstruction.target.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1436
 *             return funicode(self._c_node.name)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             value = _utf8(value)
 *             c_text = _cstr(value)
 */

static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_c_text;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_c_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1437
 * 
 *         def __set__(self, value):
 *             value = _utf8(value)             # <<<<<<<<<<<<<<
 *             c_text = _cstr(value)
 *             tree.xmlNodeSetName(self._c_node, c_text)
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_value);
  __pyx_v_value = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1438
 *         def __set__(self, value):
 *             value = _utf8(value)
 *             c_text = _cstr(value)             # <<<<<<<<<<<<<<
 *             tree.xmlNodeSetName(self._c_node, c_text)
 * 
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(PyString_AS_STRING(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(__pyx_v_c_text);
  __pyx_v_c_text = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1439
 *             value = _utf8(value)
 *             c_text = _cstr(value)
 *             tree.xmlNodeSetName(self._c_node, c_text)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_c_text); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  xmlNodeSetName(((struct __pyx_obj_4lxml_5etree__ProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base._c_node, __pyx_t_2);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ProcessingInstruction.target.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_c_text);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1441
 *             tree.xmlNodeSetName(self._c_node, c_text)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         text = self.text
 *         if text:
 */

static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_text;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__repr__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1442
 * 
 *     def __repr__(self):
 *         text = self.text             # <<<<<<<<<<<<<<
 *         if text:
 *             return u"<?%s %s?>" % (self.target, text)
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_text);
  __pyx_v_text = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1443
 *     def __repr__(self):
 *         text = self.text
 *         if text:             # <<<<<<<<<<<<<<
 *             return u"<?%s %s?>" % (self.target, text)
 *         else:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1444
 *         text = self.text
 *         if text:
 *             return u"<?%s %s?>" % (self.target, text)             # <<<<<<<<<<<<<<
 *         else:
 *             return u"<?%s?>" % self.target
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_text);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_text);
    __Pyx_GIVEREF(__pyx_v_text);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_65), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1446
 *             return u"<?%s %s?>" % (self.target, text)
 *         else:
 *             return u"<?%s?>" % self.target             # <<<<<<<<<<<<<<
 * 
 * cdef class _Entity(__ContentOnlyElement):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_66), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ProcessingInstruction.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1450
 * cdef class _Entity(__ContentOnlyElement):
 *     property tag:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return Entity
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1451
 *     property tag:
 *         def __get__(self):
 *             return Entity             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__Entity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Entity.tag.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1455
 *     property name:
 *         # not in ElementTree
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return funicode(self._c_node.name)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1456
 *         # not in ElementTree
 *         def __get__(self):
 *             return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree__Entity *)__pyx_v_self)->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Entity.name.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1458
 *             return funicode(self._c_node.name)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             value = _utf8(value)
 *             assert u'&' not in value and u';' not in value, \
 */

static int __pyx_pf_4lxml_5etree_7_Entity_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Entity_4name___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_c_text;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char *__pyx_t_5;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_c_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1459
 * 
 *         def __set__(self, value):
 *             value = _utf8(value)             # <<<<<<<<<<<<<<
 *             assert u'&' not in value and u';' not in value, \
 *                 u"Invalid entity name '%s'" % value
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_value);
  __pyx_v_value = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1460
 *         def __set__(self, value):
 *             value = _utf8(value)
 *             assert u'&' not in value and u';' not in value, \             # <<<<<<<<<<<<<<
 *                 u"Invalid entity name '%s'" % value
 *             c_text = _cstr(value)
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  __pyx_t_2 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_value, ((PyObject *)__pyx_kp_u_67)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    __pyx_t_3 = (__Pyx_NegateNonNeg(PySequence_Contains(__pyx_v_value, ((PyObject *)__pyx_kp_u_68)))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (unlikely(!__pyx_t_4)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1461
 *             value = _utf8(value)
 *             assert u'&' not in value and u';' not in value, \
 *                 u"Invalid entity name '%s'" % value             # <<<<<<<<<<<<<<
 *             c_text = _cstr(value)
 *             tree.xmlNodeSetName(self._c_node, c_text)
 */
    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_69), __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyErr_SetObject(PyExc_AssertionError, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1462
 *             assert u'&' not in value and u';' not in value, \
 *                 u"Invalid entity name '%s'" % value
 *             c_text = _cstr(value)             # <<<<<<<<<<<<<<
 *             tree.xmlNodeSetName(self._c_node, c_text)
 * 
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(PyString_AS_STRING(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(__pyx_v_c_text);
  __pyx_v_c_text = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1463
 *                 u"Invalid entity name '%s'" % value
 *             c_text = _cstr(value)
 *             tree.xmlNodeSetName(self._c_node, c_text)             # <<<<<<<<<<<<<<
 * 
 *     property text:
 */
  __pyx_t_5 = __Pyx_PyBytes_AsString(__pyx_v_c_text); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  xmlNodeSetName(((struct __pyx_obj_4lxml_5etree__Entity *)__pyx_v_self)->__pyx_base.__pyx_base._c_node, __pyx_t_5);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Entity.name.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_c_text);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1468
 *         # FIXME: should this be None or '&[VALUE];' or the resolved
 *         # entity value ?
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return u'&%s;' % funicode(self._c_node.name)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1469
 *         # entity value ?
 *         def __get__(self):
 *             return u'&%s;' % funicode(self._c_node.name)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree__Entity *)__pyx_v_self)->__pyx_base.__pyx_base._c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_70), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Entity.text.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1471
 *             return u'&%s;' % funicode(self._c_node.name)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"&%s;" % self.name
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1472
 * 
 *     def __repr__(self):
 *         return u"&%s;" % self.name             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_70), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Entity.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1495
 *     cdef readonly object localname
 *     cdef readonly object namespace
 *     def __init__(self, text_or_uri_or_element, tag=None):             # <<<<<<<<<<<<<<
 *         if not _isString(text_or_uri_or_element):
 *             if isinstance(text_or_uri_or_element, _Element):
 */

static int __pyx_pf_4lxml_5etree_5QName___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_5QName___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_text_or_uri_or_element = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_tag_utf;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_71,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_71);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_text_or_uri_or_element = values[0];
    __pyx_v_tag = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_text_or_uri_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.QName.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_text_or_uri_or_element);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1496
 *     cdef readonly object namespace
 *     def __init__(self, text_or_uri_or_element, tag=None):
 *         if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
 *             if isinstance(text_or_uri_or_element, _Element):
 *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
 */
  __pyx_t_1 = (!_isString(__pyx_v_text_or_uri_or_element));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1497
 *     def __init__(self, text_or_uri_or_element, tag=None):
 *         if not _isString(text_or_uri_or_element):
 *             if isinstance(text_or_uri_or_element, _Element):             # <<<<<<<<<<<<<<
 *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
 *                 if not _isString(text_or_uri_or_element):
 */
    __pyx_t_1 = PyObject_TypeCheck(__pyx_v_text_or_uri_or_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1498
 *         if not _isString(text_or_uri_or_element):
 *             if isinstance(text_or_uri_or_element, _Element):
 *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag             # <<<<<<<<<<<<<<
 *                 if not _isString(text_or_uri_or_element):
 *                     raise ValueError, ("Invalid input tag of type %r" %
 */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_text_or_uri_or_element, __pyx_n_s__tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_text_or_uri_or_element);
      __pyx_v_text_or_uri_or_element = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1499
 *             if isinstance(text_or_uri_or_element, _Element):
 *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
 *                 if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
 *                     raise ValueError, ("Invalid input tag of type %r" %
 *                                        type(text_or_uri_or_element))
 */
      __pyx_t_1 = (!_isString(__pyx_v_text_or_uri_or_element));
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1501
 *                 if not _isString(text_or_uri_or_element):
 *                     raise ValueError, ("Invalid input tag of type %r" %
 *                                        type(text_or_uri_or_element))             # <<<<<<<<<<<<<<
 *             elif isinstance(text_or_uri_or_element, QName):
 *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
 */
        __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_72), ((PyObject *)Py_TYPE(__pyx_v_text_or_uri_or_element))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_2, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1502
 *                     raise ValueError, ("Invalid input tag of type %r" %
 *                                        type(text_or_uri_or_element))
 *             elif isinstance(text_or_uri_or_element, QName):             # <<<<<<<<<<<<<<
 *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
 *             else:
 */
    __pyx_t_1 = PyObject_TypeCheck(__pyx_v_text_or_uri_or_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1503
 *                                        type(text_or_uri_or_element))
 *             elif isinstance(text_or_uri_or_element, QName):
 *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text             # <<<<<<<<<<<<<<
 *             else:
 *                 text_or_uri_or_element = unicode(text_or_uri_or_element)
 */
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_text_or_uri_or_element)->text);
      __Pyx_DECREF(__pyx_v_text_or_uri_or_element);
      __pyx_v_text_or_uri_or_element = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_text_or_uri_or_element)->text;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1505
 *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
 *             else:
 *                 text_or_uri_or_element = unicode(text_or_uri_or_element)             # <<<<<<<<<<<<<<
 * 
 *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
 */
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_text_or_uri_or_element);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_text_or_uri_or_element);
      __Pyx_GIVEREF(__pyx_v_text_or_uri_or_element);
      __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_text_or_uri_or_element);
      __pyx_v_text_or_uri_or_element = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1507
 *                 text_or_uri_or_element = unicode(text_or_uri_or_element)
 * 
 *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)             # <<<<<<<<<<<<<<
 *         if tag is not None:
 *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
    PyObject* tuple = __pyx_t_3;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag_utf);
    __pyx_v_tag_utf = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag_utf);
    __pyx_v_tag_utf = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1508
 * 
 *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
 *         if tag is not None:             # <<<<<<<<<<<<<<
 *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
 *             if ns_utf is None:
 */
  __pyx_t_1 = (__pyx_v_tag != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1510
 *         if tag is not None:
 *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
 *             if ns_utf is None:             # <<<<<<<<<<<<<<
 *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
 *             tag_utf = _utf8(tag)
 */
    __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1511
 *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
 *             if ns_utf is None:
 *                 ns_utf = tag_utf # case 1: namespace ended up as tag name             # <<<<<<<<<<<<<<
 *             tag_utf = _utf8(tag)
 *         _tagValidOrRaise(tag_utf)
 */
      __Pyx_INCREF(__pyx_v_tag_utf);
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_v_tag_utf;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1512
 *             if ns_utf is None:
 *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
 *             tag_utf = _utf8(tag)             # <<<<<<<<<<<<<<
 *         _tagValidOrRaise(tag_utf)
 *         self.localname = python.PyUnicode_FromEncodedObject(
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_tag_utf);
    __pyx_v_tag_utf = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1513
 *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
 *             tag_utf = _utf8(tag)
 *         _tagValidOrRaise(tag_utf)             # <<<<<<<<<<<<<<
 *         self.localname = python.PyUnicode_FromEncodedObject(
 *             tag_utf, 'UTF-8', NULL)
 */
  __pyx_t_6 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_tag_utf); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1515
 *         _tagValidOrRaise(tag_utf)
 *         self.localname = python.PyUnicode_FromEncodedObject(
 *             tag_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *         if ns_utf is None:
 *             self.namespace = None
 */
  __pyx_t_3 = PyUnicode_FromEncodedObject(__pyx_v_tag_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1514
 *             tag_utf = _utf8(tag)
 *         _tagValidOrRaise(tag_utf)
 *         self.localname = python.PyUnicode_FromEncodedObject(             # <<<<<<<<<<<<<<
 *             tag_utf, 'UTF-8', NULL)
 *         if ns_utf is None:
 */
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
  ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1516
 *         self.localname = python.PyUnicode_FromEncodedObject(
 *             tag_utf, 'UTF-8', NULL)
 *         if ns_utf is None:             # <<<<<<<<<<<<<<
 *             self.namespace = None
 *             self.text = self.localname
 */
  __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1517
 *             tag_utf, 'UTF-8', NULL)
 *         if ns_utf is None:
 *             self.namespace = None             # <<<<<<<<<<<<<<
 *             self.text = self.localname
 *         else:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace = Py_None;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1518
 *         if ns_utf is None:
 *             self.namespace = None
 *             self.text = self.localname             # <<<<<<<<<<<<<<
 *         else:
 *             self.namespace = python.PyUnicode_FromEncodedObject(
 */
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
    __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text);
    ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname;
    goto __pyx_L11;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1521
 *         else:
 *             self.namespace = python.PyUnicode_FromEncodedObject(
 *                 ns_utf, 'UTF-8', NULL)             # <<<<<<<<<<<<<<
 *             self.text = u"{%s}%s" % (self.namespace, self.localname)
 *     def __str__(self):
 */
    __pyx_t_3 = PyUnicode_FromEncodedObject(__pyx_v_ns_utf, __pyx_k_20, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1520
 *             self.text = self.localname
 *         else:
 *             self.namespace = python.PyUnicode_FromEncodedObject(             # <<<<<<<<<<<<<<
 *                 ns_utf, 'UTF-8', NULL)
 *             self.text = u"{%s}%s" % (self.namespace, self.localname)
 */
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1522
 *             self.namespace = python.PyUnicode_FromEncodedObject(
 *                 ns_utf, 'UTF-8', NULL)
 *             self.text = u"{%s}%s" % (self.namespace, self.localname)             # <<<<<<<<<<<<<<
 *     def __str__(self):
 *         return self.text
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->namespace);
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
    __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->localname);
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_27), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text);
    ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L11:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.QName.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_tag_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_text_or_uri_or_element);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1523
 *                 ns_utf, 'UTF-8', NULL)
 *             self.text = u"{%s}%s" % (self.namespace, self.localname)
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         return self.text
 *     def __hash__(self):
 */

static PyObject *__pyx_pf_4lxml_5etree_5QName___str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_5QName___str__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__str__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1524
 *             self.text = u"{%s}%s" % (self.namespace, self.localname)
 *     def __str__(self):
 *         return self.text             # <<<<<<<<<<<<<<
 *     def __hash__(self):
 *         return self.text.__hash__()
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text);
  __pyx_r = ((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1525
 *     def __str__(self):
 *         return self.text
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return self.text.__hash__()
 *     def __richcmp__(one, other, int op):
 */

static long __pyx_pf_4lxml_5etree_5QName___hash__(PyObject *__pyx_v_self); /*proto*/
static long __pyx_pf_4lxml_5etree_5QName___hash__(PyObject *__pyx_v_self) {
  long __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  long __pyx_t_3;
  __Pyx_RefNannySetupContext("__hash__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1526
 *         return self.text
 *     def __hash__(self):
 *         return self.text.__hash__()             # <<<<<<<<<<<<<<
 *     def __richcmp__(one, other, int op):
 *         if not _isString(one):
 */
  __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree_QName *)__pyx_v_self)->text, __pyx_n_s____hash__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_AsLong(__pyx_t_2); if (unlikely((__pyx_t_3 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.QName.__hash__");
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1527
 *     def __hash__(self):
 *         return self.text.__hash__()
 *     def __richcmp__(one, other, int op):             # <<<<<<<<<<<<<<
 *         if not _isString(one):
 *             one = unicode(one)
 */

static PyObject *__pyx_pf_4lxml_5etree_5QName___richcmp__(PyObject *__pyx_v_one, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_5QName___richcmp__(PyObject *__pyx_v_one, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__richcmp__");
  __Pyx_INCREF(__pyx_v_one);
  __Pyx_INCREF(__pyx_v_other);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1528
 *         return self.text.__hash__()
 *     def __richcmp__(one, other, int op):
 *         if not _isString(one):             # <<<<<<<<<<<<<<
 *             one = unicode(one)
 *         if not _isString(other):
 */
  __pyx_t_1 = (!_isString(__pyx_v_one));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1529
 *     def __richcmp__(one, other, int op):
 *         if not _isString(one):
 *             one = unicode(one)             # <<<<<<<<<<<<<<
 *         if not _isString(other):
 *             other = unicode(other)
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_one);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_one);
    __Pyx_GIVEREF(__pyx_v_one);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_one);
    __pyx_v_one = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1530
 *         if not _isString(one):
 *             one = unicode(one)
 *         if not _isString(other):             # <<<<<<<<<<<<<<
 *             other = unicode(other)
 *         return python.PyObject_RichCompare(one, other, op)
 */
  __pyx_t_1 = (!_isString(__pyx_v_other));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1531
 *             one = unicode(one)
 *         if not _isString(other):
 *             other = unicode(other)             # <<<<<<<<<<<<<<
 *         return python.PyObject_RichCompare(one, other, op)
 * 
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_other);
    __Pyx_GIVEREF(__pyx_v_other);
    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_other);
    __pyx_v_other = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1532
 *         if not _isString(other):
 *             other = unicode(other)
 *         return python.PyObject_RichCompare(one, other, op)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_one, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.QName.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_one);
  __Pyx_DECREF(__pyx_v_other);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1544
 *     # to honour tree restructuring.  _doc can happily be None!
 * 
 *     cdef _assertHasRoot(self):             # <<<<<<<<<<<<<<
 *         u"""We have to take care here: the document may not have a root node!
 *         This can happen if ElementTree() is called without any argument and
 */

static  PyObject *__pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElementTree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_assertHasRoot");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1550
 *         the caller program.
 *         """
 *         assert self._context_node is not None, \             # <<<<<<<<<<<<<<
 *                u"ElementTree not initialized, missing root"
 * 
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
  if (unlikely(!__pyx_t_1)) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_73));
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree._assertHasRoot");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1553
 *                u"ElementTree not initialized, missing root"
 * 
 *     def parse(self, source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *         u"""parse(self, source, parser=None, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_parse[] = "parse(self, source, parser=None, base_url=None)\n\n        Updates self with the content of source and returns its root\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc = 0;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("parse");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "parse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_source = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_source = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.parse");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1558
 *         Updates self with the content of source and returns its root
 *         """
 *         cdef _Document doc = None             # <<<<<<<<<<<<<<
 *         try:
 *             doc = _parseDocument(source, parser, base_url)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1559
 *         """
 *         cdef _Document doc = None
 *         try:             # <<<<<<<<<<<<<<
 *             doc = _parseDocument(source, parser, base_url)
 *             self._context_node = doc.getroot()
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1560
 *         cdef _Document doc = None
 *         try:
 *             doc = _parseDocument(source, parser, base_url)             # <<<<<<<<<<<<<<
 *             self._context_node = doc.getroot()
 *             if self._context_node is None:
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1560; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1561
 *         try:
 *             doc = _parseDocument(source, parser, base_url)
 *             self._context_node = doc.getroot()             # <<<<<<<<<<<<<<
 *             if self._context_node is None:
 *                 self._doc = doc
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(((struct LxmlElementTree *)__pyx_v_self)->_context_node);
      __Pyx_DECREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
      ((struct LxmlElementTree *)__pyx_v_self)->_context_node = ((struct LxmlElement *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1562
 *             doc = _parseDocument(source, parser, base_url)
 *             self._context_node = doc.getroot()
 *             if self._context_node is None:             # <<<<<<<<<<<<<<
 *                 self._doc = doc
 *         except _TargetParserResult, result_container:
 */
      __pyx_t_2 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node) == Py_None);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1563
 *             self._context_node = doc.getroot()
 *             if self._context_node is None:
 *                 self._doc = doc             # <<<<<<<<<<<<<<
 *         except _TargetParserResult, result_container:
 *             # raises a TypeError if we don't get an _Element
 */
        __Pyx_INCREF(((PyObject *)__pyx_v_doc));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
        __Pyx_GOTREF(((struct LxmlElementTree *)__pyx_v_self)->_doc);
        __Pyx_DECREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc));
        ((struct LxmlElementTree *)__pyx_v_self)->_doc = __pyx_v_doc;
        goto __pyx_L14;
      }
      __pyx_L14:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1564
 *             if self._context_node is None:
 *                 self._doc = doc
 *         except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *             # raises a TypeError if we don't get an _Element
 *             self._context_node = result_container.result
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree._ElementTree.parse");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_result_container);
      __pyx_v_result_container = __pyx_t_4;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1566
 *         except _TargetParserResult, result_container:
 *             # raises a TypeError if we don't get an _Element
 *             self._context_node = result_container.result             # <<<<<<<<<<<<<<
 *         return self._context_node
 * 
 */
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_GOTREF(((struct LxmlElementTree *)__pyx_v_self)->_context_node);
      __Pyx_DECREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
      ((struct LxmlElementTree *)__pyx_v_self)->_context_node = ((struct LxmlElement *)__pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1567
 *             # raises a TypeError if we don't get an _Element
 *             self._context_node = result_container.result
 *         return self._context_node             # <<<<<<<<<<<<<<
 * 
 *     def _setroot(self, _Element root not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  __pyx_r = ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._ElementTree.parse");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1569
 *         return self._context_node
 * 
 *     def _setroot(self, _Element root not None):             # <<<<<<<<<<<<<<
 *         u"""_setroot(self, root)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree__setroot(PyObject *__pyx_v_self, PyObject *__pyx_v_root); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree__setroot[] = "_setroot(self, root)\n\n        Relocate the ElementTree to a new root node.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree__setroot(PyObject *__pyx_v_self, PyObject *__pyx_v_root) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_setroot");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_root);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_root), __pyx_ptype_4lxml_5etree__Element, 0, "root", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1574
 *         Relocate the ElementTree to a new root node.
 *         """
 *         if root._c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *             raise TypeError, u"Only elements can be the root of an ElementTree"
 *         self._context_node = root
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_root)->_c_node->type != XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1575
 *         """
 *         if root._c_node.type != tree.XML_ELEMENT_NODE:
 *             raise TypeError, u"Only elements can be the root of an ElementTree"             # <<<<<<<<<<<<<<
 *         self._context_node = root
 *         self._doc = None
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_74), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1576
 *         if root._c_node.type != tree.XML_ELEMENT_NODE:
 *             raise TypeError, u"Only elements can be the root of an ElementTree"
 *         self._context_node = root             # <<<<<<<<<<<<<<
 *         self._doc = None
 * 
 */
  __Pyx_INCREF(__pyx_v_root);
  __Pyx_GIVEREF(__pyx_v_root);
  __Pyx_GOTREF(((struct LxmlElementTree *)__pyx_v_self)->_context_node);
  __Pyx_DECREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  ((struct LxmlElementTree *)__pyx_v_self)->_context_node = ((struct LxmlElement *)__pyx_v_root);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1577
 *             raise TypeError, u"Only elements can be the root of an ElementTree"
 *         self._context_node = root
 *         self._doc = None             # <<<<<<<<<<<<<<
 * 
 *     def getroot(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct LxmlElementTree *)__pyx_v_self)->_doc);
  __Pyx_DECREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc));
  ((struct LxmlElementTree *)__pyx_v_self)->_doc = ((struct LxmlDocument *)Py_None);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree._setroot");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_root);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1579
 *         self._doc = None
 * 
 *     def getroot(self):             # <<<<<<<<<<<<<<
 *         u"""getroot(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getroot(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_getroot[] = "getroot(self)\n\n        Gets the root element for this tree.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getroot(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("getroot");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1584
 *         Gets the root element for this tree.
 *         """
 *         return self._context_node             # <<<<<<<<<<<<<<
 * 
 *     def __copy__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  __pyx_r = ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1586
 *         return self._context_node
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return _elementTreeFactory(self._doc, self._context_node)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree___copy__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree___copy__(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__copy__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1587
 * 
 *     def __copy__(self):
 *         return _elementTreeFactory(self._doc, self._context_node)             # <<<<<<<<<<<<<<
 * 
 *     def __deepcopy__(self, memo):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlElementTree *)__pyx_v_self)->_doc, ((struct LxmlElementTree *)__pyx_v_self)->_context_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ElementTree.__copy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1589
 *         return _elementTreeFactory(self._doc, self._context_node)
 * 
 *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
 *         cdef _Element root
 *         cdef _Document doc
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo) {
  struct LxmlElement *__pyx_v_root;
  struct LxmlDocument *__pyx_v_doc;
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__deepcopy__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_memo);
  __pyx_v_root = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1593
 *         cdef _Document doc
 *         cdef xmlDoc* c_doc
 *         if self._context_node is not None:             # <<<<<<<<<<<<<<
 *             root = self._context_node.__copy__()
 *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
 */
  __pyx_t_1 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1594
 *         cdef xmlDoc* c_doc
 *         if self._context_node is not None:
 *             root = self._context_node.__copy__()             # <<<<<<<<<<<<<<
 *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
 *             doc = root._doc
 */
    __pyx_t_2 = PyObject_GetAttr(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node), __pyx_n_s____copy__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_root));
    __pyx_v_root = ((struct LxmlElement *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1595
 *         if self._context_node is not None:
 *             root = self._context_node.__copy__()
 *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)             # <<<<<<<<<<<<<<
 *             doc = root._doc
 *             c_doc = self._context_node._doc._c_doc
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__copyNonElementSiblings(((struct LxmlElementTree *)__pyx_v_self)->_context_node->_c_node, __pyx_v_root->_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1596
 *             root = self._context_node.__copy__()
 *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
 *             doc = root._doc             # <<<<<<<<<<<<<<
 *             c_doc = self._context_node._doc._c_doc
 *             if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL:
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_root->_doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = __pyx_v_root->_doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1597
 *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
 *             doc = root._doc
 *             c_doc = self._context_node._doc._c_doc             # <<<<<<<<<<<<<<
 *             if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL:
 *                 doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset)
 */
    __pyx_v_c_doc = ((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc->_c_doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1598
 *             doc = root._doc
 *             c_doc = self._context_node._doc._c_doc
 *             if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL:             # <<<<<<<<<<<<<<
 *                 doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset)
 *                 if doc._c_doc.intSubset is NULL:
 */
    __pyx_t_1 = (__pyx_v_c_doc->intSubset != NULL);
    if (__pyx_t_1) {
      __pyx_t_5 = (__pyx_v_doc->_c_doc->intSubset == NULL);
      __pyx_t_6 = __pyx_t_5;
    } else {
      __pyx_t_6 = __pyx_t_1;
    }
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1599
 *             c_doc = self._context_node._doc._c_doc
 *             if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL:
 *                 doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset)             # <<<<<<<<<<<<<<
 *                 if doc._c_doc.intSubset is NULL:
 *                     python.PyErr_NoMemory()
 */
      __pyx_v_doc->_c_doc->intSubset = xmlCopyDtd(__pyx_v_c_doc->intSubset);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1600
 *             if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL:
 *                 doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset)
 *                 if doc._c_doc.intSubset is NULL:             # <<<<<<<<<<<<<<
 *                     python.PyErr_NoMemory()
 *             if c_doc.extSubset is not NULL and doc._c_doc.extSubset is NULL:
 */
      __pyx_t_6 = (__pyx_v_doc->_c_doc->intSubset == NULL);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1601
 *                 doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset)
 *                 if doc._c_doc.intSubset is NULL:
 *                     python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             if c_doc.extSubset is not NULL and doc._c_doc.extSubset is NULL:
 *                 doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset)
 */
        __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L7;
      }
      __pyx_L7:;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1602
 *                 if doc._c_doc.intSubset is NULL:
 *                     python.PyErr_NoMemory()
 *             if c_doc.extSubset is not NULL and doc._c_doc.extSubset is NULL:             # <<<<<<<<<<<<<<
 *                 doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset)
 *                 if doc._c_doc.extSubset is NULL:
 */
    __pyx_t_6 = (__pyx_v_c_doc->extSubset != NULL);
    if (__pyx_t_6) {
      __pyx_t_1 = (__pyx_v_doc->_c_doc->extSubset == NULL);
      __pyx_t_5 = __pyx_t_1;
    } else {
      __pyx_t_5 = __pyx_t_6;
    }
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1603
 *                     python.PyErr_NoMemory()
 *             if c_doc.extSubset is not NULL and doc._c_doc.extSubset is NULL:
 *                 doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset)             # <<<<<<<<<<<<<<
 *                 if doc._c_doc.extSubset is NULL:
 *                     python.PyErr_NoMemory()
 */
      __pyx_v_doc->_c_doc->extSubset = xmlCopyDtd(__pyx_v_c_doc->extSubset);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1604
 *             if c_doc.extSubset is not NULL and doc._c_doc.extSubset is NULL:
 *                 doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset)
 *                 if doc._c_doc.extSubset is NULL:             # <<<<<<<<<<<<<<
 *                     python.PyErr_NoMemory()
 *             return _elementTreeFactory(None, root)
 */
      __pyx_t_5 = (__pyx_v_doc->_c_doc->extSubset == NULL);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1605
 *                 doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset)
 *                 if doc._c_doc.extSubset is NULL:
 *                     python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             return _elementTreeFactory(None, root)
 *         elif self._doc is not None:
 */
        __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L9;
      }
      __pyx_L9:;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1606
 *                 if doc._c_doc.extSubset is NULL:
 *                     python.PyErr_NoMemory()
 *             return _elementTreeFactory(None, root)             # <<<<<<<<<<<<<<
 *         elif self._doc is not None:
 *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)Py_None), __pyx_v_root)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1607
 *                     python.PyErr_NoMemory()
 *             return _elementTreeFactory(None, root)
 *         elif self._doc is not None:             # <<<<<<<<<<<<<<
 *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
 *             if c_doc is NULL:
 */
  __pyx_t_5 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc) != Py_None);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1608
 *             return _elementTreeFactory(None, root)
 *         elif self._doc is not None:
 *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)             # <<<<<<<<<<<<<<
 *             if c_doc is NULL:
 *                 python.PyErr_NoMemory()
 */
    __pyx_v_c_doc = xmlCopyDoc(((struct LxmlElementTree *)__pyx_v_self)->_doc->_c_doc, 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1609
 *         elif self._doc is not None:
 *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
 *             if c_doc is NULL:             # <<<<<<<<<<<<<<
 *                 python.PyErr_NoMemory()
 *             doc = _documentFactory(c_doc, self._doc._parser)
 */
    __pyx_t_5 = (__pyx_v_c_doc == NULL);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1610
 *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
 *             if c_doc is NULL:
 *                 python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             doc = _documentFactory(c_doc, self._doc._parser)
 *             return _elementTreeFactory(doc, None)
 */
      __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1611
 *             if c_doc is NULL:
 *                 python.PyErr_NoMemory()
 *             doc = _documentFactory(c_doc, self._doc._parser)             # <<<<<<<<<<<<<<
 *             return _elementTreeFactory(doc, None)
 *         else:
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct LxmlElementTree *)__pyx_v_self)->_doc->_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1612
 *                 python.PyErr_NoMemory()
 *             doc = _documentFactory(c_doc, self._doc._parser)
 *             return _elementTreeFactory(doc, None)             # <<<<<<<<<<<<<<
 *         else:
 *             # so what ...
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1615
 *         else:
 *             # so what ...
 *             return self             # <<<<<<<<<<<<<<
 * 
 *     # not in ElementTree, read-only
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self);
    __pyx_r = __pyx_v_self;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.__deepcopy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_memo);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1624
 *         not for trees that were built manually.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertHasRoot()
 *             return DocInfo(self._context_node._doc)
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1625
 *         """
 *         def __get__(self):
 *             self._assertHasRoot()             # <<<<<<<<<<<<<<
 *             return DocInfo(self._context_node._doc)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1626
 *         def __get__(self):
 *             self._assertHasRoot()
 *             return DocInfo(self._context_node._doc)             # <<<<<<<<<<<<<<
 * 
 *     # not in ElementTree, read-only
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc));
  __Pyx_GIVEREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc));
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_DocInfo)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ElementTree.docinfo.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1632
 *         u"""The parser that was used to parse the document in this ElementTree.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._context_node is not None and \
 *                    self._context_node._doc is not None:
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1633
 *         """
 *         def __get__(self):
 *             if self._context_node is not None and \             # <<<<<<<<<<<<<<
 *                    self._context_node._doc is not None:
 *                 return self._context_node._doc._parser
 */
  __pyx_t_1 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1634
 *         def __get__(self):
 *             if self._context_node is not None and \
 *                    self._context_node._doc is not None:             # <<<<<<<<<<<<<<
 *                 return self._context_node._doc._parser
 *             if self._doc is not None:
 */
    __pyx_t_2 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc) != Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1635
 *             if self._context_node is not None and \
 *                    self._context_node._doc is not None:
 *                 return self._context_node._doc._parser             # <<<<<<<<<<<<<<
 *             if self._doc is not None:
 *                 return self._doc._parser
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc->_parser));
    __pyx_r = ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc->_parser);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1636
 *                    self._context_node._doc is not None:
 *                 return self._context_node._doc._parser
 *             if self._doc is not None:             # <<<<<<<<<<<<<<
 *                 return self._doc._parser
 *             return None
 */
  __pyx_t_3 = (((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc) != Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1637
 *                 return self._context_node._doc._parser
 *             if self._doc is not None:
 *                 return self._doc._parser             # <<<<<<<<<<<<<<
 *             return None
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc->_parser));
    __pyx_r = ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_doc->_parser);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1638
 *             if self._doc is not None:
 *                 return self._doc._parser
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     def write(self, file, *, encoding=None, method=u"xml",
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1640
 *             return None
 * 
 *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
 *               pretty_print=False, xml_declaration=None, with_tail=True,
 *               standalone=None, compression=0):
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_write[] = "write(self, file, encoding=None, method=\"xml\",\n                  pretty_print=False, xml_declaration=None, with_tail=True,\n                  standalone=None, compression=0)\n\n        Write the tree to a filename, file or file-like object.\n\n        Defaults to ASCII encoding and writing a declaration as needed.\n\n        The keyword argument 'method' selects the output method: 'xml' or\n        'html'.\n\n        Passing a boolean value to the ``standalone`` option will\n        output an XML declaration with the corresponding\n        ``standalone`` flag.\n\n        The ``compression`` option enables GZip compression level 1-9.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_file = 0;
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_pretty_print = 0;
  PyObject *__pyx_v_xml_declaration = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_v_standalone = 0;
  PyObject *__pyx_v_compression = 0;
  int __pyx_v_write_declaration;
  int __pyx_v_is_standalone;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file,&__pyx_n_s__encoding,&__pyx_n_s__method,&__pyx_n_s__pretty_print,&__pyx_n_s__xml_declaration,&__pyx_n_s__with_tail,&__pyx_n_s__standalone,&__pyx_n_s__compression,0};
  __Pyx_RefNannySetupContext("write");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1642
 *     def write(self, file, *, encoding=None, method=u"xml",
 *               pretty_print=False, xml_declaration=None, with_tail=True,
 *               standalone=None, compression=0):             # <<<<<<<<<<<<<<
 *         u"""write(self, file, encoding=None, method="xml",
 *                   pretty_print=False, xml_declaration=None, with_tail=True,
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)__pyx_n_u__xml);
    values[3] = __pyx_k_75;
    values[4] = ((PyObject *)Py_None);
    values[5] = __pyx_k_76;
    values[6] = ((PyObject *)Py_None);
    values[7] = ((PyObject *)__pyx_int_0);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__method);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pretty_print);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__xml_declaration);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__standalone);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compression);
      if (value) { values[7] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_file = values[0];
    __pyx_v_encoding = values[1];
    __pyx_v_method = values[2];
    __pyx_v_pretty_print = values[3];
    __pyx_v_xml_declaration = values[4];
    __pyx_v_with_tail = values[5];
    __pyx_v_standalone = values[6];
    __pyx_v_compression = values[7];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_file = PyTuple_GET_ITEM(__pyx_args, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1640
 *             return None
 * 
 *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
 *               pretty_print=False, xml_declaration=None, with_tail=True,
 *               standalone=None, compression=0):
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_method = ((PyObject *)__pyx_n_u__xml);
    __pyx_v_pretty_print = __pyx_k_75;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1641
 * 
 *     def write(self, file, *, encoding=None, method=u"xml",
 *               pretty_print=False, xml_declaration=None, with_tail=True,             # <<<<<<<<<<<<<<
 *               standalone=None, compression=0):
 *         u"""write(self, file, encoding=None, method="xml",
 */
    __pyx_v_xml_declaration = ((PyObject *)Py_None);
    __pyx_v_with_tail = __pyx_k_76;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1642
 *     def write(self, file, *, encoding=None, method=u"xml",
 *               pretty_print=False, xml_declaration=None, with_tail=True,
 *               standalone=None, compression=0):             # <<<<<<<<<<<<<<
 *         u"""write(self, file, encoding=None, method="xml",
 *                   pretty_print=False, xml_declaration=None, with_tail=True,
 */
    __pyx_v_standalone = ((PyObject *)Py_None);
    __pyx_v_compression = ((PyObject *)__pyx_int_0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.write");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_method);
  __Pyx_INCREF(__pyx_v_pretty_print);
  __Pyx_INCREF(__pyx_v_xml_declaration);
  __Pyx_INCREF(__pyx_v_with_tail);
  __Pyx_INCREF(__pyx_v_standalone);
  __Pyx_INCREF(__pyx_v_compression);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1662
 *         cdef bint write_declaration
 *         cdef int is_standalone
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         # suppress decl. in default case (purely for ElementTree compatibility)
 *         if xml_declaration is not None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1664
 *         self._assertHasRoot()
 *         # suppress decl. in default case (purely for ElementTree compatibility)
 *         if xml_declaration is not None:             # <<<<<<<<<<<<<<
 *             write_declaration = xml_declaration
 *             if encoding is None:
 */
  __pyx_t_2 = (__pyx_v_xml_declaration != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1665
 *         # suppress decl. in default case (purely for ElementTree compatibility)
 *         if xml_declaration is not None:
 *             write_declaration = xml_declaration             # <<<<<<<<<<<<<<
 *             if encoding is None:
 *                 encoding = u'ASCII'
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_write_declaration = __pyx_t_2;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1666
 *         if xml_declaration is not None:
 *             write_declaration = xml_declaration
 *             if encoding is None:             # <<<<<<<<<<<<<<
 *                 encoding = u'ASCII'
 *         elif encoding is None:
 */
    __pyx_t_2 = (__pyx_v_encoding == Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1667
 *             write_declaration = xml_declaration
 *             if encoding is None:
 *                 encoding = u'ASCII'             # <<<<<<<<<<<<<<
 *         elif encoding is None:
 *             encoding = u'ASCII'
 */
      __Pyx_INCREF(((PyObject *)__pyx_n_u__ASCII));
      __Pyx_DECREF(__pyx_v_encoding);
      __pyx_v_encoding = ((PyObject *)__pyx_n_u__ASCII);
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1668
 *             if encoding is None:
 *                 encoding = u'ASCII'
 *         elif encoding is None:             # <<<<<<<<<<<<<<
 *             encoding = u'ASCII'
 *             write_declaration = 0
 */
  __pyx_t_2 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1669
 *                 encoding = u'ASCII'
 *         elif encoding is None:
 *             encoding = u'ASCII'             # <<<<<<<<<<<<<<
 *             write_declaration = 0
 *         else:
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__ASCII));
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = ((PyObject *)__pyx_n_u__ASCII);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1670
 *         elif encoding is None:
 *             encoding = u'ASCII'
 *             write_declaration = 0             # <<<<<<<<<<<<<<
 *         else:
 *             encoding = encoding.upper()
 */
    __pyx_v_write_declaration = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1672
 *             write_declaration = 0
 *         else:
 *             encoding = encoding.upper()             # <<<<<<<<<<<<<<
 *             write_declaration = encoding not in \
 *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1673
 *         else:
 *             encoding = encoding.upper()
 *             write_declaration = encoding not in \             # <<<<<<<<<<<<<<
 *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
 *         if standalone is None:
 */
    __Pyx_INCREF(__pyx_v_encoding);
    __pyx_t_3 = __pyx_v_encoding;
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_kp_u_77), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = ((int)__pyx_t_2);
    if (__pyx_t_4) {
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_n_u__ASCII), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_5 = ((int)__pyx_t_2);
      __pyx_t_2 = __pyx_t_5;
    } else {
      __pyx_t_2 = __pyx_t_4;
    }
    if (__pyx_t_2) {
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_n_u__UTF8), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_5 = ((int)__pyx_t_4);
      __pyx_t_4 = __pyx_t_5;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    if (__pyx_t_4) {
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_kp_u_20), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_5 = ((int)__pyx_t_2);
      __pyx_t_2 = __pyx_t_5;
    } else {
      __pyx_t_2 = __pyx_t_4;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_write_declaration = __pyx_t_2;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1675
 *             write_declaration = encoding not in \
 *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
 *         if standalone is None:             # <<<<<<<<<<<<<<
 *             is_standalone = -1
 *         elif standalone:
 */
  __pyx_t_2 = (__pyx_v_standalone == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1676
 *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
 *         if standalone is None:
 *             is_standalone = -1             # <<<<<<<<<<<<<<
 *         elif standalone:
 *             write_declaration = 1
 */
    __pyx_v_is_standalone = -1;
    goto __pyx_L8;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1677
 *         if standalone is None:
 *             is_standalone = -1
 *         elif standalone:             # <<<<<<<<<<<<<<
 *             write_declaration = 1
 *             is_standalone = 1
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1678
 *             is_standalone = -1
 *         elif standalone:
 *             write_declaration = 1             # <<<<<<<<<<<<<<
 *             is_standalone = 1
 *         else:
 */
    __pyx_v_write_declaration = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1679
 *         elif standalone:
 *             write_declaration = 1
 *             is_standalone = 1             # <<<<<<<<<<<<<<
 *         else:
 *             write_declaration = 1
 */
    __pyx_v_is_standalone = 1;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1681
 *             is_standalone = 1
 *         else:
 *             write_declaration = 1             # <<<<<<<<<<<<<<
 *             is_standalone = 0
 *         if compression is None or compression < 0:
 */
    __pyx_v_write_declaration = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1682
 *         else:
 *             write_declaration = 1
 *             is_standalone = 0             # <<<<<<<<<<<<<<
 *         if compression is None or compression < 0:
 *             compression = 0
 */
    __pyx_v_is_standalone = 0;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1683
 *             write_declaration = 1
 *             is_standalone = 0
 *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
 *             compression = 0
 *         _tofilelike(file, self._context_node, encoding, method,
 */
  __pyx_t_2 = (__pyx_v_compression == Py_None);
  if (!__pyx_t_2) {
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_2;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1684
 *             is_standalone = 0
 *         if compression is None or compression < 0:
 *             compression = 0             # <<<<<<<<<<<<<<
 *         _tofilelike(file, self._context_node, encoding, method,
 *                     write_declaration, 1, pretty_print, with_tail,
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_compression);
    __pyx_v_compression = __pyx_int_0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1686
 *             compression = 0
 *         _tofilelike(file, self._context_node, encoding, method,
 *                     write_declaration, 1, pretty_print, with_tail,             # <<<<<<<<<<<<<<
 *                     is_standalone, compression)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_5 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1687
 *         _tofilelike(file, self._context_node, encoding, method,
 *                     write_declaration, 1, pretty_print, with_tail,
 *                     is_standalone, compression)             # <<<<<<<<<<<<<<
 * 
 *     def getpath(self, _Element element not None):
 */
  __pyx_t_6 = __Pyx_PyInt_AsInt(__pyx_v_compression); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __pyx_f_4lxml_5etree__tofilelike(__pyx_v_file, ((struct LxmlElementTree *)__pyx_v_self)->_context_node, __pyx_v_encoding, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_t_5, __pyx_t_2, __pyx_v_is_standalone, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.write");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_DECREF(__pyx_v_pretty_print);
  __Pyx_DECREF(__pyx_v_xml_declaration);
  __Pyx_DECREF(__pyx_v_with_tail);
  __Pyx_DECREF(__pyx_v_standalone);
  __Pyx_DECREF(__pyx_v_compression);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1689
 *                     is_standalone, compression)
 * 
 *     def getpath(self, _Element element not None):             # <<<<<<<<<<<<<<
 *         u"""getpath(self, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getpath(PyObject *__pyx_v_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_getpath[] = "getpath(self, element)\n\n        Returns a structural, absolute XPath expression to find that element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getpath(PyObject *__pyx_v_self, PyObject *__pyx_v_element) {
  struct LxmlDocument *__pyx_v_doc;
  xmlDoc *__pyx_v_c_doc;
  char *__pyx_v_c_path;
  PyObject *__pyx_v_path;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  xmlDoc *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("getpath");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_path = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1697
 *         cdef xmlDoc* c_doc
 *         cdef char* c_path
 *         doc = self._context_node._doc             # <<<<<<<<<<<<<<
 *         if element._doc is not doc:
 *             raise ValueError, u"Element is not in this tree."
 */
  __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc));
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlElementTree *)__pyx_v_self)->_context_node->_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1698
 *         cdef char* c_path
 *         doc = self._context_node._doc
 *         if element._doc is not doc:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Element is not in this tree."
 *         c_doc = _fakeRootDoc(doc._c_doc, self._context_node._c_node)
 */
  __pyx_t_1 = (((struct LxmlElement *)__pyx_v_element)->_doc != __pyx_v_doc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1699
 *         doc = self._context_node._doc
 *         if element._doc is not doc:
 *             raise ValueError, u"Element is not in this tree."             # <<<<<<<<<<<<<<
 *         c_doc = _fakeRootDoc(doc._c_doc, self._context_node._c_node)
 *         c_path = tree.xmlGetNodePath(element._c_node)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_78), 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1700
 *         if element._doc is not doc:
 *             raise ValueError, u"Element is not in this tree."
 *         c_doc = _fakeRootDoc(doc._c_doc, self._context_node._c_node)             # <<<<<<<<<<<<<<
 *         c_path = tree.xmlGetNodePath(element._c_node)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, ((struct LxmlElementTree *)__pyx_v_self)->_context_node->_c_node); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1701
 *             raise ValueError, u"Element is not in this tree."
 *         c_doc = _fakeRootDoc(doc._c_doc, self._context_node._c_node)
 *         c_path = tree.xmlGetNodePath(element._c_node)             # <<<<<<<<<<<<<<
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 *         if c_path is NULL:
 */
  __pyx_v_c_path = xmlGetNodePath(((struct LxmlElement *)__pyx_v_element)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1702
 *         c_doc = _fakeRootDoc(doc._c_doc, self._context_node._c_node)
 *         c_path = tree.xmlGetNodePath(element._c_node)
 *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 *         if c_path is NULL:
 *             python.PyErr_NoMemory()
 */
  __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1703
 *         c_path = tree.xmlGetNodePath(element._c_node)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 *         if c_path is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         path = funicode(c_path)
 */
  __pyx_t_1 = (__pyx_v_c_path == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1704
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 *         if c_path is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         path = funicode(c_path)
 *         tree.xmlFree(c_path)
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1705
 *         if c_path is NULL:
 *             python.PyErr_NoMemory()
 *         path = funicode(c_path)             # <<<<<<<<<<<<<<
 *         tree.xmlFree(c_path)
 *         return path
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_path);
  __pyx_v_path = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1706
 *             python.PyErr_NoMemory()
 *         path = funicode(c_path)
 *         tree.xmlFree(c_path)             # <<<<<<<<<<<<<<
 *         return path
 * 
 */
  xmlFree(__pyx_v_c_path);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1707
 *         path = funicode(c_path)
 *         tree.xmlFree(c_path)
 *         return path             # <<<<<<<<<<<<<<
 * 
 *     def getiterator(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_r = __pyx_v_path;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.getpath");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1709
 *         return path
 * 
 *     def getiterator(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""getiterator(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getiterator(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_getiterator[] = "getiterator(self, tag=None)\n\n        Returns a sequence or iterator of all elements in document order\n        (depth first pre-order), starting with the root element.\n\n        Can be restricted to find only elements with a specific tag\n        (pass ``tag=\"xyz\"`` or ``tag=\"{ns}xyz\"``) or from a namespace\n        (pass ``tag=\"{ns}*\"``).\n\n        You can also pass the Element, Comment, ProcessingInstruction and\n        Entity factory functions to look only for the specific element type.\n\n        :deprecated: Note that this method is deprecated as of\n          ElementTree 1.3 and lxml 2.0.  It returns an iterator in\n          lxml, which diverges from the original ElementTree\n          behaviour.  If you want an efficient iterator, use the\n          ``tree.iter()`` method instead.  You should only use this\n          method in new code if you require backwards compatibility\n          with older versions of lxml or ElementTree.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_getiterator(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("getiterator");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "getiterator") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1709; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getiterator", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1709; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.getiterator");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1730
 *           with older versions of lxml or ElementTree.
 *         """
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if root is None:
 *             return ()
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1731
 *         """
 *         root = self.getroot()
 *         if root is None:             # <<<<<<<<<<<<<<
 *             return ()
 *         return root.getiterator(tag)
 */
  __pyx_t_3 = (__pyx_v_root == Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1732
 *         root = self.getroot()
 *         if root is None:
 *             return ()             # <<<<<<<<<<<<<<
 *         return root.getiterator(tag)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
    __pyx_r = ((PyObject *)__pyx_empty_tuple);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1733
 *         if root is None:
 *             return ()
 *         return root.getiterator(tag)             # <<<<<<<<<<<<<<
 * 
 *     def iter(self, tag=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__getiterator); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.getiterator");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1735
 *         return root.getiterator(tag)
 * 
 *     def iter(self, tag=None):             # <<<<<<<<<<<<<<
 *         u"""iter(self, tag=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_iter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_iter[] = "iter(self, tag=None)\n\n        Creates an iterator for the root element.  The iterator loops over\n        all elements in this tree, in document order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_iter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("iter");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iter") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iter", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1735; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.iter");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1741
 *         all elements in this tree, in document order.
 *         """
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if root is None:
 *             return ()
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1742
 *         """
 *         root = self.getroot()
 *         if root is None:             # <<<<<<<<<<<<<<
 *             return ()
 *         return root.iter(tag)
 */
  __pyx_t_3 = (__pyx_v_root == Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1743
 *         root = self.getroot()
 *         if root is None:
 *             return ()             # <<<<<<<<<<<<<<
 *         return root.iter(tag)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
    __pyx_r = ((PyObject *)__pyx_empty_tuple);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1744
 *         if root is None:
 *             return ()
 *         return root.iter(tag)             # <<<<<<<<<<<<<<
 * 
 *     def find(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__iter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.iter");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1746
 *         return root.iter(tag)
 * 
 *     def find(self, path):             # <<<<<<<<<<<<<<
 *         u"""find(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_find(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_find[] = "find(self, path)\n\n        Finds the first toplevel element with given tag.  Same as\n        ``tree.getroot().find(path)``.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_find(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_start;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("find");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_start = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1752
 *         ``tree.getroot().find(path)``.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         root = self.getroot()
 *         if _isString(path):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1753
 *         """
 *         self._assertHasRoot()
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if _isString(path):
 *             start = path[:1]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1754
 *         self._assertHasRoot()
 *         root = self.getroot()
 *         if _isString(path):             # <<<<<<<<<<<<<<
 *             start = path[:1]
 *             if start == u"/":
 */
  __pyx_t_3 = _isString(__pyx_v_path);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1755
 *         root = self.getroot()
 *         if _isString(path):
 *             start = path[:1]             # <<<<<<<<<<<<<<
 *             if start == u"/":
 *                 path = u"." + path
 */
    __pyx_t_2 = PySequence_GetSlice(__pyx_v_path, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_start);
    __pyx_v_start = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1756
 *         if _isString(path):
 *             start = path[:1]
 *             if start == u"/":             # <<<<<<<<<<<<<<
 *                 path = u"." + path
 *             elif start == "/":
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_u_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1757
 *             start = path[:1]
 *             if start == u"/":
 *                 path = u"." + path             # <<<<<<<<<<<<<<
 *             elif start == "/":
 *                 path = "." + path
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_u_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1758
 *             if start == u"/":
 *                 path = u"." + path
 *             elif start == "/":             # <<<<<<<<<<<<<<
 *                 path = "." + path
 *         return root.find(path)
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_s_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1759
 *                 path = u"." + path
 *             elif start == "/":
 *                 path = "." + path             # <<<<<<<<<<<<<<
 *         return root.find(path)
 * 
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_s_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1760
 *             elif start == "/":
 *                 path = "." + path
 *         return root.find(path)             # <<<<<<<<<<<<<<
 * 
 *     def findtext(self, path, default=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__find); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.find");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_start);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1762
 *         return root.find(path)
 * 
 *     def findtext(self, path, default=None):             # <<<<<<<<<<<<<<
 *         u"""findtext(self, path, default=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_findtext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_findtext[] = "findtext(self, path, default=None)\n\n        Finds the text for the first element matching the ElementPath\n        expression.  Same as getroot().findtext(path)\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_findtext(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_start;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__path,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("findtext");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "findtext") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_path = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_path = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1762; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.findtext");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_start = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1768
 *         expression.  Same as getroot().findtext(path)
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         root = self.getroot()
 *         if _isString(path):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1769
 *         """
 *         self._assertHasRoot()
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if _isString(path):
 *             start = path[:1]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1770
 *         self._assertHasRoot()
 *         root = self.getroot()
 *         if _isString(path):             # <<<<<<<<<<<<<<
 *             start = path[:1]
 *             if start == u"/":
 */
  __pyx_t_3 = _isString(__pyx_v_path);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1771
 *         root = self.getroot()
 *         if _isString(path):
 *             start = path[:1]             # <<<<<<<<<<<<<<
 *             if start == u"/":
 *                 path = u"." + path
 */
    __pyx_t_2 = PySequence_GetSlice(__pyx_v_path, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_start);
    __pyx_v_start = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1772
 *         if _isString(path):
 *             start = path[:1]
 *             if start == u"/":             # <<<<<<<<<<<<<<
 *                 path = u"." + path
 *             elif start == "/":
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_u_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1773
 *             start = path[:1]
 *             if start == u"/":
 *                 path = u"." + path             # <<<<<<<<<<<<<<
 *             elif start == "/":
 *                 path = "." + path
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_u_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1774
 *             if start == u"/":
 *                 path = u"." + path
 *             elif start == "/":             # <<<<<<<<<<<<<<
 *                 path = "." + path
 *         return root.findtext(path, default)
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_s_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1775
 *                 path = u"." + path
 *             elif start == "/":
 *                 path = "." + path             # <<<<<<<<<<<<<<
 *         return root.findtext(path, default)
 * 
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_s_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1776
 *             elif start == "/":
 *                 path = "." + path
 *         return root.findtext(path, default)             # <<<<<<<<<<<<<<
 * 
 *     def findall(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__findtext); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_default);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_default);
  __Pyx_GIVEREF(__pyx_v_default);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.findtext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_start);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1778
 *         return root.findtext(path, default)
 * 
 *     def findall(self, path):             # <<<<<<<<<<<<<<
 *         u"""findall(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_findall(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_findall[] = "findall(self, path)\n\n        Finds all elements matching the ElementPath expression.  Same as\n        getroot().findall(path).\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_findall(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_start;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("findall");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_start = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1784
 *         getroot().findall(path).
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         root = self.getroot()
 *         if _isString(path):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1785
 *         """
 *         self._assertHasRoot()
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if _isString(path):
 *             start = path[:1]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1786
 *         self._assertHasRoot()
 *         root = self.getroot()
 *         if _isString(path):             # <<<<<<<<<<<<<<
 *             start = path[:1]
 *             if start == u"/":
 */
  __pyx_t_3 = _isString(__pyx_v_path);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1787
 *         root = self.getroot()
 *         if _isString(path):
 *             start = path[:1]             # <<<<<<<<<<<<<<
 *             if start == u"/":
 *                 path = u"." + path
 */
    __pyx_t_2 = PySequence_GetSlice(__pyx_v_path, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_start);
    __pyx_v_start = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1788
 *         if _isString(path):
 *             start = path[:1]
 *             if start == u"/":             # <<<<<<<<<<<<<<
 *                 path = u"." + path
 *             elif start == "/":
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_u_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1789
 *             start = path[:1]
 *             if start == u"/":
 *                 path = u"." + path             # <<<<<<<<<<<<<<
 *             elif start == "/":
 *                 path = "." + path
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_u_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1790
 *             if start == u"/":
 *                 path = u"." + path
 *             elif start == "/":             # <<<<<<<<<<<<<<
 *                 path = "." + path
 *         return root.findall(path)
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_s_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1791
 *                 path = u"." + path
 *             elif start == "/":
 *                 path = "." + path             # <<<<<<<<<<<<<<
 *         return root.findall(path)
 * 
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_s_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1792
 *             elif start == "/":
 *                 path = "." + path
 *         return root.findall(path)             # <<<<<<<<<<<<<<
 * 
 *     def iterfind(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__findall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.findall");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_start);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1794
 *         return root.findall(path)
 * 
 *     def iterfind(self, path):             # <<<<<<<<<<<<<<
 *         u"""iterfind(self, path)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_iterfind(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_iterfind[] = "iterfind(self, path)\n\n        Iterates over all elements matching the ElementPath expression.\n        Same as getroot().finditer(path).\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_iterfind(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_start;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("iterfind");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_start = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1800
 *         Same as getroot().finditer(path).
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         root = self.getroot()
 *         if _isString(path):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1801
 *         """
 *         self._assertHasRoot()
 *         root = self.getroot()             # <<<<<<<<<<<<<<
 *         if _isString(path):
 *             start = path[:1]
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__getroot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1802
 *         self._assertHasRoot()
 *         root = self.getroot()
 *         if _isString(path):             # <<<<<<<<<<<<<<
 *             start = path[:1]
 *             if start == u"/":
 */
  __pyx_t_3 = _isString(__pyx_v_path);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1803
 *         root = self.getroot()
 *         if _isString(path):
 *             start = path[:1]             # <<<<<<<<<<<<<<
 *             if start == u"/":
 *                 path = u"." + path
 */
    __pyx_t_2 = PySequence_GetSlice(__pyx_v_path, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_start);
    __pyx_v_start = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1804
 *         if _isString(path):
 *             start = path[:1]
 *             if start == u"/":             # <<<<<<<<<<<<<<
 *                 path = u"." + path
 *             elif start == "/":
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_u_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1805
 *             start = path[:1]
 *             if start == u"/":
 *                 path = u"." + path             # <<<<<<<<<<<<<<
 *             elif start == "/":
 *                 path = "." + path
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_u_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1806
 *             if start == u"/":
 *                 path = u"." + path
 *             elif start == "/":             # <<<<<<<<<<<<<<
 *                 path = "." + path
 *         return root.iterfind(path)
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_start, ((PyObject *)__pyx_kp_s_79), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1807
 *                 path = u"." + path
 *             elif start == "/":
 *                 path = "." + path             # <<<<<<<<<<<<<<
 *         return root.iterfind(path)
 * 
 */
      __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_s_2), __pyx_v_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_path);
      __pyx_v_path = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1808
 *             elif start == "/":
 *                 path = "." + path
 *         return root.iterfind(path)             # <<<<<<<<<<<<<<
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_root, __pyx_n_s__iterfind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ElementTree.iterfind");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_start);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1810
 *         return root.iterfind(path)
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
 *               smart_strings=True, **_variables):
 *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xpath(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_xpath[] = "xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)\n\n        XPath evaluate in context of document.\n\n        ``namespaces`` is an optional dictionary with prefix to namespace URI\n        mappings, used by XPath.  ``extensions`` defines additional extension\n        functions.\n        \n        Returns a list (nodeset), or bool, float or string.\n\n        In case of a list result, return Element for element nodes,\n        string for text and attribute values.\n\n        Note: if you are going to apply multiple XPath expressions\n        against the same document, it is more efficient to use\n        XPathEvaluator directly.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xpath(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__path = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_smart_strings = 0;
  PyObject *__pyx_v__variables = 0;
  PyObject *__pyx_v_evaluator;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___path,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("xpath");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_80;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "xpath") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__path = values[0];
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__path = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_namespaces = ((PyObject *)Py_None);
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_smart_strings = __pyx_k_80;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xpath");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_evaluator = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1829
 *         XPathEvaluator directly.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
 *                                            extensions=extensions,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1830
 *         """
 *         self._assertHasRoot()
 *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *                                            extensions=extensions,
 *                                            smart_strings=smart_strings)
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1831
 *         self._assertHasRoot()
 *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
 *                                            extensions=extensions,             # <<<<<<<<<<<<<<
 *                                            smart_strings=smart_strings)
 *         return evaluator(_path, **_variables)
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1832
 *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
 *                                            extensions=extensions,
 *                                            smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 *         return evaluator(_path, **_variables)
 * 
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPathDocumentEvaluator)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_evaluator);
  __pyx_v_evaluator = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1833
 *                                            extensions=extensions,
 *                                            smart_strings=smart_strings)
 *         return evaluator(_path, **_variables)             # <<<<<<<<<<<<<<
 * 
 *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v__path);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__path);
  __Pyx_GIVEREF(__pyx_v__path);
  __pyx_t_2 = __Pyx_PyEval_CallObjectWithKeywords(__pyx_v_evaluator, __pyx_t_3, __pyx_v__variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xpath");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_DECREF(__pyx_v_evaluator);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1835
 *         return evaluator(_path, **_variables)
 * 
 *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):             # <<<<<<<<<<<<<<
 *         u"""xslt(self, _xslt, extensions=None, access_control=None, **_kw)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xslt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_xslt[] = "xslt(self, _xslt, extensions=None, access_control=None, **_kw)\n\n        Transform this document using other document.\n\n        xslt is a tree that should be XSLT\n        keyword parameters are XSLT transformation parameters.\n\n        Returns the transformed tree.\n\n        Note: if you are going to apply the same XSLT stylesheet against\n        multiple documents, it is more efficient to use the XSLT\n        class directly.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xslt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__xslt = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_access_control = 0;
  PyObject *__pyx_v__kw = 0;
  PyObject *__pyx_v_style;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___xslt,&__pyx_n_s__extensions,&__pyx_n_s__access_control,0};
  __Pyx_RefNannySetupContext("xslt");
  __pyx_v__kw = PyDict_New(); if (unlikely(!__pyx_v__kw)) return NULL;
  __Pyx_GOTREF(__pyx_v__kw);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___xslt);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__access_control);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__kw, values, PyTuple_GET_SIZE(__pyx_args), "xslt") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__xslt = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_access_control = values[2];
  } else {
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_access_control = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_access_control = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_extensions = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v__xslt = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xslt", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__kw);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xslt");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_style = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1849
 *         class directly.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         style = XSLT(_xslt, extensions=extensions,
 *                      access_control=access_control)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1850
 *         """
 *         self._assertHasRoot()
 *         style = XSLT(_xslt, extensions=extensions,             # <<<<<<<<<<<<<<
 *                      access_control=access_control)
 *         return style(self, **_kw)
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v__xslt);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__xslt);
  __Pyx_GIVEREF(__pyx_v__xslt);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1851
 *         self._assertHasRoot()
 *         style = XSLT(_xslt, extensions=extensions,
 *                      access_control=access_control)             # <<<<<<<<<<<<<<
 *         return style(self, **_kw)
 * 
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__access_control), __pyx_v_access_control) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XSLT)), __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_style);
  __pyx_v_style = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1852
 *         style = XSLT(_xslt, extensions=extensions,
 *                      access_control=access_control)
 *         return style(self, **_kw)             # <<<<<<<<<<<<<<
 * 
 *     def relaxng(self, relaxng):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = __Pyx_PyEval_CallObjectWithKeywords(__pyx_v_style, __pyx_t_3, __pyx_v__kw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xslt");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__kw);
  __Pyx_DECREF(__pyx_v_style);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1854
 *         return style(self, **_kw)
 * 
 *     def relaxng(self, relaxng):             # <<<<<<<<<<<<<<
 *         u"""relaxng(self, relaxng)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_relaxng(PyObject *__pyx_v_self, PyObject *__pyx_v_relaxng); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_relaxng[] = "relaxng(self, relaxng)\n\n        Validate this document using other document.\n\n        The relaxng argument is a tree that should contain a Relax NG schema.\n\n        Returns True or False, depending on whether validation\n        succeeded.\n\n        Note: if you are going to apply the same Relax NG schema against\n        multiple documents, it is more efficient to use the RelaxNG\n        class directly.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_relaxng(PyObject *__pyx_v_self, PyObject *__pyx_v_relaxng) {
  PyObject *__pyx_v_schema;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("relaxng");
  __pyx_v_schema = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1868
 *         class directly.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         schema = RelaxNG(relaxng)
 *         return schema.validate(self)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1869
 *         """
 *         self._assertHasRoot()
 *         schema = RelaxNG(relaxng)             # <<<<<<<<<<<<<<
 *         return schema.validate(self)
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_relaxng);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_relaxng);
  __Pyx_GIVEREF(__pyx_v_relaxng);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_RelaxNG)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_schema);
  __pyx_v_schema = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1870
 *         self._assertHasRoot()
 *         schema = RelaxNG(relaxng)
 *         return schema.validate(self)             # <<<<<<<<<<<<<<
 * 
 *     def xmlschema(self, xmlschema):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_schema, __pyx_n_s__validate); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.relaxng");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_schema);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1872
 *         return schema.validate(self)
 * 
 *     def xmlschema(self, xmlschema):             # <<<<<<<<<<<<<<
 *         u"""xmlschema(self, xmlschema)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xmlschema(PyObject *__pyx_v_self, PyObject *__pyx_v_xmlschema); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_xmlschema[] = "xmlschema(self, xmlschema)\n\n        Validate this document using other document.\n\n        The xmlschema argument is a tree that should contain an XML Schema.\n\n        Returns True or False, depending on whether validation\n        succeeded.\n\n        Note: If you are going to apply the same XML Schema against\n        multiple documents, it is more efficient to use the XMLSchema\n        class directly.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xmlschema(PyObject *__pyx_v_self, PyObject *__pyx_v_xmlschema) {
  PyObject *__pyx_v_schema;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("xmlschema");
  __pyx_v_schema = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1886
 *         class directly.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         schema = XMLSchema(xmlschema)
 *         return schema.validate(self)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1887
 *         """
 *         self._assertHasRoot()
 *         schema = XMLSchema(xmlschema)             # <<<<<<<<<<<<<<
 *         return schema.validate(self)
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_xmlschema);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_xmlschema);
  __Pyx_GIVEREF(__pyx_v_xmlschema);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XMLSchema)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_schema);
  __pyx_v_schema = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1888
 *         self._assertHasRoot()
 *         schema = XMLSchema(xmlschema)
 *         return schema.validate(self)             # <<<<<<<<<<<<<<
 * 
 *     def xinclude(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_schema, __pyx_n_s__validate); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xmlschema");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_schema);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1890
 *         return schema.validate(self)
 * 
 *     def xinclude(self):             # <<<<<<<<<<<<<<
 *         u"""xinclude(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xinclude(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_xinclude[] = "xinclude(self)\n\n        Process the XInclude nodes in this document and include the\n        referenced XML fragments.\n\n        There is support for loading files through the file system, HTTP and\n        FTP.\n\n        Note that XInclude does not support custom resolvers in Python space\n        due to restrictions of libxml2 <= 2.6.29.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_xinclude(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("xinclude");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1903
 *         """
 *         cdef int result
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         XInclude()(self._context_node)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1904
 *         cdef int result
 *         self._assertHasRoot()
 *         XInclude()(self._context_node)             # <<<<<<<<<<<<<<
 * 
 *     def write_c14n(self, file, *, exclusive=False, with_comments=True,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XInclude)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  __Pyx_GIVEREF(((PyObject *)((struct LxmlElementTree *)__pyx_v_self)->_context_node));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ElementTree.xinclude");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1906
 *         XInclude()(self._context_node)
 * 
 *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
 *                    compression=0):
 *         u"""write_c14n(self, file, exclusive=False, with_comments=True,
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_write_c14n(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_12_ElementTree_write_c14n[] = "write_c14n(self, file, exclusive=False, with_comments=True,\n                       compression=0)\n\n        C14N write of document. Always writes UTF-8.\n\n        The ``compression`` option enables GZip compression level 1-9.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_write_c14n(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_file = 0;
  PyObject *__pyx_v_exclusive = 0;
  PyObject *__pyx_v_with_comments = 0;
  PyObject *__pyx_v_compression = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file,&__pyx_n_s__exclusive,&__pyx_n_s__with_comments,&__pyx_n_s__compression,0};
  __Pyx_RefNannySetupContext("write_c14n");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = __pyx_k_81;
    values[2] = __pyx_k_82;
    values[3] = ((PyObject *)__pyx_int_0);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exclusive);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_comments);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compression);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "write_c14n") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_file = values[0];
    __pyx_v_exclusive = values[1];
    __pyx_v_with_comments = values[2];
    __pyx_v_compression = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_file = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_exclusive = __pyx_k_81;
    __pyx_v_with_comments = __pyx_k_82;
    __pyx_v_compression = ((PyObject *)__pyx_int_0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_c14n", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ElementTree.write_c14n");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_INCREF(__pyx_v_exclusive);
  __Pyx_INCREF(__pyx_v_with_comments);
  __Pyx_INCREF(__pyx_v_compression);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1915
 *         The ``compression`` option enables GZip compression level 1-9.
 *         """
 *         self._assertHasRoot()             # <<<<<<<<<<<<<<
 *         if compression is None or compression < 0:
 *             compression = 0
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTree *)((struct LxmlElementTree *)__pyx_v_self)->__pyx_vtab)->_assertHasRoot(((struct LxmlElementTree *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1916
 *         """
 *         self._assertHasRoot()
 *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
 *             compression = 0
 *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
 */
  __pyx_t_2 = (__pyx_v_compression == Py_None);
  if (!__pyx_t_2) {
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1917
 *         self._assertHasRoot()
 *         if compression is None or compression < 0:
 *             compression = 0             # <<<<<<<<<<<<<<
 *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
 *                         compression)
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_compression);
    __pyx_v_compression = __pyx_int_0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1918
 *         if compression is None or compression < 0:
 *             compression = 0
 *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,             # <<<<<<<<<<<<<<
 *                         compression)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_exclusive); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1919
 *             compression = 0
 *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
 *                         compression)             # <<<<<<<<<<<<<<
 * 
 * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):
 */
  __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_compression); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __pyx_f_4lxml_5etree__tofilelikeC14N(__pyx_v_file, ((struct LxmlElementTree *)__pyx_v_self)->_context_node, __pyx_t_4, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ElementTree.write_c14n");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_DECREF(__pyx_v_exclusive);
  __Pyx_DECREF(__pyx_v_with_comments);
  __Pyx_DECREF(__pyx_v_compression);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1921
 *                         compression)
 * 
 * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):             # <<<<<<<<<<<<<<
 *     return _newElementTree(doc, context_node, _ElementTree)
 * 
 */

static  struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct LxmlDocument *__pyx_v_doc, struct LxmlElement *__pyx_v_context_node) {
  struct LxmlElementTree *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_elementTreeFactory");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1922
 * 
 * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):
 *     return _newElementTree(doc, context_node, _ElementTree)             # <<<<<<<<<<<<<<
 * 
 * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newElementTree(__pyx_v_doc, __pyx_v_context_node, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlElementTree *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElementTree *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._elementTreeFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1924
 *     return _newElementTree(doc, context_node, _ElementTree)
 * 
 * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,             # <<<<<<<<<<<<<<
 *                                   object baseclass):
 *     cdef _ElementTree result
 */

static  struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlDocument *__pyx_v_doc, struct LxmlElement *__pyx_v_context_node, PyObject *__pyx_v_baseclass) {
  struct LxmlElementTree *__pyx_v_result;
  struct LxmlElementTree *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_newElementTree");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context_node);
  __Pyx_INCREF(__pyx_v_baseclass);
  __pyx_v_result = ((struct LxmlElementTree *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1927
 *                                   object baseclass):
 *     cdef _ElementTree result
 *     result = baseclass()             # <<<<<<<<<<<<<<
 *     if context_node is None and doc is not None:
 *         context_node = doc.getroot()
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_baseclass, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ElementTree))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = ((struct LxmlElementTree *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1928
 *     cdef _ElementTree result
 *     result = baseclass()
 *     if context_node is None and doc is not None:             # <<<<<<<<<<<<<<
 *         context_node = doc.getroot()
 *     if context_node is None:
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_context_node) == Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = (((PyObject *)__pyx_v_doc) != Py_None);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1929
 *     result = baseclass()
 *     if context_node is None and doc is not None:
 *         context_node = doc.getroot()             # <<<<<<<<<<<<<<
 *     if context_node is None:
 *         result._doc = doc
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_context_node));
    __pyx_v_context_node = ((struct LxmlElement *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1930
 *     if context_node is None and doc is not None:
 *         context_node = doc.getroot()
 *     if context_node is None:             # <<<<<<<<<<<<<<
 *         result._doc = doc
 *     result._context_node = context_node
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_context_node) == Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1931
 *         context_node = doc.getroot()
 *     if context_node is None:
 *         result._doc = doc             # <<<<<<<<<<<<<<
 *     result._context_node = context_node
 *     return result
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_doc));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
    __Pyx_GOTREF(__pyx_v_result->_doc);
    __Pyx_DECREF(((PyObject *)__pyx_v_result->_doc));
    __pyx_v_result->_doc = __pyx_v_doc;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1932
 *     if context_node is None:
 *         result._doc = doc
 *     result._context_node = context_node             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_context_node));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_context_node));
  __Pyx_GOTREF(__pyx_v_result->_context_node);
  __Pyx_DECREF(((PyObject *)__pyx_v_result->_context_node));
  __pyx_v_result->_context_node = __pyx_v_context_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1933
 *         result._doc = doc
 *     result._context_node = context_node
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElementTree *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._newElementTree");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context_node);
  __Pyx_DECREF(__pyx_v_baseclass);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1940
 *     """
 *     cdef _Element _element
 *     def __init__(self, _Element element not None):             # <<<<<<<<<<<<<<
 *         self._element = element
 * 
 */

static int __pyx_pf_4lxml_5etree_7_Attrib___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Attrib___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_element = 0;
  int __pyx_r;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element = ((struct LxmlElement *)values[0]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Attrib.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1941
 *     cdef _Element _element
 *     def __init__(self, _Element element not None):
 *         self._element = element             # <<<<<<<<<<<<<<
 * 
 *     # MANIPULATORS
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_element));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element));
  ((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element = __pyx_v_element;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Attrib.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1944
 * 
 *     # MANIPULATORS
 *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
 *         _setAttributeValue(self._element, key, value)
 * 
 */

static int __pyx_pf_4lxml_5etree_7_Attrib___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Attrib___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__setitem__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1945
 *     # MANIPULATORS
 *     def __setitem__(self, key, value):
 *         _setAttributeValue(self._element, key, value)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, key):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setAttributeValue(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Attrib.__setitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1947
 *         _setAttributeValue(self._element, key, value)
 * 
 *     def __delitem__(self, key):             # <<<<<<<<<<<<<<
 *         _delAttribute(self._element, key)
 * 
 */

static int __pyx_pf_4lxml_5etree_7_Attrib___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Attrib___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__delitem__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1948
 * 
 *     def __delitem__(self, key):
 *         _delAttribute(self._element, key)             # <<<<<<<<<<<<<<
 * 
 *     def update(self, sequence_or_dict):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__delAttribute(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._Attrib.__delitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1950
 *         _delAttribute(self._element, key)
 * 
 *     def update(self, sequence_or_dict):             # <<<<<<<<<<<<<<
 *         if isinstance(sequence_or_dict, dict):
 *             sequence_or_dict = sequence_or_dict.items()
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_update(PyObject *__pyx_v_self, PyObject *__pyx_v_sequence_or_dict); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_update(PyObject *__pyx_v_self, PyObject *__pyx_v_sequence_or_dict) {
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("update");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_sequence_or_dict);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1951
 * 
 *     def update(self, sequence_or_dict):
 *         if isinstance(sequence_or_dict, dict):             # <<<<<<<<<<<<<<
 *             sequence_or_dict = sequence_or_dict.items()
 *         for key, value in sequence_or_dict:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_sequence_or_dict, ((PyTypeObject *)((PyObject*)&PyDict_Type))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1952
 *     def update(self, sequence_or_dict):
 *         if isinstance(sequence_or_dict, dict):
 *             sequence_or_dict = sequence_or_dict.items()             # <<<<<<<<<<<<<<
 *         for key, value in sequence_or_dict:
 *             _setAttributeValue(self._element, key, value)
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_sequence_or_dict, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_sequence_or_dict);
    __pyx_v_sequence_or_dict = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1953
 *         if isinstance(sequence_or_dict, dict):
 *             sequence_or_dict = sequence_or_dict.items()
 *         for key, value in sequence_or_dict:             # <<<<<<<<<<<<<<
 *             _setAttributeValue(self._element, key, value)
 * 
 */
  if (PyList_CheckExact(__pyx_v_sequence_or_dict) || PyTuple_CheckExact(__pyx_v_sequence_or_dict)) {
    __pyx_t_4 = 0; __pyx_t_3 = __pyx_v_sequence_or_dict; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_sequence_or_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
    } else {
      __pyx_t_2 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_2) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
      PyObject* tuple = __pyx_t_2;
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_key);
      __pyx_v_key = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_key);
      __pyx_v_key = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_6;
      __pyx_t_6 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1954
 *             sequence_or_dict = sequence_or_dict.items()
 *         for key, value in sequence_or_dict:
 *             _setAttributeValue(self._element, key, value)             # <<<<<<<<<<<<<<
 * 
 *     def pop(self, key, *default):
 */
    __pyx_t_8 = __pyx_f_4lxml_5etree__setAttributeValue(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._Attrib.update");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_sequence_or_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1956
 *             _setAttributeValue(self._element, key, value)
 * 
 *     def pop(self, key, *default):             # <<<<<<<<<<<<<<
 *         if python.PyTuple_GET_SIZE(default) > 1:
 *             raise TypeError, u"pop expected at most 2 arguments, got %d" % (
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_pop(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,0};
  __Pyx_RefNannySetupContext("pop");
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_default = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_default);
    if (unlikely(!__pyx_v_default)) return NULL;
  } else {
    __pyx_v_default = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "pop") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_AddTraceback("lxml.etree._Attrib.pop");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1957
 * 
 *     def pop(self, key, *default):
 *         if python.PyTuple_GET_SIZE(default) > 1:             # <<<<<<<<<<<<<<
 *             raise TypeError, u"pop expected at most 2 arguments, got %d" % (
 *                 python.PyTuple_GET_SIZE(default)+1)
 */
  __pyx_t_1 = (PyTuple_GET_SIZE(__pyx_v_default) > 1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1959
 *         if python.PyTuple_GET_SIZE(default) > 1:
 *             raise TypeError, u"pop expected at most 2 arguments, got %d" % (
 *                 python.PyTuple_GET_SIZE(default)+1)             # <<<<<<<<<<<<<<
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:
 */
    __pyx_t_2 = PyInt_FromSsize_t((PyTuple_GET_SIZE(__pyx_v_default) + 1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_83), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1960
 *             raise TypeError, u"pop expected at most 2 arguments, got %d" % (
 *                 python.PyTuple_GET_SIZE(default)+1)
 *         result = _getAttributeValue(self._element, key, None)             # <<<<<<<<<<<<<<
 *         if result is None:
 *             if python.PyTuple_GET_SIZE(default) == 0:
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__getAttributeValue(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_result);
  __pyx_v_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1961
 *                 python.PyTuple_GET_SIZE(default)+1)
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:             # <<<<<<<<<<<<<<
 *             if python.PyTuple_GET_SIZE(default) == 0:
 *                 raise KeyError, key
 */
  __pyx_t_1 = (__pyx_v_result == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1962
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:
 *             if python.PyTuple_GET_SIZE(default) == 0:             # <<<<<<<<<<<<<<
 *                 raise KeyError, key
 *             else:
 */
    __pyx_t_1 = (PyTuple_GET_SIZE(__pyx_v_default) == 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1963
 *         if result is None:
 *             if python.PyTuple_GET_SIZE(default) == 0:
 *                 raise KeyError, key             # <<<<<<<<<<<<<<
 *             else:
 *                 result = python.PyTuple_GET_ITEM(default, 0)
 */
      __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1965
 *                 raise KeyError, key
 *             else:
 *                 result = python.PyTuple_GET_ITEM(default, 0)             # <<<<<<<<<<<<<<
 *                 python.Py_INCREF(result)
 *         else:
 */
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_v_default, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1966
 *             else:
 *                 result = python.PyTuple_GET_ITEM(default, 0)
 *                 python.Py_INCREF(result)             # <<<<<<<<<<<<<<
 *         else:
 *             _delAttribute(self._element, key)
 */
      Py_INCREF(__pyx_v_result);
    }
    __pyx_L8:;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1968
 *                 python.Py_INCREF(result)
 *         else:
 *             _delAttribute(self._element, key)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__delAttribute(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1969
 *         else:
 *             _delAttribute(self._element, key)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Attrib.pop");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1971
 *         return result
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         c_node = self._element._c_node
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_clear(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_clear(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("clear");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1973
 *     def clear(self):
 *         cdef xmlNode* c_node
 *         c_node = self._element._c_node             # <<<<<<<<<<<<<<
 *         while c_node.properties is not NULL:
 *             tree.xmlRemoveProp(c_node.properties)
 */
  __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1974
 *         cdef xmlNode* c_node
 *         c_node = self._element._c_node
 *         while c_node.properties is not NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlRemoveProp(c_node.properties)
 * 
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node->properties != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1975
 *         c_node = self._element._c_node
 *         while c_node.properties is not NULL:
 *             tree.xmlRemoveProp(c_node.properties)             # <<<<<<<<<<<<<<
 * 
 *     # ACCESSORS
 */
    xmlRemoveProp(__pyx_v_c_node->properties);
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1978
 * 
 *     # ACCESSORS
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return repr(dict( _attributeIteratorFactory(self._element, 3) ))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1979
 *     # ACCESSORS
 *     def __repr__(self):
 *         return repr(dict( _attributeIteratorFactory(self._element, 3) ))             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, key):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__attributeIteratorFactory(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1981
 *         return repr(dict( _attributeIteratorFactory(self._element, 3) ))
 * 
 *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1982
 * 
 *     def __getitem__(self, key):
 *         result = _getAttributeValue(self._element, key, None)             # <<<<<<<<<<<<<<
 *         if result is None:
 *             raise KeyError, key
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getAttributeValue(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_result);
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1983
 *     def __getitem__(self, key):
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:             # <<<<<<<<<<<<<<
 *             raise KeyError, key
 *         else:
 */
  __pyx_t_2 = (__pyx_v_result == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1984
 *         result = _getAttributeValue(self._element, key, None)
 *         if result is None:
 *             raise KeyError, key             # <<<<<<<<<<<<<<
 *         else:
 *             return result
 */
    __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1986
 *             raise KeyError, key
 *         else:
 *             return result             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_result);
    __pyx_r = __pyx_v_result;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Attrib.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1988
 *             return result
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlAttr* c_attr
 *         c_attr = self._element._c_node.properties
 */

static int __pyx_pf_4lxml_5etree_7_Attrib___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Attrib___nonzero__(PyObject *__pyx_v_self) {
  xmlAttr *__pyx_v_c_attr;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__nonzero__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1990
 *     def __nonzero__(self):
 *         cdef xmlAttr* c_attr
 *         c_attr = self._element._c_node.properties             # <<<<<<<<<<<<<<
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 */
  __pyx_v_c_attr = ((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1991
 *         cdef xmlAttr* c_attr
 *         c_attr = self._element._c_node.properties
 *         while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 return 1
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1992
 *         c_attr = self._element._c_node.properties
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *                 return 1
 *             c_attr = c_attr.next
 */
    __pyx_t_1 = (__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1993
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 return 1             # <<<<<<<<<<<<<<
 *             c_attr = c_attr.next
 *         return 0
 */
      __pyx_r = 1;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1994
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 return 1
 *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1995
 *                 return 1
 *             c_attr = c_attr.next
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1997
 *         return 0
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlAttr* c_attr
 *         cdef Py_ssize_t c
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib___len__(PyObject *__pyx_v_self) {
  xmlAttr *__pyx_v_c_attr;
  Py_ssize_t __pyx_v_c;
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__len__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2000
 *         cdef xmlAttr* c_attr
 *         cdef Py_ssize_t c
 *         c = 0             # <<<<<<<<<<<<<<
 *         c_attr = self._element._c_node.properties
 *         while c_attr is not NULL:
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2001
 *         cdef Py_ssize_t c
 *         c = 0
 *         c_attr = self._element._c_node.properties             # <<<<<<<<<<<<<<
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 */
  __pyx_v_c_attr = ((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2002
 *         c = 0
 *         c_attr = self._element._c_node.properties
 *         while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 c = c + 1
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2003
 *         c_attr = self._element._c_node.properties
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *                 c = c + 1
 *             c_attr = c_attr.next
 */
    __pyx_t_1 = (__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2004
 *         while c_attr is not NULL:
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 c = c + 1             # <<<<<<<<<<<<<<
 *             c_attr = c_attr.next
 *         return c
 */
      __pyx_v_c = (__pyx_v_c + 1);
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2005
 *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
 *                 c = c + 1
 *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *         return c
 * 
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2006
 *                 c = c + 1
 *             c_attr = c_attr.next
 *         return c             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key, default=None):
 */
  __pyx_r = __pyx_v_c;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2008
 *         return c
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         return _getAttributeValue(self._element, key, default)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._Attrib.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2009
 * 
 *     def get(self, key, default=None):
 *         return _getAttributeValue(self._element, key, default)             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__getAttributeValue(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Attrib.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2011
 *         return _getAttributeValue(self._element, key, default)
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._element._c_node, 1)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_keys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("keys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2012
 * 
 *     def keys(self):
 *         return _collectAttributes(self._element._c_node, 1)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Attrib.keys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2014
 *         return _collectAttributes(self._element._c_node, 1)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(_collectAttributes(self._element._c_node, 1))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2015
 * 
 *     def __iter__(self):
 *         return iter(_collectAttributes(self._element._c_node, 1))             # <<<<<<<<<<<<<<
 * 
 *     def iterkeys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2017
 *         return iter(_collectAttributes(self._element._c_node, 1))
 * 
 *     def iterkeys(self):             # <<<<<<<<<<<<<<
 *         return iter(_collectAttributes(self._element._c_node, 1))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_iterkeys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_iterkeys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("iterkeys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2018
 * 
 *     def iterkeys(self):
 *         return iter(_collectAttributes(self._element._c_node, 1))             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.iterkeys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2020
 *         return iter(_collectAttributes(self._element._c_node, 1))
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._element._c_node, 2)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_values(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("values");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2021
 * 
 *     def values(self):
 *         return _collectAttributes(self._element._c_node, 2)             # <<<<<<<<<<<<<<
 * 
 *     def itervalues(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Attrib.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2023
 *         return _collectAttributes(self._element._c_node, 2)
 * 
 *     def itervalues(self):             # <<<<<<<<<<<<<<
 *         return iter(_collectAttributes(self._element._c_node, 2))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_itervalues(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_itervalues(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("itervalues");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2024
 * 
 *     def itervalues(self):
 *         return iter(_collectAttributes(self._element._c_node, 2))             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.itervalues");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2026
 *         return iter(_collectAttributes(self._element._c_node, 2))
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._element._c_node, 3)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("items");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2027
 * 
 *     def items(self):
 *         return _collectAttributes(self._element._c_node, 3)             # <<<<<<<<<<<<<<
 * 
 *     def iteritems(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Attrib.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2029
 *         return _collectAttributes(self._element._c_node, 3)
 * 
 *     def iteritems(self):             # <<<<<<<<<<<<<<
 *         return iter(_collectAttributes(self._element._c_node, 3))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_iteritems(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_iteritems(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("iteritems");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2030
 * 
 *     def iteritems(self):
 *         return iter(_collectAttributes(self._element._c_node, 3))             # <<<<<<<<<<<<<<
 * 
 *     def has_key(self, key):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.iteritems");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2032
 *         return iter(_collectAttributes(self._element._c_node, 3))
 * 
 *     def has_key(self, key):             # <<<<<<<<<<<<<<
 *         if key in self:
 *             return True
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("has_key");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2033
 * 
 *     def has_key(self, key):
 *         if key in self:             # <<<<<<<<<<<<<<
 *             return True
 *         else:
 */
  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self, __pyx_v_key))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2034
 *     def has_key(self, key):
 *         if key in self:
 *             return True             # <<<<<<<<<<<<<<
 *         else:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2036
 *             return True
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, key):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Attrib.has_key");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2038
 *             return False
 * 
 *     def __contains__(self, key):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         cdef char* c_href
 */

static int __pyx_pf_4lxml_5etree_7_Attrib___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pf_4lxml_5etree_7_Attrib___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  xmlNode *__pyx_v_c_node;
  char *__pyx_v_c_href;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("__contains__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2041
 *         cdef xmlNode* c_node
 *         cdef char* c_href
 *         ns, tag = _getNsTag(key)             # <<<<<<<<<<<<<<
 *         c_node = self._element._c_node
 *         c_href = NULL if ns is None else _cstr(ns)
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2042
 *         cdef char* c_href
 *         ns, tag = _getNsTag(key)
 *         c_node = self._element._c_node             # <<<<<<<<<<<<<<
 *         c_href = NULL if ns is None else _cstr(ns)
 *         if tree.xmlHasNsProp(c_node, _cstr(tag), c_href):
 */
  __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self)->_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2043
 *         ns, tag = _getNsTag(key)
 *         c_node = self._element._c_node
 *         c_href = NULL if ns is None else _cstr(ns)             # <<<<<<<<<<<<<<
 *         if tree.xmlHasNsProp(c_node, _cstr(tag), c_href):
 *             return 1
 */
  __pyx_t_6 = (__pyx_v_ns == Py_None);
  if (__pyx_t_6) {
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_5 = PyString_AS_STRING(__pyx_v_ns);
  }
  __pyx_v_c_href = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2044
 *         c_node = self._element._c_node
 *         c_href = NULL if ns is None else _cstr(ns)
 *         if tree.xmlHasNsProp(c_node, _cstr(tag), c_href):             # <<<<<<<<<<<<<<
 *             return 1
 *         else:
 */
  __pyx_t_6 = (xmlHasNsProp(__pyx_v_c_node, PyString_AS_STRING(__pyx_v_tag), __pyx_v_c_href) != 0);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2045
 *         c_href = NULL if ns is None else _cstr(ns)
 *         if tree.xmlHasNsProp(c_node, _cstr(tag), c_href):
 *             return 1             # <<<<<<<<<<<<<<
 *         else:
 *             return 0
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2047
 *             return 1
 *         else:
 *             return 0             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(one, other, int op):
 */
    __pyx_r = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._Attrib.__contains__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2049
 *             return 0
 * 
 *     def __richcmp__(one, other, int op):             # <<<<<<<<<<<<<<
 *         if not python.PyDict_Check(one):
 *             one = dict(one)
 */

static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___richcmp__(PyObject *__pyx_v_one, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_Attrib___richcmp__(PyObject *__pyx_v_one, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__richcmp__");
  __Pyx_INCREF(__pyx_v_one);
  __Pyx_INCREF(__pyx_v_other);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2050
 * 
 *     def __richcmp__(one, other, int op):
 *         if not python.PyDict_Check(one):             # <<<<<<<<<<<<<<
 *             one = dict(one)
 *         if not python.PyDict_Check(other):
 */
  __pyx_t_1 = (!PyDict_Check(__pyx_v_one));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2051
 *     def __richcmp__(one, other, int op):
 *         if not python.PyDict_Check(one):
 *             one = dict(one)             # <<<<<<<<<<<<<<
 *         if not python.PyDict_Check(other):
 *             other = dict(other)
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_one);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_one);
    __Pyx_GIVEREF(__pyx_v_one);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_one);
    __pyx_v_one = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2052
 *         if not python.PyDict_Check(one):
 *             one = dict(one)
 *         if not python.PyDict_Check(other):             # <<<<<<<<<<<<<<
 *             other = dict(other)
 *         return python.PyObject_RichCompare(one, other, op)
 */
  __pyx_t_1 = (!PyDict_Check(__pyx_v_other));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2053
 *             one = dict(one)
 *         if not python.PyDict_Check(other):
 *             other = dict(other)             # <<<<<<<<<<<<<<
 *         return python.PyObject_RichCompare(one, other, op)
 * 
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_other);
    __Pyx_GIVEREF(__pyx_v_other);
    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_other);
    __pyx_v_other = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2054
 *         if not python.PyDict_Check(other):
 *             other = dict(other)
 *         return python.PyObject_RichCompare(one, other, op)             # <<<<<<<<<<<<<<
 * 
 * cdef class _AttribIterator:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_one, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._Attrib.__richcmp__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_one);
  __Pyx_DECREF(__pyx_v_other);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2063
 *     cdef xmlAttr* _c_attr
 *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2064
 *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2066
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlAttr* c_attr
 *         if self._node is None:
 */

static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___next__(PyObject *__pyx_v_self) {
  xmlAttr *__pyx_v_c_attr;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2068
 *     def __next__(self):
 *         cdef xmlAttr* c_attr
 *         if self._node is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c_attr = self._c_attr
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2069
 *         cdef xmlAttr* c_attr
 *         if self._node is None:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         c_attr = self._c_attr
 *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2070
 *         if self._node is None:
 *             raise StopIteration
 *         c_attr = self._c_attr             # <<<<<<<<<<<<<<
 *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
 *             c_attr = c_attr.next
 */
  __pyx_v_c_attr = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_c_attr;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2071
 *             raise StopIteration
 *         c_attr = self._c_attr
 *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *             c_attr = c_attr.next
 *         if c_attr is NULL:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c_attr->type != XML_ATTRIBUTE_NODE);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2072
 *         c_attr = self._c_attr
 *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
 *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *         if c_attr is NULL:
 *             self._node = None
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2073
 *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
 *             c_attr = c_attr.next
 *         if c_attr is NULL:             # <<<<<<<<<<<<<<
 *             self._node = None
 *             raise StopIteration
 */
  __pyx_t_3 = (__pyx_v_c_attr == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2074
 *             c_attr = c_attr.next
 *         if c_attr is NULL:
 *             self._node = None             # <<<<<<<<<<<<<<
 *             raise StopIteration
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node));
    ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node = ((struct LxmlElement *)Py_None);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2075
 *         if c_attr is NULL:
 *             self._node = None
 *             raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *         self._c_attr = c_attr.next
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2077
 *             raise StopIteration
 * 
 *         self._c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *         if self._keysvalues == 1:
 *             return _namespacedName(<xmlNode*>c_attr)
 */
  ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_c_attr = __pyx_v_c_attr->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2078
 * 
 *         self._c_attr = c_attr.next
 *         if self._keysvalues == 1:             # <<<<<<<<<<<<<<
 *             return _namespacedName(<xmlNode*>c_attr)
 *         elif self._keysvalues == 2:
 */
  switch (((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_keysvalues) {
    case 1:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2079
 *         self._c_attr = c_attr.next
 *         if self._keysvalues == 1:
 *             return _namespacedName(<xmlNode*>c_attr)             # <<<<<<<<<<<<<<
 *         elif self._keysvalues == 2:
 *             return _attributeValue(self._node._c_node, c_attr)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2080
 *         if self._keysvalues == 1:
 *             return _namespacedName(<xmlNode*>c_attr)
 *         elif self._keysvalues == 2:             # <<<<<<<<<<<<<<
 *             return _attributeValue(self._node._c_node, c_attr)
 *         else:
 */
    case 2:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2081
 *             return _namespacedName(<xmlNode*>c_attr)
 *         elif self._keysvalues == 2:
 *             return _attributeValue(self._node._c_node, c_attr)             # <<<<<<<<<<<<<<
 *         else:
 *             return (_namespacedName(<xmlNode*>c_attr),
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4lxml_5etree__attributeValue(((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node->_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    break;
    default:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2083
 *             return _attributeValue(self._node._c_node, c_attr)
 *         else:
 *             return (_namespacedName(<xmlNode*>c_attr),             # <<<<<<<<<<<<<<
 *                     _attributeValue(self._node._c_node, c_attr))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2084
 *         else:
 *             return (_namespacedName(<xmlNode*>c_attr),
 *                     _attributeValue(self._node._c_node, c_attr))             # <<<<<<<<<<<<<<
 * 
 * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__attributeValue(((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_v_self)->_node->_c_node, __pyx_v_c_attr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
    break;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._AttribIterator.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2086
 *                     _attributeValue(self._node._c_node, c_attr))
 * 
 * cdef object _attributeIteratorFactory(_Element element, int keysvalues):             # <<<<<<<<<<<<<<
 *     cdef _AttribIterator attribs
 *     if element._c_node.properties is NULL:
 */

static  PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlElement *__pyx_v_element, int __pyx_v_keysvalues) {
  struct __pyx_obj_4lxml_5etree__AttribIterator *__pyx_v_attribs;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_attributeIteratorFactory");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __pyx_v_attribs = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2088
 * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
 *     cdef _AttribIterator attribs
 *     if element._c_node.properties is NULL:             # <<<<<<<<<<<<<<
 *         return ITER_EMPTY
 *     attribs = _AttribIterator()
 */
  __pyx_t_1 = (__pyx_v_element->_c_node->properties == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2089
 *     cdef _AttribIterator attribs
 *     if element._c_node.properties is NULL:
 *         return ITER_EMPTY             # <<<<<<<<<<<<<<
 *     attribs = _AttribIterator()
 *     attribs._node = element
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
    __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2090
 *     if element._c_node.properties is NULL:
 *         return ITER_EMPTY
 *     attribs = _AttribIterator()             # <<<<<<<<<<<<<<
 *     attribs._node = element
 *     attribs._c_attr = element._c_node.properties
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__AttribIterator)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_attribs));
  __pyx_v_attribs = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2091
 *         return ITER_EMPTY
 *     attribs = _AttribIterator()
 *     attribs._node = element             # <<<<<<<<<<<<<<
 *     attribs._c_attr = element._c_node.properties
 *     attribs._keysvalues = keysvalues
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_element));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
  __Pyx_GOTREF(__pyx_v_attribs->_node);
  __Pyx_DECREF(((PyObject *)__pyx_v_attribs->_node));
  __pyx_v_attribs->_node = __pyx_v_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2092
 *     attribs = _AttribIterator()
 *     attribs._node = element
 *     attribs._c_attr = element._c_node.properties             # <<<<<<<<<<<<<<
 *     attribs._keysvalues = keysvalues
 *     return attribs
 */
  __pyx_v_attribs->_c_attr = __pyx_v_element->_c_node->properties;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2093
 *     attribs._node = element
 *     attribs._c_attr = element._c_node.properties
 *     attribs._keysvalues = keysvalues             # <<<<<<<<<<<<<<
 *     return attribs
 * 
 */
  __pyx_v_attribs->_keysvalues = __pyx_v_keysvalues;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2094
 *     attribs._c_attr = element._c_node.properties
 *     attribs._keysvalues = keysvalues
 *     return attribs             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_attribs));
  __pyx_r = ((PyObject *)__pyx_v_attribs);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._attributeIteratorFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_attribs);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2103
 *     cdef char* _href
 *     cdef char* _name
 *     cdef _initTagMatch(self, tag):             # <<<<<<<<<<<<<<
 *         self._href = NULL
 *         self._name = NULL
 */

static  PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct LxmlElementTagMatcher *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_initTagMatch");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2104
 *     cdef char* _name
 *     cdef _initTagMatch(self, tag):
 *         self._href = NULL             # <<<<<<<<<<<<<<
 *         self._name = NULL
 *         if tag is None:
 */
  __pyx_v_self->_href = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2105
 *     cdef _initTagMatch(self, tag):
 *         self._href = NULL
 *         self._name = NULL             # <<<<<<<<<<<<<<
 *         if tag is None:
 *             self._node_type = 0
 */
  __pyx_v_self->_name = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2106
 *         self._href = NULL
 *         self._name = NULL
 *         if tag is None:             # <<<<<<<<<<<<<<
 *             self._node_type = 0
 *         elif tag is Comment:
 */
  __pyx_t_1 = (__pyx_v_tag == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2107
 *         self._name = NULL
 *         if tag is None:
 *             self._node_type = 0             # <<<<<<<<<<<<<<
 *         elif tag is Comment:
 *             self._node_type = tree.XML_COMMENT_NODE
 */
    __pyx_v_self->_node_type = 0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2108
 *         if tag is None:
 *             self._node_type = 0
 *         elif tag is Comment:             # <<<<<<<<<<<<<<
 *             self._node_type = tree.XML_COMMENT_NODE
 *         elif tag is ProcessingInstruction:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__Comment); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__pyx_v_tag == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2109
 *             self._node_type = 0
 *         elif tag is Comment:
 *             self._node_type = tree.XML_COMMENT_NODE             # <<<<<<<<<<<<<<
 *         elif tag is ProcessingInstruction:
 *             self._node_type = tree.XML_PI_NODE
 */
    __pyx_v_self->_node_type = XML_COMMENT_NODE;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2110
 *         elif tag is Comment:
 *             self._node_type = tree.XML_COMMENT_NODE
 *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
 *             self._node_type = tree.XML_PI_NODE
 *         elif tag is Entity:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__pyx_v_tag == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2111
 *             self._node_type = tree.XML_COMMENT_NODE
 *         elif tag is ProcessingInstruction:
 *             self._node_type = tree.XML_PI_NODE             # <<<<<<<<<<<<<<
 *         elif tag is Entity:
 *             self._node_type = tree.XML_ENTITY_REF_NODE
 */
    __pyx_v_self->_node_type = XML_PI_NODE;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2112
 *         elif tag is ProcessingInstruction:
 *             self._node_type = tree.XML_PI_NODE
 *         elif tag is Entity:             # <<<<<<<<<<<<<<
 *             self._node_type = tree.XML_ENTITY_REF_NODE
 *         elif tag is Element:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__Entity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__pyx_v_tag == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2113
 *             self._node_type = tree.XML_PI_NODE
 *         elif tag is Entity:
 *             self._node_type = tree.XML_ENTITY_REF_NODE             # <<<<<<<<<<<<<<
 *         elif tag is Element:
 *             self._node_type = tree.XML_ELEMENT_NODE
 */
    __pyx_v_self->_node_type = XML_ENTITY_REF_NODE;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2114
 *         elif tag is Entity:
 *             self._node_type = tree.XML_ENTITY_REF_NODE
 *         elif tag is Element:             # <<<<<<<<<<<<<<
 *             self._node_type = tree.XML_ELEMENT_NODE
 *         else:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__Element); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__pyx_v_tag == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2115
 *             self._node_type = tree.XML_ENTITY_REF_NODE
 *         elif tag is Element:
 *             self._node_type = tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
 *         else:
 *             self._node_type = tree.XML_ELEMENT_NODE
 */
    __pyx_v_self->_node_type = XML_ELEMENT_NODE;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2117
 *             self._node_type = tree.XML_ELEMENT_NODE
 *         else:
 *             self._node_type = tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
 *             self._pystrings = _getNsTag(tag)
 *             if self._pystrings[0] is not None:
 */
    __pyx_v_self->_node_type = XML_ELEMENT_NODE;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2118
 *         else:
 *             self._node_type = tree.XML_ELEMENT_NODE
 *             self._pystrings = _getNsTag(tag)             # <<<<<<<<<<<<<<
 *             if self._pystrings[0] is not None:
 *                 self._href = _cstr(self._pystrings[0])
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_pystrings);
    __Pyx_DECREF(__pyx_v_self->_pystrings);
    __pyx_v_self->_pystrings = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2119
 *             self._node_type = tree.XML_ELEMENT_NODE
 *             self._pystrings = _getNsTag(tag)
 *             if self._pystrings[0] is not None:             # <<<<<<<<<<<<<<
 *                 self._href = _cstr(self._pystrings[0])
 *             self._name = _cstr(self._pystrings[1])
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = (__pyx_t_2 != Py_None);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2120
 *             self._pystrings = _getNsTag(tag)
 *             if self._pystrings[0] is not None:
 *                 self._href = _cstr(self._pystrings[0])             # <<<<<<<<<<<<<<
 *             self._name = _cstr(self._pystrings[1])
 *             if self._name[0] == c'*' and self._name[1] == c'\0':
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_self->_href = PyString_AS_STRING(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2121
 *             if self._pystrings[0] is not None:
 *                 self._href = _cstr(self._pystrings[0])
 *             self._name = _cstr(self._pystrings[1])             # <<<<<<<<<<<<<<
 *             if self._name[0] == c'*' and self._name[1] == c'\0':
 *                 self._name = NULL
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->_pystrings, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_self->_name = PyString_AS_STRING(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2122
 *                 self._href = _cstr(self._pystrings[0])
 *             self._name = _cstr(self._pystrings[1])
 *             if self._name[0] == c'*' and self._name[1] == c'\0':             # <<<<<<<<<<<<<<
 *                 self._name = NULL
 * 
 */
    __pyx_t_1 = ((__pyx_v_self->_name[0]) == '*');
    if (__pyx_t_1) {
      __pyx_t_3 = ((__pyx_v_self->_name[1]) == '\x00');
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2123
 *             self._name = _cstr(self._pystrings[1])
 *             if self._name[0] == c'*' and self._name[1] == c'\0':
 *                 self._name = NULL             # <<<<<<<<<<<<<<
 * 
 * cdef public class _ElementIterator(_ElementTagMatcher) [
 */
      __pyx_v_self->_name = NULL;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ElementTagMatcher._initTagMatch");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2130
 *     cdef _Element _node
 *     cdef _node_to_node_function _next_element
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2131
 *     cdef _node_to_node_function _next_element
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     cdef void _storeNext(self, _Element node):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2133
 *         return self
 * 
 *     cdef void _storeNext(self, _Element node):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         c_node = self._next_element(node._c_node)
 */

static  void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElementIterator *__pyx_v_self, struct LxmlElement *__pyx_v_node) {
  xmlNode *__pyx_v_c_node;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_storeNext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2135
 *     cdef void _storeNext(self, _Element node):
 *         cdef xmlNode* c_node
 *         c_node = self._next_element(node._c_node)             # <<<<<<<<<<<<<<
 *         while c_node is not NULL and \
 *                   self._node_type != 0 and \
 */
  __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_node->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2136
 *         cdef xmlNode* c_node
 *         c_node = self._next_element(node._c_node)
 *         while c_node is not NULL and \             # <<<<<<<<<<<<<<
 *                   self._node_type != 0 and \
 *                   (self._node_type != c_node.type or
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2137
 *         c_node = self._next_element(node._c_node)
 *         while c_node is not NULL and \
 *                   self._node_type != 0 and \             # <<<<<<<<<<<<<<
 *                   (self._node_type != c_node.type or
 *                    not _tagMatches(c_node, self._href, self._name)):
 */
      __pyx_t_2 = (__pyx_v_self->__pyx_base._node_type != 0);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2138
 *         while c_node is not NULL and \
 *                   self._node_type != 0 and \
 *                   (self._node_type != c_node.type or             # <<<<<<<<<<<<<<
 *                    not _tagMatches(c_node, self._href, self._name)):
 *             c_node = self._next_element(c_node)
 */
        __pyx_t_3 = (__pyx_v_self->__pyx_base._node_type != __pyx_v_c_node->type);
        if (!__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2139
 *                   self._node_type != 0 and \
 *                   (self._node_type != c_node.type or
 *                    not _tagMatches(c_node, self._href, self._name)):             # <<<<<<<<<<<<<<
 *             c_node = self._next_element(c_node)
 *         if c_node is NULL:
 */
          __pyx_t_4 = (!__pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_self->__pyx_base._href, __pyx_v_self->__pyx_base._name));
          __pyx_t_5 = __pyx_t_4;
        } else {
          __pyx_t_5 = __pyx_t_3;
        }
        __pyx_t_3 = __pyx_t_5;
      } else {
        __pyx_t_3 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_3;
    } else {
      __pyx_t_2 = __pyx_t_1;
    }
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2140
 *                   (self._node_type != c_node.type or
 *                    not _tagMatches(c_node, self._href, self._name)):
 *             c_node = self._next_element(c_node)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             self._node = None
 */
    __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_c_node);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2141
 *                    not _tagMatches(c_node, self._href, self._name)):
 *             c_node = self._next_element(c_node)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             self._node = None
 *         else:
 */
  __pyx_t_2 = (__pyx_v_c_node == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2142
 *             c_node = self._next_element(c_node)
 *         if c_node is NULL:
 *             self._node = None             # <<<<<<<<<<<<<<
 *         else:
 *             # Python ref:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_node);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_node));
    __pyx_v_self->_node = ((struct LxmlElement *)Py_None);
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2145
 *         else:
 *             # Python ref:
 *             self._node = _elementFactory(node._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_node->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_v_self->_node);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_node));
    __pyx_v_self->_node = ((struct LxmlElement *)__pyx_t_6);
    __pyx_t_6 = 0;
  }
  __pyx_L5:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._ElementIterator._storeNext");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2147
 *             self._node = _elementFactory(node._doc, c_node)
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         cdef _Element current_node
 */

static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___next__(PyObject *__pyx_v_self) {
  struct LxmlElement *__pyx_v_current_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_current_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2150
 *         cdef xmlNode* c_node
 *         cdef _Element current_node
 *         if self._node is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         # Python ref:
 */
  __pyx_t_1 = (((PyObject *)((struct LxmlElementIterator *)__pyx_v_self)->_node) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2151
 *         cdef _Element current_node
 *         if self._node is None:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         # Python ref:
 *         current_node = self._node
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2153
 *             raise StopIteration
 *         # Python ref:
 *         current_node = self._node             # <<<<<<<<<<<<<<
 *         self._storeNext(current_node)
 *         return current_node
 */
  __Pyx_INCREF(((PyObject *)((struct LxmlElementIterator *)__pyx_v_self)->_node));
  __Pyx_DECREF(((PyObject *)__pyx_v_current_node));
  __pyx_v_current_node = ((struct LxmlElementIterator *)__pyx_v_self)->_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2154
 *         # Python ref:
 *         current_node = self._node
 *         self._storeNext(current_node)             # <<<<<<<<<<<<<<
 *         return current_node
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *)((struct LxmlElementIterator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_storeNext(((struct LxmlElementIterator *)__pyx_v_self), __pyx_v_current_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2155
 *         current_node = self._node
 *         self._storeNext(current_node)
 *         return current_node             # <<<<<<<<<<<<<<
 * 
 * cdef class ElementChildIterator(_ElementIterator):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_current_node));
  __pyx_r = ((PyObject *)__pyx_v_current_node);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ElementIterator.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_current_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2161
 *     Iterates over the children of an element.
 *     """
 *     def __init__(self, _Element node not None, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         self._initTagMatch(tag)
 */

static int __pyx_pf_4lxml_5etree_20ElementChildIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_20ElementChildIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_node = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_reversed = 0;
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__node,&__pyx_n_s__tag,&__pyx_n_s__reversed,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_84;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reversed);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_node = ((struct LxmlElement *)values[0]);
    __pyx_v_tag = values[1];
    __pyx_v_reversed = values[2];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_reversed = __pyx_k_84;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_node = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementChildIterator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_reversed);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2163
 *     def __init__(self, _Element node not None, tag=None, *, reversed=False):
 *         cdef xmlNode* c_node
 *         self._initTagMatch(tag)             # <<<<<<<<<<<<<<
 *         if reversed:
 *             c_node = _findChildBackwards(node._c_node, 0)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator *)((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._initTagMatch(((struct LxmlElementTagMatcher *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2164
 *         cdef xmlNode* c_node
 *         self._initTagMatch(tag)
 *         if reversed:             # <<<<<<<<<<<<<<
 *             c_node = _findChildBackwards(node._c_node, 0)
 *             self._next_element = _previousElement
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_reversed); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2165
 *         self._initTagMatch(tag)
 *         if reversed:
 *             c_node = _findChildBackwards(node._c_node, 0)             # <<<<<<<<<<<<<<
 *             self._next_element = _previousElement
 *         else:
 */
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_node->_c_node, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2166
 *         if reversed:
 *             c_node = _findChildBackwards(node._c_node, 0)
 *             self._next_element = _previousElement             # <<<<<<<<<<<<<<
 *         else:
 *             c_node = _findChildForwards(node._c_node, 0)
 */
    ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2168
 *             self._next_element = _previousElement
 *         else:
 *             c_node = _findChildForwards(node._c_node, 0)             # <<<<<<<<<<<<<<
 *             self._next_element = _nextElement
 *         if tag is not None:
 */
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2169
 *         else:
 *             c_node = _findChildForwards(node._c_node, 0)
 *             self._next_element = _nextElement             # <<<<<<<<<<<<<<
 *         if tag is not None:
 *             while c_node is not NULL and \
 */
    ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._next_element = __pyx_f_4lxml_5etree__nextElement;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2170
 *             c_node = _findChildForwards(node._c_node, 0)
 *             self._next_element = _nextElement
 *         if tag is not None:             # <<<<<<<<<<<<<<
 *             while c_node is not NULL and \
 *                       self._node_type != 0 and \
 */
  __pyx_t_2 = (__pyx_v_tag != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2171
 *             self._next_element = _nextElement
 *         if tag is not None:
 *             while c_node is not NULL and \             # <<<<<<<<<<<<<<
 *                       self._node_type != 0 and \
 *                       (self._node_type != c_node.type or
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_c_node != NULL);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2172
 *         if tag is not None:
 *             while c_node is not NULL and \
 *                       self._node_type != 0 and \             # <<<<<<<<<<<<<<
 *                       (self._node_type != c_node.type or
 *                        not _tagMatches(c_node, self._href, self._name)):
 */
        __pyx_t_3 = (((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base.__pyx_base._node_type != 0);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2173
 *             while c_node is not NULL and \
 *                       self._node_type != 0 and \
 *                       (self._node_type != c_node.type or             # <<<<<<<<<<<<<<
 *                        not _tagMatches(c_node, self._href, self._name)):
 *                 c_node = self._next_element(c_node)
 */
          __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base.__pyx_base._node_type != __pyx_v_c_node->type);
          if (!__pyx_t_4) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2174
 *                       self._node_type != 0 and \
 *                       (self._node_type != c_node.type or
 *                        not _tagMatches(c_node, self._href, self._name)):             # <<<<<<<<<<<<<<
 *                 c_node = self._next_element(c_node)
 *         if c_node is not NULL:
 */
            __pyx_t_5 = (!__pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base.__pyx_base._href, ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base.__pyx_base._name));
            __pyx_t_6 = __pyx_t_5;
          } else {
            __pyx_t_6 = __pyx_t_4;
          }
          __pyx_t_4 = __pyx_t_6;
        } else {
          __pyx_t_4 = __pyx_t_3;
        }
        __pyx_t_3 = __pyx_t_4;
      } else {
        __pyx_t_3 = __pyx_t_2;
      }
      if (!__pyx_t_3) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2175
 *                       (self._node_type != c_node.type or
 *                        not _tagMatches(c_node, self._href, self._name)):
 *                 c_node = self._next_element(c_node)             # <<<<<<<<<<<<<<
 *         if c_node is not NULL:
 *             # store Python ref:
 */
      __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._next_element(__pyx_v_c_node);
    }
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2176
 *                        not _tagMatches(c_node, self._href, self._name)):
 *                 c_node = self._next_element(c_node)
 *         if c_node is not NULL:             # <<<<<<<<<<<<<<
 *             # store Python ref:
 *             self._node = _elementFactory(node._doc, c_node)
 */
  __pyx_t_3 = (__pyx_v_c_node != NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2178
 *         if c_node is not NULL:
 *             # store Python ref:
 *             self._node = _elementFactory(node._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef class SiblingsIterator(_ElementIterator):
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_node->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._node);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._node));
    ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self)->__pyx_base._node = ((struct LxmlElement *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.ElementChildIterator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_reversed);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2186
 *     You can pass the boolean keyword ``preceding`` to specify the direction.
 *     """
 *     def __init__(self, _Element node not None, tag=None, *, preceding=False):             # <<<<<<<<<<<<<<
 *         self._initTagMatch(tag)
 *         if preceding:
 */

static int __pyx_pf_4lxml_5etree_16SiblingsIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_16SiblingsIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_node = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_preceding = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__node,&__pyx_n_s__tag,&__pyx_n_s__preceding,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_85;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__preceding);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_node = ((struct LxmlElement *)values[0]);
    __pyx_v_tag = values[1];
    __pyx_v_preceding = values[2];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_preceding = __pyx_k_85;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_node = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.SiblingsIterator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_preceding);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2187
 *     """
 *     def __init__(self, _Element node not None, tag=None, *, preceding=False):
 *         self._initTagMatch(tag)             # <<<<<<<<<<<<<<
 *         if preceding:
 *             self._next_element = _previousElement
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator *)((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._initTagMatch(((struct LxmlElementTagMatcher *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2188
 *     def __init__(self, _Element node not None, tag=None, *, preceding=False):
 *         self._initTagMatch(tag)
 *         if preceding:             # <<<<<<<<<<<<<<
 *             self._next_element = _previousElement
 *         else:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_preceding); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2189
 *         self._initTagMatch(tag)
 *         if preceding:
 *             self._next_element = _previousElement             # <<<<<<<<<<<<<<
 *         else:
 *             self._next_element = _nextElement
 */
    ((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)__pyx_v_self)->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2191
 *             self._next_element = _previousElement
 *         else:
 *             self._next_element = _nextElement             # <<<<<<<<<<<<<<
 *         self._storeNext(node)
 * 
 */
    ((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)__pyx_v_self)->__pyx_base._next_element = __pyx_f_4lxml_5etree__nextElement;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2192
 *         else:
 *             self._next_element = _nextElement
 *         self._storeNext(node)             # <<<<<<<<<<<<<<
 * 
 * cdef class AncestorsIterator(_ElementIterator):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator *)((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._storeNext(((struct LxmlElementIterator *)__pyx_v_self), __pyx_v_node);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.SiblingsIterator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_preceding);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2198
 *     Iterates over the ancestors of an element (from parent to parent).
 *     """
 *     def __init__(self, _Element node not None, tag=None):             # <<<<<<<<<<<<<<
 *         self._initTagMatch(tag)
 *         self._next_element = _parentElement
 */

static int __pyx_pf_4lxml_5etree_17AncestorsIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17AncestorsIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_node = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__node,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2198; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_node = ((struct LxmlElement *)values[0]);
    __pyx_v_tag = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_node = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2198; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.AncestorsIterator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2199
 *     """
 *     def __init__(self, _Element node not None, tag=None):
 *         self._initTagMatch(tag)             # <<<<<<<<<<<<<<
 *         self._next_element = _parentElement
 *         self._storeNext(node)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator *)((struct __pyx_obj_4lxml_5etree_AncestorsIterator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._initTagMatch(((struct LxmlElementTagMatcher *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2200
 *     def __init__(self, _Element node not None, tag=None):
 *         self._initTagMatch(tag)
 *         self._next_element = _parentElement             # <<<<<<<<<<<<<<
 *         self._storeNext(node)
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_AncestorsIterator *)__pyx_v_self)->__pyx_base._next_element = __pyx_f_4lxml_5etree__parentElement;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2201
 *         self._initTagMatch(tag)
 *         self._next_element = _parentElement
 *         self._storeNext(node)             # <<<<<<<<<<<<<<
 * 
 * cdef class ElementDepthFirstIterator(_ElementTagMatcher):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator *)((struct __pyx_obj_4lxml_5etree_AncestorsIterator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._storeNext(((struct LxmlElementIterator *)__pyx_v_self), __pyx_v_node);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.AncestorsIterator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2227
 *     cdef _Element _next_node
 *     cdef _Element _top_node
 *     def __init__(self, _Element node not None, tag=None, *, inclusive=True):             # <<<<<<<<<<<<<<
 *         self._top_node  = node
 *         self._next_node = node
 */

static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_node = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_inclusive = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__node,&__pyx_n_s__tag,&__pyx_n_s__inclusive,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_86;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__inclusive);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_node = ((struct LxmlElement *)values[0]);
    __pyx_v_tag = values[1];
    __pyx_v_inclusive = values[2];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_inclusive = __pyx_k_86;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_node = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_inclusive);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2228
 *     cdef _Element _top_node
 *     def __init__(self, _Element node not None, tag=None, *, inclusive=True):
 *         self._top_node  = node             # <<<<<<<<<<<<<<
 *         self._next_node = node
 *         self._initTagMatch(tag)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_node));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_top_node);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_top_node));
  ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_top_node = __pyx_v_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2229
 *     def __init__(self, _Element node not None, tag=None, *, inclusive=True):
 *         self._top_node  = node
 *         self._next_node = node             # <<<<<<<<<<<<<<
 *         self._initTagMatch(tag)
 *         if not inclusive or \
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_node));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node));
  ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node = __pyx_v_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2230
 *         self._top_node  = node
 *         self._next_node = node
 *         self._initTagMatch(tag)             # <<<<<<<<<<<<<<
 *         if not inclusive or \
 *                tag is not None and \
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._initTagMatch(((struct LxmlElementTagMatcher *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2231
 *         self._next_node = node
 *         self._initTagMatch(tag)
 *         if not inclusive or \             # <<<<<<<<<<<<<<
 *                tag is not None and \
 *                self._node_type != 0 and \
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_2);
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2232
 *         self._initTagMatch(tag)
 *         if not inclusive or \
 *                tag is not None and \             # <<<<<<<<<<<<<<
 *                self._node_type != 0 and \
 *                (self._node_type != node._c_node.type or
 */
    __pyx_t_2 = (__pyx_v_tag != Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2233
 *         if not inclusive or \
 *                tag is not None and \
 *                self._node_type != 0 and \             # <<<<<<<<<<<<<<
 *                (self._node_type != node._c_node.type or
 *                 not _tagMatches(node._c_node, self._href, self._name)):
 */
      __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._node_type != 0);
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2234
 *                tag is not None and \
 *                self._node_type != 0 and \
 *                (self._node_type != node._c_node.type or             # <<<<<<<<<<<<<<
 *                 not _tagMatches(node._c_node, self._href, self._name)):
 *             # this cannot raise StopIteration, self._next_node != None
 */
        __pyx_t_5 = (((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._node_type != __pyx_v_node->_c_node->type);
        if (!__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2235
 *                self._node_type != 0 and \
 *                (self._node_type != node._c_node.type or
 *                 not _tagMatches(node._c_node, self._href, self._name)):             # <<<<<<<<<<<<<<
 *             # this cannot raise StopIteration, self._next_node != None
 *             self.__next__()
 */
          __pyx_t_6 = (!__pyx_f_4lxml_5etree__tagMatches(__pyx_v_node->_c_node, ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._href, ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._name));
          __pyx_t_7 = __pyx_t_6;
        } else {
          __pyx_t_7 = __pyx_t_5;
        }
        __pyx_t_5 = __pyx_t_7;
      } else {
        __pyx_t_5 = __pyx_t_4;
      }
      __pyx_t_4 = __pyx_t_5;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2237
 *                 not _tagMatches(node._c_node, self._href, self._name)):
 *             # this cannot raise StopIteration, self._next_node != None
 *             self.__next__()             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____next__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_inclusive);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2239
 *             self.__next__()
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2240
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2242
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         cdef _Element current_node
 */

static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___next__(PyObject *__pyx_v_self) {
  xmlNode *__pyx_v_c_node;
  struct LxmlElement *__pyx_v_current_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_current_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2245
 *         cdef xmlNode* c_node
 *         cdef _Element current_node
 *         if self._next_node is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         current_node = self._next_node
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2246
 *         cdef _Element current_node
 *         if self._next_node is None:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         current_node = self._next_node
 *         c_node = self._next_node._c_node
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2247
 *         if self._next_node is None:
 *             raise StopIteration
 *         current_node = self._next_node             # <<<<<<<<<<<<<<
 *         c_node = self._next_node._c_node
 *         if self._name is NULL and self._href is NULL:
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node));
  __Pyx_DECREF(((PyObject *)__pyx_v_current_node));
  __pyx_v_current_node = ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2248
 *             raise StopIteration
 *         current_node = self._next_node
 *         c_node = self._next_node._c_node             # <<<<<<<<<<<<<<
 *         if self._name is NULL and self._href is NULL:
 *             c_node = self._nextNodeAnyTag(c_node)
 */
  __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2249
 *         current_node = self._next_node
 *         c_node = self._next_node._c_node
 *         if self._name is NULL and self._href is NULL:             # <<<<<<<<<<<<<<
 *             c_node = self._nextNodeAnyTag(c_node)
 *         else:
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._name == NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base._href == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2250
 *         c_node = self._next_node._c_node
 *         if self._name is NULL and self._href is NULL:
 *             c_node = self._nextNodeAnyTag(c_node)             # <<<<<<<<<<<<<<
 *         else:
 *             c_node = self._nextNodeMatchTag(c_node)
 */
    __pyx_v_c_node = ((struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_nextNodeAnyTag(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self), __pyx_v_c_node);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2252
 *             c_node = self._nextNodeAnyTag(c_node)
 *         else:
 *             c_node = self._nextNodeMatchTag(c_node)             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             self._next_node = None
 */
    __pyx_v_c_node = ((struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_nextNodeMatchTag(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self), __pyx_v_c_node);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2253
 *         else:
 *             c_node = self._nextNodeMatchTag(c_node)
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             self._next_node = None
 *         else:
 */
  __pyx_t_3 = (__pyx_v_c_node == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2254
 *             c_node = self._nextNodeMatchTag(c_node)
 *         if c_node is NULL:
 *             self._next_node = None             # <<<<<<<<<<<<<<
 *         else:
 *             self._next_node = _elementFactory(current_node._doc, c_node)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node));
    ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node = ((struct LxmlElement *)Py_None);
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2256
 *             self._next_node = None
 *         else:
 *             self._next_node = _elementFactory(current_node._doc, c_node)             # <<<<<<<<<<<<<<
 *         return current_node
 * 
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_current_node->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node));
    ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self)->_next_node = ((struct LxmlElement *)__pyx_t_4);
    __pyx_t_4 = 0;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2257
 *         else:
 *             self._next_node = _elementFactory(current_node._doc, c_node)
 *         return current_node             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_current_node));
  __pyx_r = ((PyObject *)__pyx_v_current_node);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_current_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2259
 *         return current_node
 * 
 *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if self._node_type == 0 or self._node_type == c_node.type:
 */

static  xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self, xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_nextNodeAnyTag");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2260
 * 
 *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)             # <<<<<<<<<<<<<<
 *         if self._node_type == 0 or self._node_type == c_node.type:
 *             return c_node
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2261
 *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if self._node_type == 0 or self._node_type == c_node.type:             # <<<<<<<<<<<<<<
 *             return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base._node_type == 0);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_self->__pyx_base._node_type == __pyx_v_c_node->type);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2262
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if self._node_type == 0 or self._node_type == c_node.type:
 *             return c_node             # <<<<<<<<<<<<<<
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *         return NULL
 */
    __pyx_r = __pyx_v_c_node;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2263
 *         if self._node_type == 0 or self._node_type == c_node.type:
 *             return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 *         return NULL
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2264
 *             return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *         return NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2266
 *         return NULL
 * 
 *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *         cdef char* c_name = NULL
 *         if self._name is not NULL:
 */

static  xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *__pyx_v_self, xmlNode *__pyx_v_c_node) {
  char *__pyx_v_c_name;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_nextNodeMatchTag");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2267
 * 
 *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
 *         cdef char* c_name = NULL             # <<<<<<<<<<<<<<
 *         if self._name is not NULL:
 *             c_name = tree.xmlDictExists(c_node.doc.dict, self._name, -1)
 */
  __pyx_v_c_name = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2268
 *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
 *         cdef char* c_name = NULL
 *         if self._name is not NULL:             # <<<<<<<<<<<<<<
 *             c_name = tree.xmlDictExists(c_node.doc.dict, self._name, -1)
 *             if c_name is NULL:
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base._name != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2269
 *         cdef char* c_name = NULL
 *         if self._name is not NULL:
 *             c_name = tree.xmlDictExists(c_node.doc.dict, self._name, -1)             # <<<<<<<<<<<<<<
 *             if c_name is NULL:
 *                 # not found in dict => not in document at all
 */
    __pyx_v_c_name = xmlDictExists(__pyx_v_c_node->doc->dict, __pyx_v_self->__pyx_base._name, -1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2270
 *         if self._name is not NULL:
 *             c_name = tree.xmlDictExists(c_node.doc.dict, self._name, -1)
 *             if c_name is NULL:             # <<<<<<<<<<<<<<
 *                 # not found in dict => not in document at all
 *                 return NULL
 */
    __pyx_t_1 = (__pyx_v_c_name == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2272
 *             if c_name is NULL:
 *                 # not found in dict => not in document at all
 *                 return NULL             # <<<<<<<<<<<<<<
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if c_node.type == tree.XML_ELEMENT_NODE:
 */
      __pyx_r = NULL;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2273
 *                 # not found in dict => not in document at all
 *                 return NULL
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)             # <<<<<<<<<<<<<<
 *         if c_node.type == tree.XML_ELEMENT_NODE:
 *             if (c_name is NULL or c_name is c_node.name) and \
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2274
 *                 return NULL
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *             if (c_name is NULL or c_name is c_node.name) and \
 *                     _tagMatches(c_node, self._href, self._name):
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2275
 *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
 *         if c_node.type == tree.XML_ELEMENT_NODE:
 *             if (c_name is NULL or c_name is c_node.name) and \             # <<<<<<<<<<<<<<
 *                     _tagMatches(c_node, self._href, self._name):
 *                 return c_node
 */
    __pyx_t_1 = (__pyx_v_c_name == NULL);
    if (!__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c_name == __pyx_v_c_node->name);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2276
 *         if c_node.type == tree.XML_ELEMENT_NODE:
 *             if (c_name is NULL or c_name is c_node.name) and \
 *                     _tagMatches(c_node, self._href, self._name):             # <<<<<<<<<<<<<<
 *                 return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
      __pyx_t_1 = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_self->__pyx_base._href, __pyx_v_self->__pyx_base._name);
      __pyx_t_2 = __pyx_t_1;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2277
 *             if (c_name is NULL or c_name is c_node.name) and \
 *                     _tagMatches(c_node, self._href, self._name):
 *                 return c_node             # <<<<<<<<<<<<<<
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *         return NULL
 */
      __pyx_r = __pyx_v_c_node;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2278
 *                     _tagMatches(c_node, self._href, self._name):
 *                 return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 *         return NULL
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2279
 *                 return c_node
 *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *         return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef class ElementTextIterator:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2293
 *     cdef object _nextEvent
 *     cdef _Element _start_element
 *     def __init__(self, _Element element not None, tag=None, *, with_tail=True):             # <<<<<<<<<<<<<<
 *         if with_tail:
 *             events = (u"start", u"end")
 */

static int __pyx_pf_4lxml_5etree_19ElementTextIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_19ElementTextIterator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_element = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_v_events;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__tag,&__pyx_n_s__with_tail,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_87;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2293; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element = ((struct LxmlElement *)values[0]);
    __pyx_v_tag = values[1];
    __pyx_v_with_tail = values[2];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_with_tail = __pyx_k_87;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2293; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementTextIterator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_with_tail);
  __pyx_v_events = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2294
 *     cdef _Element _start_element
 *     def __init__(self, _Element element not None, tag=None, *, with_tail=True):
 *         if with_tail:             # <<<<<<<<<<<<<<
 *             events = (u"start", u"end")
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2295
 *     def __init__(self, _Element element not None, tag=None, *, with_tail=True):
 *         if with_tail:
 *             events = (u"start", u"end")             # <<<<<<<<<<<<<<
 *         else:
 *             events = (u"start",)
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_n_u__start));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_u__start));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__start));
    __Pyx_INCREF(((PyObject *)__pyx_n_u__end));
    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_u__end));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__end));
    __Pyx_DECREF(__pyx_v_events);
    __pyx_v_events = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2297
 *             events = (u"start", u"end")
 *         else:
 *             events = (u"start",)             # <<<<<<<<<<<<<<
 *         self._start_element = element
 *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_n_u__start));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_u__start));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__start));
    __Pyx_DECREF(__pyx_v_events);
    __pyx_v_events = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2298
 *         else:
 *             events = (u"start",)
 *         self._start_element = element             # <<<<<<<<<<<<<<
 *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_element));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_start_element);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_start_element));
  ((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_start_element = __pyx_v_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2299
 *             events = (u"start",)
 *         self._start_element = element
 *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_element));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_element));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__events), __pyx_v_events) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__tag), __pyx_v_tag) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_iterwalk)), __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s____next__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_nextEvent);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_nextEvent);
  ((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_nextEvent = __pyx_t_3;
  __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.ElementTextIterator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_events);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_with_tail);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2301
 *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2302
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2304
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef _Element element
 *         while result is None:
 */

static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator___next__(PyObject *__pyx_v_self) {
  struct LxmlElement *__pyx_v_element;
  PyObject *__pyx_v_event;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_event = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2306
 *     def __next__(self):
 *         cdef _Element element
 *         while result is None:             # <<<<<<<<<<<<<<
 *             event, element = self._nextEvent() # raises StopIteration
 *             if event == u"start":
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_result == Py_None);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2307
 *         cdef _Element element
 *         while result is None:
 *             event, element = self._nextEvent() # raises StopIteration             # <<<<<<<<<<<<<<
 *             if event == u"start":
 *                 result = element.text
 */
    __pyx_t_2 = PyObject_Call(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_nextEvent, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
      PyObject* tuple = __pyx_t_2;
      __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_event);
      __pyx_v_event = __pyx_t_3;
      __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_4);
      __pyx_t_4 = 0;
    } else {
      __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_event);
      __pyx_v_event = __pyx_t_3;
      __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_4);
      __pyx_t_4 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2308
 *         while result is None:
 *             event, element = self._nextEvent() # raises StopIteration
 *             if event == u"start":             # <<<<<<<<<<<<<<
 *                 result = element.text
 *             elif element is not self._start_element:
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__start), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2309
 *             event, element = self._nextEvent() # raises StopIteration
 *             if event == u"start":
 *                 result = element.text             # <<<<<<<<<<<<<<
 *             elif element is not self._start_element:
 *                 result = element.tail
 */
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2310
 *             if event == u"start":
 *                 result = element.text
 *             elif element is not self._start_element:             # <<<<<<<<<<<<<<
 *                 result = element.tail
 *         return result
 */
    __pyx_t_1 = (__pyx_v_element != ((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self)->_start_element);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2311
 *                 result = element.text
 *             elif element is not self._start_element:
 *                 result = element.tail             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__tail); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2312
 *             elif element is not self._start_element:
 *                 result = element.tail
 *         return result             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.ElementTextIterator.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2314
 *         return result
 * 
 * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocNode(c_doc, NULL, _cstr(name_utf), NULL)
 */

static  xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObject *__pyx_v_name_utf) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("_createElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2316
 * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocNode(c_doc, NULL, _cstr(name_utf), NULL)             # <<<<<<<<<<<<<<
 *     return c_node
 * 
 */
  __pyx_v_c_node = xmlNewDocNode(__pyx_v_c_doc, NULL, PyString_AS_STRING(__pyx_v_name_utf), NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2317
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocNode(c_doc, NULL, _cstr(name_utf), NULL)
 *     return c_node             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _createComment(xmlDoc* c_doc, char* text):
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2319
 *     return c_node
 * 
 * cdef xmlNode* _createComment(xmlDoc* c_doc, char* text):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocComment(c_doc, text)
 */

static  xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, char *__pyx_v_text) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("_createComment");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2321
 * cdef xmlNode* _createComment(xmlDoc* c_doc, char* text):
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocComment(c_doc, text)             # <<<<<<<<<<<<<<
 *     return c_node
 * 
 */
  __pyx_v_c_node = xmlNewDocComment(__pyx_v_c_doc, __pyx_v_text);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2322
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocComment(c_doc, text)
 *     return c_node             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _createPI(xmlDoc* c_doc, char* target, char* text):
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2324
 *     return c_node
 * 
 * cdef xmlNode* _createPI(xmlDoc* c_doc, char* target, char* text):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocPI(c_doc, target, text)
 */

static  xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, char *__pyx_v_target, char *__pyx_v_text) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("_createPI");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2326
 * cdef xmlNode* _createPI(xmlDoc* c_doc, char* target, char* text):
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocPI(c_doc, target, text)             # <<<<<<<<<<<<<<
 *     return c_node
 * 
 */
  __pyx_v_c_node = xmlNewDocPI(__pyx_v_c_doc, __pyx_v_target, __pyx_v_text);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2327
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewDocPI(c_doc, target, text)
 *     return c_node             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _createEntity(xmlDoc* c_doc, char* name):
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2329
 *     return c_node
 * 
 * cdef xmlNode* _createEntity(xmlDoc* c_doc, char* name):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewReference(c_doc, name)
 */

static  xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, char *__pyx_v_name) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("_createEntity");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2331
 * cdef xmlNode* _createEntity(xmlDoc* c_doc, char* name):
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewReference(c_doc, name)             # <<<<<<<<<<<<<<
 *     return c_node
 * 
 */
  __pyx_v_c_node = xmlNewReference(__pyx_v_c_doc, __pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2332
 *     cdef xmlNode* c_node
 *     c_node = tree.xmlNewReference(c_doc, name)
 *     return c_node             # <<<<<<<<<<<<<<
 * 
 * # module-level API for ElementTree
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2336
 * # module-level API for ElementTree
 * 
 * def Element(_tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
 *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_Element(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_Element[] = "Element(_tag, attrib=None, nsmap=None, **_extra)\n\n    Element factory.  This function returns an object implementing the\n    Element interface.\n\n    Also look at the `_Element.makeelement()` and\n    `_BaseParser.makeelement()` methods, which provide a faster way to\n    create an Element within a specific document or parser context.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_Element(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__tag = 0;
  PyObject *__pyx_v_attrib = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v__extra = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("Element");
  __pyx_self = __pyx_self;
  __pyx_v__extra = PyDict_New(); if (unlikely(!__pyx_v__extra)) return NULL;
  __Pyx_GOTREF(__pyx_v__extra);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___tag);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrib);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nsmap);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, PyTuple_GET_SIZE(__pyx_args), "Element") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__tag = values[0];
    __pyx_v_attrib = values[1];
    __pyx_v_nsmap = values[2];
  } else {
    __pyx_v_attrib = ((PyObject *)Py_None);
    __pyx_v_nsmap = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_nsmap = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_attrib = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v__tag = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_AddTraceback("lxml.etree.Element");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2346
 *     create an Element within a specific document or parser context.
 *     """
 *     return _makeElement(_tag, NULL, None, None, None, None,             # <<<<<<<<<<<<<<
 *                         attrib, nsmap, _extra)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2347
 *     """
 *     return _makeElement(_tag, NULL, None, None, None, None,
 *                         attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
 * 
 * def Comment(text=None):
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.Element");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2349
 *                         attrib, nsmap, _extra)
 * 
 * def Comment(text=None):             # <<<<<<<<<<<<<<
 *     u"""Comment(text=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_Comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_Comment[] = "Comment(text=None)\n\n    Comment element factory. This factory function creates a special element that will\n    be serialized as an XML comment.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_Comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_text = 0;
  struct LxmlDocument *__pyx_v_doc;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  xmlDoc *__pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,0};
  __Pyx_RefNannySetupContext("Comment");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__text);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_text = values[0];
  } else {
    __pyx_v_text = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_text = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Comment", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2349; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Comment");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_text);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2358
 *     cdef xmlNode*  c_node
 *     cdef xmlDoc*   c_doc
 *     if text is None:             # <<<<<<<<<<<<<<
 *         text = ''
 *     else:
 */
  __pyx_t_1 = (__pyx_v_text == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2359
 *     cdef xmlDoc*   c_doc
 *     if text is None:
 *         text = ''             # <<<<<<<<<<<<<<
 *     else:
 *         text = _utf8(text)
 */
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
    __Pyx_DECREF(__pyx_v_text);
    __pyx_v_text = ((PyObject *)__pyx_kp_s_14);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2361
 *         text = ''
 *     else:
 *         text = _utf8(text)             # <<<<<<<<<<<<<<
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_text);
    __pyx_v_text = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2362
 *     else:
 *         text = _utf8(text)
 *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createComment(c_doc, _cstr(text))
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2363
 *         text = _utf8(text)
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
 *     c_node = _createComment(c_doc, _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2364
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createComment(c_doc, _cstr(text))             # <<<<<<<<<<<<<<
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__createComment(__pyx_v_c_doc, PyString_AS_STRING(__pyx_v_text));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2365
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createComment(c_doc, _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
 *     return _elementFactory(doc, c_node)
 * 
 */
  xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2366
 *     c_node = _createComment(c_doc, _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * def ProcessingInstruction(target, text=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.Comment");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2368
 *     return _elementFactory(doc, c_node)
 * 
 * def ProcessingInstruction(target, text=None):             # <<<<<<<<<<<<<<
 *     u"""ProcessingInstruction(target, text=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_ProcessingInstruction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_ProcessingInstruction[] = "ProcessingInstruction(target, text=None)\n\n    ProcessingInstruction element factory. This factory function creates a\n    special element that will be serialized as an XML processing instruction.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_ProcessingInstruction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_text = 0;
  struct LxmlDocument *__pyx_v_doc;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__target,&__pyx_n_s__text,0};
  __Pyx_RefNannySetupContext("ProcessingInstruction");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__text);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "ProcessingInstruction") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_target = values[0];
    __pyx_v_text = values[1];
  } else {
    __pyx_v_text = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_text = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ProcessingInstruction", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ProcessingInstruction");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_text);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2377
 *     cdef xmlNode*  c_node
 *     cdef xmlDoc*   c_doc
 *     target = _utf8(target)             # <<<<<<<<<<<<<<
 *     if text is None:
 *         text = ''
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_target); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_target);
  __pyx_v_target = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2378
 *     cdef xmlDoc*   c_doc
 *     target = _utf8(target)
 *     if text is None:             # <<<<<<<<<<<<<<
 *         text = ''
 *     else:
 */
  __pyx_t_2 = (__pyx_v_text == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2379
 *     target = _utf8(target)
 *     if text is None:
 *         text = ''             # <<<<<<<<<<<<<<
 *     else:
 *         text = _utf8(text)
 */
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
    __Pyx_DECREF(__pyx_v_text);
    __pyx_v_text = ((PyObject *)__pyx_kp_s_14);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2381
 *         text = ''
 *     else:
 *         text = _utf8(text)             # <<<<<<<<<<<<<<
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_text);
    __pyx_v_text = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2382
 *     else:
 *         text = _utf8(text)
 *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createPI(c_doc, _cstr(target), _cstr(text))
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2383
 *         text = _utf8(text)
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
 *     c_node = _createPI(c_doc, _cstr(target), _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2384
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createPI(c_doc, _cstr(target), _cstr(text))             # <<<<<<<<<<<<<<
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__createPI(__pyx_v_c_doc, PyString_AS_STRING(__pyx_v_target), PyString_AS_STRING(__pyx_v_text));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2385
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createPI(c_doc, _cstr(target), _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
 *     return _elementFactory(doc, c_node)
 * 
 */
  xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2386
 *     c_node = _createPI(c_doc, _cstr(target), _cstr(text))
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * PI = ProcessingInstruction
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.ProcessingInstruction");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2401
 *     """
 *     cdef object _utf8_data
 *     def __init__(self, data):             # <<<<<<<<<<<<<<
 *         self._utf8_data = _utf8(data)
 * 
 */

static int __pyx_pf_4lxml_5etree_5CDATA___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_5CDATA___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_data = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__data,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_data = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_data = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.CDATA.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2402
 *     cdef object _utf8_data
 *     def __init__(self, data):
 *         self._utf8_data = _utf8(data)             # <<<<<<<<<<<<<<
 * 
 * def Entity(name):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_self)->_utf8_data);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_self)->_utf8_data);
  ((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_self)->_utf8_data = __pyx_t_1;
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.CDATA.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2404
 *         self._utf8_data = _utf8(data)
 * 
 * def Entity(name):             # <<<<<<<<<<<<<<
 *     u"""Entity(name)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_Entity(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_4lxml_5etree_Entity[] = "Entity(name)\n\n    Entity factory.  This factory function creates a special element\n    that will be serialized as an XML entity reference or character\n    reference.  Note, however, that entities will not be automatically\n    declared in the document.  A document that uses entity references\n    requires a DTD to define the entities.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_Entity(PyObject *__pyx_self, PyObject *__pyx_v_name) {
  struct LxmlDocument *__pyx_v_doc;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_c_doc;
  char *__pyx_v_c_name;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  __Pyx_RefNannySetupContext("Entity");
  __pyx_self = __pyx_self;
  __Pyx_INCREF(__pyx_v_name);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2417
 *     cdef xmlDoc*   c_doc
 *     cdef char* c_name
 *     name_utf = _utf8(name)             # <<<<<<<<<<<<<<
 *     c_name = _cstr(name_utf)
 *     if c_name[0] == c'#':
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_name_utf);
  __pyx_v_name_utf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2418
 *     cdef char* c_name
 *     name_utf = _utf8(name)
 *     c_name = _cstr(name_utf)             # <<<<<<<<<<<<<<
 *     if c_name[0] == c'#':
 *         if not _characterReferenceIsValid(c_name + 1):
 */
  __pyx_v_c_name = PyString_AS_STRING(__pyx_v_name_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2419
 *     name_utf = _utf8(name)
 *     c_name = _cstr(name_utf)
 *     if c_name[0] == c'#':             # <<<<<<<<<<<<<<
 *         if not _characterReferenceIsValid(c_name + 1):
 *             raise ValueError, u"Invalid character reference: '%s'" % name
 */
  __pyx_t_2 = ((__pyx_v_c_name[0]) == '#');
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2420
 *     c_name = _cstr(name_utf)
 *     if c_name[0] == c'#':
 *         if not _characterReferenceIsValid(c_name + 1):             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Invalid character reference: '%s'" % name
 *     elif not _xmlNameIsValid(c_name):
 */
    __pyx_t_2 = (!__pyx_f_4lxml_5etree__characterReferenceIsValid((__pyx_v_c_name + 1)));
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2421
 *     if c_name[0] == c'#':
 *         if not _characterReferenceIsValid(c_name + 1):
 *             raise ValueError, u"Invalid character reference: '%s'" % name             # <<<<<<<<<<<<<<
 *     elif not _xmlNameIsValid(c_name):
 *         raise ValueError, u"Invalid entity reference: '%s'" % name
 */
      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_88), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_1, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2422
 *         if not _characterReferenceIsValid(c_name + 1):
 *             raise ValueError, u"Invalid character reference: '%s'" % name
 *     elif not _xmlNameIsValid(c_name):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"Invalid entity reference: '%s'" % name
 *     c_doc = _newXMLDoc()
 */
  __pyx_t_2 = (!__pyx_f_4lxml_5etree__xmlNameIsValid(__pyx_v_c_name));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2423
 *             raise ValueError, u"Invalid character reference: '%s'" % name
 *     elif not _xmlNameIsValid(c_name):
 *         raise ValueError, u"Invalid entity reference: '%s'" % name             # <<<<<<<<<<<<<<
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 */
    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_89), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_1, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2424
 *     elif not _xmlNameIsValid(c_name):
 *         raise ValueError, u"Invalid entity reference: '%s'" % name
 *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createEntity(c_doc, c_name)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2425
 *         raise ValueError, u"Invalid entity reference: '%s'" % name
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
 *     c_node = _createEntity(c_doc, c_name)
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2426
 *     c_doc = _newXMLDoc()
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createEntity(c_doc, c_name)             # <<<<<<<<<<<<<<
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__createEntity(__pyx_v_c_doc, __pyx_v_c_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2427
 *     doc = _documentFactory(c_doc, None)
 *     c_node = _createEntity(c_doc, c_name)
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
 *     return _elementFactory(doc, c_node)
 * 
 */
  xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2428
 *     c_node = _createEntity(c_doc, c_name)
 *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
 *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * def SubElement(_Element _parent not None, _tag,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.Entity");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2430
 *     return _elementFactory(doc, c_node)
 * 
 * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
 *                attrib=None, nsmap=None, **_extra):
 *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
 */

static PyObject *__pyx_pf_4lxml_5etree_SubElement(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_SubElement[] = "SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)\n\n    Subelement factory.  This function creates an element instance, and\n    appends it to an existing element.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_SubElement(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v__parent = 0;
  PyObject *__pyx_v__tag = 0;
  PyObject *__pyx_v_attrib = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v__extra = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___parent,&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("SubElement");
  __pyx_self = __pyx_self;
  __pyx_v__extra = PyDict_New(); if (unlikely(!__pyx_v__extra)) return NULL;
  __Pyx_GOTREF(__pyx_v__extra);
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2431
 * 
 * def SubElement(_Element _parent not None, _tag,
 *                attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
 *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
 * 
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___parent);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___tag);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrib);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nsmap);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, PyTuple_GET_SIZE(__pyx_args), "SubElement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__parent = ((struct LxmlElement *)values[0]);
    __pyx_v__tag = values[1];
    __pyx_v_attrib = values[2];
    __pyx_v_nsmap = values[3];
  } else {
    __pyx_v_attrib = ((PyObject *)Py_None);
    __pyx_v_nsmap = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_nsmap = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3:
      __pyx_v_attrib = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v__tag = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v__parent = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_AddTraceback("lxml.etree.SubElement");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__parent), __pyx_ptype_4lxml_5etree__Element, 0, "_parent", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2437
 *     appends it to an existing element.
 *     """
 *     return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
 * 
 * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v__parent, __pyx_v__tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.SubElement");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2439
 *     return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)
 * 
 * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):             # <<<<<<<<<<<<<<
 *     u"""ElementTree(element=None, file=None, parser=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_ElementTree(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_ElementTree[] = "ElementTree(element=None, file=None, parser=None)\n\n    ElementTree wrapper class.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_ElementTree(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_element = 0;
  PyObject *__pyx_v_file = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  xmlDoc *__pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__file,&__pyx_n_s__parser,0};
  __Pyx_RefNannySetupContext("ElementTree");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = (PyObject*)((struct LxmlElement *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "ElementTree") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element = ((struct LxmlElement *)values[0]);
    __pyx_v_file = values[1];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[2]);
  } else {
    __pyx_v_element = ((struct LxmlElement *)Py_None);
    __pyx_v_file = ((PyObject *)Py_None);
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ElementTree", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2439; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementTree");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2451
 *     cdef _Document doc
 * 
 *     if element is not None:             # <<<<<<<<<<<<<<
 *         doc  = element._doc
 *     elif file is not None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2452
 * 
 *     if element is not None:
 *         doc  = element._doc             # <<<<<<<<<<<<<<
 *     elif file is not None:
 *         try:
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_element->_doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = __pyx_v_element->_doc;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2453
 *     if element is not None:
 *         doc  = element._doc
 *     elif file is not None:             # <<<<<<<<<<<<<<
 *         try:
 *             doc = _parseDocument(file, parser, None)
 */
  __pyx_t_1 = (__pyx_v_file != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2454
 *         doc  = element._doc
 *     elif file is not None:
 *         try:             # <<<<<<<<<<<<<<
 *             doc = _parseDocument(file, parser, None)
 *         except _TargetParserResult, result_container:
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2455
 *     elif file is not None:
 *         try:
 *             doc = _parseDocument(file, parser, None)             # <<<<<<<<<<<<<<
 *         except _TargetParserResult, result_container:
 *             return result_container.result
 */
        __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, __pyx_v_parser, Py_None)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2455; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_v_doc));
        __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
        __pyx_t_2 = 0;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L14_try_end;
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2456
 *         try:
 *             doc = _parseDocument(file, parser, None)
 *         except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *             return result_container.result
 *     else:
 */
      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2456; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyErr_ExceptionMatches(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_3) {
        __Pyx_AddTraceback("lxml.etree.ElementTree");
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2456; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_v_result_container);
        __pyx_v_result_container = __pyx_t_4;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2457
 *             doc = _parseDocument(file, parser, None)
 *         except _TargetParserResult, result_container:
 *             return result_container.result             # <<<<<<<<<<<<<<
 *     else:
 *         c_doc = _newXMLDoc()
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_6 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2457; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_r = __pyx_t_6;
        __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L10_except_return;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L8_exception_handled;
      }
      __pyx_L9_except_error:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L10_except_return:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L0;
      __pyx_L8_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L14_try_end:;
    }
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2459
 *             return result_container.result
 *     else:
 *         c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *         doc = _documentFactory(c_doc, parser)
 * 
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_doc = __pyx_t_7;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2460
 *     else:
 *         c_doc = _newXMLDoc()
 *         doc = _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 * 
 *     return _elementTreeFactory(doc, element)
 */
    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_5);
    __pyx_t_5 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2462
 *         doc = _documentFactory(c_doc, parser)
 * 
 *     return _elementTreeFactory(doc, element)             # <<<<<<<<<<<<<<
 * 
 * def HTML(text, _BaseParser parser=None, *, base_url=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, __pyx_v_element)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree.ElementTree");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2464
 *     return _elementTreeFactory(doc, element)
 * 
 * def HTML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *     u"""HTML(text, parser=None, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_HTML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_HTML[] = "HTML(text, parser=None, base_url=None)\n\n    Parses an HTML document from a string constant.  Returns the root\n    node (or the result returned by a parser target).  This function\n    can be used to embed \"HTML literals\" in Python code.\n\n    To override the parser with a different ``HTMLParser`` you can pass it to\n    the ``parser`` keyword argument.\n\n    The ``base_url`` keyword argument allows to set the original base URL of\n    the document to support relative Paths when looking up external entities\n    (DTD, XInclude, ...).\n    ";
static PyObject *__pyx_pf_4lxml_5etree_HTML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_text = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("HTML");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__text);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "HTML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_text = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_text = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("HTML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.HTML");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2479
 *     """
 *     cdef _Document doc
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, HTMLParser):
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2480
 *     cdef _Document doc
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *         if not isinstance(parser, HTMLParser):
 *             parser = __DEFAULT_HTML_PARSER
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2481
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, HTMLParser):             # <<<<<<<<<<<<<<
 *             parser = __DEFAULT_HTML_PARSER
 *     try:
 */
    __pyx_t_1 = PyObject_TypeCheck(((PyObject *)__pyx_v_parser), ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_HTMLParser))); 
    __pyx_t_3 = (!__pyx_t_1);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2482
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, HTMLParser):
 *             parser = __DEFAULT_HTML_PARSER             # <<<<<<<<<<<<<<
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
      __Pyx_DECREF(((PyObject *)__pyx_v_parser));
      __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER);
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2483
 *         if not isinstance(parser, HTMLParser):
 *             parser = __DEFAULT_HTML_PARSER
 *     try:             # <<<<<<<<<<<<<<
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2484
 *             parser = __DEFAULT_HTML_PARSER
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 */
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2484; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2485
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()             # <<<<<<<<<<<<<<
 *     except _TargetParserResult, result_container:
 *         return result_container.result
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2485; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L12_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L15_try_end;
    __pyx_L12_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L8_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2486
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *         return result_container.result
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2486; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {
      __Pyx_AddTraceback("lxml.etree.HTML");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2486; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_result_container);
      __pyx_v_result_container = __pyx_t_5;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2487
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 *         return result_container.result             # <<<<<<<<<<<<<<
 * 
 * def XML(text, _BaseParser parser=None, *, base_url=None):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_7 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2487; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_r = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L11_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L9_exception_handled;
    }
    __pyx_L10_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L11_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L9_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L15_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.HTML");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2489
 *         return result_container.result
 * 
 * def XML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *     u"""XML(text, parser=None, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_XML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_XML[] = "XML(text, parser=None, base_url=None)\n\n    Parses an XML document or fragment from a string constant.\n    Returns the root node (or the result returned by a parser target).\n    This function can be used to embed \"XML literals\" in Python code,\n    like in\n\n       >>> root = etree.XML(\"<root><test/></root>\")\n\n    To override the parser with a different ``XMLParser`` you can pass it to\n    the ``parser`` keyword argument.\n\n    The ``base_url`` keyword argument allows to set the original base URL of\n    the document to support relative Paths when looking up external entities\n    (DTD, XInclude, ...).\n    ";
static PyObject *__pyx_pf_4lxml_5etree_XML(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_text = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("XML");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__text);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "XML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_text = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_text = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XML");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2507
 *     """
 *     cdef _Document doc
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, XMLParser):
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2508
 *     cdef _Document doc
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *         if not isinstance(parser, XMLParser):
 *             parser = __DEFAULT_XML_PARSER
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2509
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, XMLParser):             # <<<<<<<<<<<<<<
 *             parser = __DEFAULT_XML_PARSER
 *     try:
 */
    __pyx_t_1 = PyObject_TypeCheck(((PyObject *)__pyx_v_parser), ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XMLParser))); 
    __pyx_t_3 = (!__pyx_t_1);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2510
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *         if not isinstance(parser, XMLParser):
 *             parser = __DEFAULT_XML_PARSER             # <<<<<<<<<<<<<<
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
      __Pyx_DECREF(((PyObject *)__pyx_v_parser));
      __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER);
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2511
 *         if not isinstance(parser, XMLParser):
 *             parser = __DEFAULT_XML_PARSER
 *     try:             # <<<<<<<<<<<<<<
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2512
 *             parser = __DEFAULT_XML_PARSER
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 */
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2512; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2513
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()             # <<<<<<<<<<<<<<
 *     except _TargetParserResult, result_container:
 *         return result_container.result
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2513; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L12_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L15_try_end;
    __pyx_L12_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L8_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2514
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *         return result_container.result
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2514; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyErr_ExceptionMatches(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {
      __Pyx_AddTraceback("lxml.etree.XML");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2514; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_result_container);
      __pyx_v_result_container = __pyx_t_5;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2515
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 *         return result_container.result             # <<<<<<<<<<<<<<
 * 
 * def fromstring(text, _BaseParser parser=None, *, base_url=None):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_7 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2515; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_r = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L11_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L9_exception_handled;
    }
    __pyx_L10_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L11_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L9_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L15_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.XML");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2517
 *         return result_container.result
 * 
 * def fromstring(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *     u"""fromstring(text, parser=None, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_fromstring(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_fromstring[] = "fromstring(text, parser=None, base_url=None)\n\n    Parses an XML document or fragment from a string.  Returns the\n    root node (or the result returned by a parser target).\n\n    To override the default parser with a different parser you can pass it to\n    the ``parser`` keyword argument.\n\n    The ``base_url`` keyword argument allows to set the original base URL of\n    the document to support relative Paths when looking up external entities\n    (DTD, XInclude, ...).\n    ";
static PyObject *__pyx_pf_4lxml_5etree_fromstring(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_text = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("fromstring");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__text);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "fromstring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_text = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_text = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.fromstring");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2531
 *     """
 *     cdef _Document doc
 *     try:             # <<<<<<<<<<<<<<
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2532
 *     cdef _Document doc
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2532; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2533
 *     try:
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()             # <<<<<<<<<<<<<<
 *     except _TargetParserResult, result_container:
 *         return result_container.result
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2533; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L10_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2534
 *         doc = _parseMemoryDocument(text, base_url, parser)
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *         return result_container.result
 * 
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree.fromstring");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_result_container);
      __pyx_v_result_container = __pyx_t_3;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2535
 *         return doc.getroot()
 *     except _TargetParserResult, result_container:
 *         return result_container.result             # <<<<<<<<<<<<<<
 * 
 * def fromstringlist(strings, _BaseParser parser=None):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2535; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_r = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.fromstring");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2537
 *         return result_container.result
 * 
 * def fromstringlist(strings, _BaseParser parser=None):             # <<<<<<<<<<<<<<
 *     u"""fromstringlist(strings, parser=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_fromstringlist(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_fromstringlist[] = "fromstringlist(strings, parser=None)\n\n    Parses an XML document from a sequence of strings.  Returns the\n    root node (or the result returned by a parser target).\n\n    To override the default parser with a different parser you can pass it to\n    the ``parser`` keyword argument.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_fromstringlist(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_strings = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_feed;
  PyObject *__pyx_v_data;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__strings,&__pyx_n_s__parser,0};
  __Pyx_RefNannySetupContext("fromstringlist");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strings);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "fromstringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_strings = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_strings = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromstringlist", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.fromstringlist");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_strings);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __pyx_v_feed = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2547
 *     """
 *     cdef _Document doc
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     feed = parser.feed
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2548
 *     cdef _Document doc
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *     feed = parser.feed
 *     for data in strings:
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2549
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     feed = parser.feed             # <<<<<<<<<<<<<<
 *     for data in strings:
 *         feed(data)
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__feed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_feed);
  __pyx_v_feed = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2550
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     feed = parser.feed
 *     for data in strings:             # <<<<<<<<<<<<<<
 *         feed(data)
 *     return parser.close()
 */
  if (PyList_CheckExact(__pyx_v_strings) || PyTuple_CheckExact(__pyx_v_strings)) {
    __pyx_t_3 = 0; __pyx_t_2 = __pyx_v_strings; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_strings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    } else {
      __pyx_t_4 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_4) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_v_data);
    __pyx_v_data = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2551
 *     feed = parser.feed
 *     for data in strings:
 *         feed(data)             # <<<<<<<<<<<<<<
 *     return parser.close()
 * 
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_data);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    __pyx_t_5 = PyObject_Call(__pyx_v_feed, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2552
 *     for data in strings:
 *         feed(data)
 *     return parser.close()             # <<<<<<<<<<<<<<
 * 
 * def iselement(element):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__close); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.fromstringlist");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_feed);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_DECREF(__pyx_v_strings);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2554
 *     return parser.close()
 * 
 * def iselement(element):             # <<<<<<<<<<<<<<
 *     u"""iselement(element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_iselement(PyObject *__pyx_self, PyObject *__pyx_v_element); /*proto*/
static char __pyx_doc_4lxml_5etree_iselement[] = "iselement(element)\n\n    Checks if an object appears to be a valid element object.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_iselement(PyObject *__pyx_self, PyObject *__pyx_v_element) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("iselement");
  __pyx_self = __pyx_self;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2559
 *     Checks if an object appears to be a valid element object.
 *     """
 *     return isinstance(element, _Element)             # <<<<<<<<<<<<<<
 * 
 * def dump(_Element elem not None, *, pretty_print=True, with_tail=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.iselement");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2561
 *     return isinstance(element, _Element)
 * 
 * def dump(_Element elem not None, *, pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
 *     u"""dump(elem, pretty_print=True, with_tail=True)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_dump(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_dump[] = "dump(elem, pretty_print=True, with_tail=True)\n\n    Writes an element tree or element structure to sys.stdout. This function\n    should be used for debugging only.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_dump(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_elem = 0;
  PyObject *__pyx_v_pretty_print = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__elem,&__pyx_n_s__pretty_print,&__pyx_n_s__with_tail,0};
  __Pyx_RefNannySetupContext("dump");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = __pyx_k_90;
    values[2] = __pyx_k_91;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__elem);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pretty_print);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "dump") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_elem = ((struct LxmlElement *)values[0]);
    __pyx_v_pretty_print = values[1];
    __pyx_v_with_tail = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_elem = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_pretty_print = __pyx_k_90;
    __pyx_v_with_tail = __pyx_k_91;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dump", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.dump");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_elem), __pyx_ptype_4lxml_5etree__Element, 0, "elem", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2567
 *     should be used for debugging only.
 *     """
 *     _dumpToFile(sys.stdout, elem._c_node, pretty_print, with_tail)             # <<<<<<<<<<<<<<
 * 
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s__stdout); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_3 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = __pyx_f_4lxml_5etree__dumpToFile(__pyx_t_1, __pyx_v_elem->_c_node, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.dump");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2569
 *     _dumpToFile(sys.stdout, elem._c_node, pretty_print, with_tail)
 * 
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
 *              xml_declaration=None, pretty_print=False, with_tail=True,
 *              standalone=None):
 */

static PyObject *__pyx_pf_4lxml_5etree_tostring(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_tostring[] = "tostring(element_or_tree, encoding=None, method=\"xml\",\n                 xml_declaration=None, pretty_print=False, with_tail=True,\n                 standalone=None)\n\n    Serialize an element to an encoded string representation of its XML\n    tree.\n\n    Defaults to ASCII encoding without XML declaration.  This behaviour can be\n    configured with the keyword arguments 'encoding' (string) and\n    'xml_declaration' (bool).  Note that changing the encoding to a non UTF-8\n    compatible encoding will enable a declaration by default.\n\n    You can also serialise to a Unicode string without declaration by\n    passing the ``unicode`` function as encoding (or ``str`` in Py3).\n\n    The keyword argument 'pretty_print' (bool) enables formatted XML.\n\n    The keyword argument 'method' selects the output method: 'xml',\n    'html' or plain 'text'.\n\n    Passing a boolean value to the ``standalone`` option will output\n    an XML declaration with the corresponding ``standalone`` flag.\n\n    You can prevent the tail text of the element from being serialised\n    by passing the boolean ``with_tail`` option.  This has no impact\n    on the tail text of children, which will always be serialised.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_tostring(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element_or_tree = 0;
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_xml_declaration = 0;
  PyObject *__pyx_v_pretty_print = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_v_standalone = 0;
  int __pyx_v_write_declaration;
  int __pyx_v_is_standalone;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_or_tree,&__pyx_n_s__encoding,&__pyx_n_s__method,&__pyx_n_s__xml_declaration,&__pyx_n_s__pretty_print,&__pyx_n_s__with_tail,&__pyx_n_s__standalone,0};
  __Pyx_RefNannySetupContext("tostring");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2571
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",
 *              xml_declaration=None, pretty_print=False, with_tail=True,
 *              standalone=None):             # <<<<<<<<<<<<<<
 *     u"""tostring(element_or_tree, encoding=None, method="xml",
 *                  xml_declaration=None, pretty_print=False, with_tail=True,
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)__pyx_n_u__xml);
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_92;
    values[5] = __pyx_k_93;
    values[6] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_or_tree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__method);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__xml_declaration);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pretty_print);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__standalone);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "tostring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element_or_tree = values[0];
    __pyx_v_encoding = values[1];
    __pyx_v_method = values[2];
    __pyx_v_xml_declaration = values[3];
    __pyx_v_pretty_print = values[4];
    __pyx_v_with_tail = values[5];
    __pyx_v_standalone = values[6];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element_or_tree = PyTuple_GET_ITEM(__pyx_args, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2569
 *     _dumpToFile(sys.stdout, elem._c_node, pretty_print, with_tail)
 * 
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
 *              xml_declaration=None, pretty_print=False, with_tail=True,
 *              standalone=None):
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_method = ((PyObject *)__pyx_n_u__xml);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2570
 * 
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",
 *              xml_declaration=None, pretty_print=False, with_tail=True,             # <<<<<<<<<<<<<<
 *              standalone=None):
 *     u"""tostring(element_or_tree, encoding=None, method="xml",
 */
    __pyx_v_xml_declaration = ((PyObject *)Py_None);
    __pyx_v_pretty_print = __pyx_k_92;
    __pyx_v_with_tail = __pyx_k_93;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2571
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",
 *              xml_declaration=None, pretty_print=False, with_tail=True,
 *              standalone=None):             # <<<<<<<<<<<<<<
 *     u"""tostring(element_or_tree, encoding=None, method="xml",
 *                  xml_declaration=None, pretty_print=False, with_tail=True,
 */
    __pyx_v_standalone = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tostring", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.tostring");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_element_or_tree);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_method);
  __Pyx_INCREF(__pyx_v_xml_declaration);
  __Pyx_INCREF(__pyx_v_pretty_print);
  __Pyx_INCREF(__pyx_v_with_tail);
  __Pyx_INCREF(__pyx_v_standalone);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2601
 *     cdef bint write_declaration
 *     cdef int is_standalone
 *     if encoding is _unicode:             # <<<<<<<<<<<<<<
 *         if xml_declaration:
 *             raise ValueError, \
 */
  __pyx_t_1 = (__pyx_v_encoding == __pyx_v_4lxml_5etree__unicode);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2602
 *     cdef int is_standalone
 *     if encoding is _unicode:
 *         if xml_declaration:             # <<<<<<<<<<<<<<
 *             raise ValueError, \
 *                 u"Serialisation to unicode must not request an XML declaration"
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2603
 *     if encoding is _unicode:
 *         if xml_declaration:
 *             raise ValueError, \             # <<<<<<<<<<<<<<
 *                 u"Serialisation to unicode must not request an XML declaration"
 *         write_declaration = 0
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_94), 0);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2605
 *             raise ValueError, \
 *                 u"Serialisation to unicode must not request an XML declaration"
 *         write_declaration = 0             # <<<<<<<<<<<<<<
 *     elif xml_declaration is None:
 *         # by default, write an XML declaration only for non-standard encodings
 */
    __pyx_v_write_declaration = 0;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2606
 *                 u"Serialisation to unicode must not request an XML declaration"
 *         write_declaration = 0
 *     elif xml_declaration is None:             # <<<<<<<<<<<<<<
 *         # by default, write an XML declaration only for non-standard encodings
 *         write_declaration = encoding is not None and encoding.upper() not in \
 */
  __pyx_t_1 = (__pyx_v_xml_declaration == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2608
 *     elif xml_declaration is None:
 *         # by default, write an XML declaration only for non-standard encodings
 *         write_declaration = encoding is not None and encoding.upper() not in \             # <<<<<<<<<<<<<<
 *                             (u'ASCII', u'UTF-8', u'UTF8', u'US-ASCII')
 *     else:
 */
    __pyx_t_1 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_1) {
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_n_u__ASCII), Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = ((int)__pyx_t_4);
      if (__pyx_t_5) {
        __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_kp_u_20), Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_6 = ((int)__pyx_t_4);
        __pyx_t_4 = __pyx_t_6;
      } else {
        __pyx_t_4 = __pyx_t_5;
      }
      if (__pyx_t_4) {
        __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_n_u__UTF8), Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_6 = ((int)__pyx_t_5);
        __pyx_t_5 = __pyx_t_6;
      } else {
        __pyx_t_5 = __pyx_t_4;
      }
      if (__pyx_t_5) {
        __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, ((PyObject *)__pyx_kp_u_77), Py_NE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_6 = ((int)__pyx_t_4);
        __pyx_t_4 = __pyx_t_6;
      } else {
        __pyx_t_4 = __pyx_t_5;
      }
      __pyx_t_5 = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __pyx_t_5;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    __pyx_v_write_declaration = __pyx_t_4;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2611
 *                             (u'ASCII', u'UTF-8', u'UTF8', u'US-ASCII')
 *     else:
 *         write_declaration = xml_declaration             # <<<<<<<<<<<<<<
 *     if encoding is None:
 *         encoding = u'ASCII'
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_write_declaration = __pyx_t_4;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2612
 *     else:
 *         write_declaration = xml_declaration
 *     if encoding is None:             # <<<<<<<<<<<<<<
 *         encoding = u'ASCII'
 *     if standalone is None:
 */
  __pyx_t_4 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2613
 *         write_declaration = xml_declaration
 *     if encoding is None:
 *         encoding = u'ASCII'             # <<<<<<<<<<<<<<
 *     if standalone is None:
 *         is_standalone = -1
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__ASCII));
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = ((PyObject *)__pyx_n_u__ASCII);
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2614
 *     if encoding is None:
 *         encoding = u'ASCII'
 *     if standalone is None:             # <<<<<<<<<<<<<<
 *         is_standalone = -1
 *     elif standalone:
 */
  __pyx_t_4 = (__pyx_v_standalone == Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2615
 *         encoding = u'ASCII'
 *     if standalone is None:
 *         is_standalone = -1             # <<<<<<<<<<<<<<
 *     elif standalone:
 *         write_declaration = 1
 */
    __pyx_v_is_standalone = -1;
    goto __pyx_L9;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2616
 *     if standalone is None:
 *         is_standalone = -1
 *     elif standalone:             # <<<<<<<<<<<<<<
 *         write_declaration = 1
 *         is_standalone = 1
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2617
 *         is_standalone = -1
 *     elif standalone:
 *         write_declaration = 1             # <<<<<<<<<<<<<<
 *         is_standalone = 1
 *     else:
 */
    __pyx_v_write_declaration = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2618
 *     elif standalone:
 *         write_declaration = 1
 *         is_standalone = 1             # <<<<<<<<<<<<<<
 *     else:
 *         write_declaration = 1
 */
    __pyx_v_is_standalone = 1;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2620
 *         is_standalone = 1
 *     else:
 *         write_declaration = 1             # <<<<<<<<<<<<<<
 *         is_standalone = 0
 * 
 */
    __pyx_v_write_declaration = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2621
 *     else:
 *         write_declaration = 1
 *         is_standalone = 0             # <<<<<<<<<<<<<<
 * 
 *     if isinstance(element_or_tree, _Element):
 */
    __pyx_v_is_standalone = 0;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2623
 *         is_standalone = 0
 * 
 *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
 *         return _tostring(<_Element>element_or_tree, encoding, method,
 *                          write_declaration, 0, pretty_print, with_tail,
 */
  __pyx_t_4 = PyObject_TypeCheck(__pyx_v_element_or_tree, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2624
 * 
 *     if isinstance(element_or_tree, _Element):
 *         return _tostring(<_Element>element_or_tree, encoding, method,             # <<<<<<<<<<<<<<
 *                          write_declaration, 0, pretty_print, with_tail,
 *                          is_standalone)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2625
 *     if isinstance(element_or_tree, _Element):
 *         return _tostring(<_Element>element_or_tree, encoding, method,
 *                          write_declaration, 0, pretty_print, with_tail,             # <<<<<<<<<<<<<<
 *                          is_standalone)
 *     elif isinstance(element_or_tree, _ElementTree):
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2626
 *         return _tostring(<_Element>element_or_tree, encoding, method,
 *                          write_declaration, 0, pretty_print, with_tail,
 *                          is_standalone)             # <<<<<<<<<<<<<<
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_v_encoding, __pyx_v_method, __pyx_v_write_declaration, 0, __pyx_t_4, __pyx_t_1, __pyx_v_is_standalone); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L10;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2627
 *                          write_declaration, 0, pretty_print, with_tail,
 *                          is_standalone)
 *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 *                          encoding, method, write_declaration, 1, pretty_print,
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element_or_tree, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2628
 *                          is_standalone)
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,             # <<<<<<<<<<<<<<
 *                          encoding, method, write_declaration, 1, pretty_print,
 *                          with_tail, is_standalone)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2629
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 *                          encoding, method, write_declaration, 1, pretty_print,             # <<<<<<<<<<<<<<
 *                          with_tail, is_standalone)
 *     else:
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2630
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 *                          encoding, method, write_declaration, 1, pretty_print,
 *                          with_tail, is_standalone)             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"Type '%s' cannot be serialized." % \
 */
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_4 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node, __pyx_v_encoding, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_t_1, __pyx_t_4, __pyx_v_is_standalone); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2633
 *     else:
 *         raise TypeError, u"Type '%s' cannot be serialized." % \
 *             python._fqtypename(element_or_tree)             # <<<<<<<<<<<<<<
 * 
 * def tostringlist(element_or_tree, *args, **kwargs):
 */
    __pyx_t_3 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_95), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_2, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L10:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.tostring");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element_or_tree);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_DECREF(__pyx_v_xml_declaration);
  __Pyx_DECREF(__pyx_v_pretty_print);
  __Pyx_DECREF(__pyx_v_with_tail);
  __Pyx_DECREF(__pyx_v_standalone);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2635
 *             python._fqtypename(element_or_tree)
 * 
 * def tostringlist(element_or_tree, *args, **kwargs):             # <<<<<<<<<<<<<<
 *     u"""tostringlist(element_or_tree, *args, **kwargs)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_tostringlist(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_tostringlist[] = "tostringlist(element_or_tree, *args, **kwargs)\n\n    Serialize an element to an encoded string representation of its XML\n    tree, stored in a list of partial strings.\n\n    This is purely for ElementTree 1.3 compatibility.  The result is a\n    single string wrapped in a list.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_tostringlist(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element_or_tree = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_or_tree,0};
  __Pyx_RefNannySetupContext("tostringlist");
  __pyx_self = __pyx_self;
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_args);

    if (unlikely(!__pyx_v_args)) {
      __Pyx_DECREF(__pyx_v_kwargs);
      return NULL;
    }
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_or_tree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "tostringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2635; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element_or_tree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element_or_tree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tostringlist", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2635; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_AddTraceback("lxml.etree.tostringlist");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2644
 *     single string wrapped in a list.
 *     """
 *     return [tostring(element_or_tree, *args, **kwargs)]             # <<<<<<<<<<<<<<
 * 
 * def tounicode(element_or_tree, *, method=u"xml", pretty_print=False,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_element_or_tree);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_element_or_tree);
  __Pyx_GIVEREF(__pyx_v_element_or_tree);
  __pyx_t_3 = PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_t_4 = PyNumber_Add(__pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_4, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.tostringlist");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2646
 *     return [tostring(element_or_tree, *args, **kwargs)]
 * 
 * def tounicode(element_or_tree, *, method=u"xml", pretty_print=False,             # <<<<<<<<<<<<<<
 *               with_tail=True):
 *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
 */

static PyObject *__pyx_pf_4lxml_5etree_tounicode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_tounicode[] = "tounicode(element_or_tree, method=\"xml\", pretty_print=False,\n                  with_tail=True)\n\n    Serialize an element to the Python unicode representation of its XML\n    tree.\n\n    :deprecated: use ``tostring(el, encoding=unicode)`` instead.\n\n    Note that the result does not carry an XML encoding declaration and is\n    therefore not necessarily suited for serialization to byte streams without\n    further treatment.\n\n    The boolean keyword argument 'pretty_print' enables formatted XML.\n\n    The keyword argument 'method' selects the output method: 'xml',\n    'html' or plain 'text'.\n\n    You can prevent the tail text of the element from being serialised\n    by passing the boolean ``with_tail`` option.  This has no impact\n    on the tail text of children, which will always be serialised.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_tounicode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element_or_tree = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_pretty_print = 0;
  PyObject *__pyx_v_with_tail = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_or_tree,&__pyx_n_s__method,&__pyx_n_s__pretty_print,&__pyx_n_s__with_tail,0};
  __Pyx_RefNannySetupContext("tounicode");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)__pyx_n_u__xml);
    values[2] = __pyx_k_96;
    values[3] = __pyx_k_97;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_or_tree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__method);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pretty_print);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "tounicode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2646; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element_or_tree = values[0];
    __pyx_v_method = values[1];
    __pyx_v_pretty_print = values[2];
    __pyx_v_with_tail = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element_or_tree = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_method = ((PyObject *)__pyx_n_u__xml);
    __pyx_v_pretty_print = __pyx_k_96;
    __pyx_v_with_tail = __pyx_k_97;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tounicode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2646; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.tounicode");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_element_or_tree);
  __Pyx_INCREF(__pyx_v_method);
  __Pyx_INCREF(__pyx_v_pretty_print);
  __Pyx_INCREF(__pyx_v_with_tail);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2669
 *     on the tail text of children, which will always be serialised.
 *     """
 *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
 *         return _tostring(<_Element>element_or_tree, _unicode, method,
 *                           0, 0, pretty_print, with_tail, -1)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element_or_tree, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2670
 *     """
 *     if isinstance(element_or_tree, _Element):
 *         return _tostring(<_Element>element_or_tree, _unicode, method,             # <<<<<<<<<<<<<<
 *                           0, 0, pretty_print, with_tail, -1)
 *     elif isinstance(element_or_tree, _ElementTree):
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2671
 *     if isinstance(element_or_tree, _Element):
 *         return _tostring(<_Element>element_or_tree, _unicode, method,
 *                           0, 0, pretty_print, with_tail, -1)             # <<<<<<<<<<<<<<
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 */
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_v_4lxml_5etree__unicode, __pyx_v_method, 0, 0, __pyx_t_1, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2672
 *         return _tostring(<_Element>element_or_tree, _unicode, method,
 *                           0, 0, pretty_print, with_tail, -1)
 *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 *                          _unicode, method, 0, 1, pretty_print, with_tail,
 */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_element_or_tree, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2673
 *                           0, 0, pretty_print, with_tail, -1)
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,             # <<<<<<<<<<<<<<
 *                          _unicode, method, 0, 1, pretty_print, with_tail,
 *                          -1)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2674
 *     elif isinstance(element_or_tree, _ElementTree):
 *         return _tostring((<_ElementTree>element_or_tree)._context_node,
 *                          _unicode, method, 0, 1, pretty_print, with_tail,             # <<<<<<<<<<<<<<
 *                          -1)
 *     else:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node, __pyx_v_4lxml_5etree__unicode, __pyx_v_method, 0, 1, __pyx_t_2, __pyx_t_1, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2678
 *     else:
 *         raise TypeError, u"Type '%s' cannot be serialized." % \
 *             type(element_or_tree)             # <<<<<<<<<<<<<<
 * 
 * def parse(source, _BaseParser parser=None, *, base_url=None):
 */
    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_95), ((PyObject *)Py_TYPE(__pyx_v_element_or_tree))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.tounicode");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element_or_tree);
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_DECREF(__pyx_v_pretty_print);
  __Pyx_DECREF(__pyx_v_with_tail);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2680
 *             type(element_or_tree)
 * 
 * def parse(source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *     u"""parse(source, parser=None, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_parse(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_parse[] = "parse(source, parser=None, base_url=None)\n\n    Return an ElementTree object loaded with source elements.  If no parser\n    is provided as second argument, the default parser is used.\n\n    The ``source`` can be any of the following:\n\n    - a file name/path\n    - a file object\n    - a file-like object\n    - a URL using the HTTP or FTP protocol\n\n    To parse from a string, use the ``fromstring()`` function instead.\n\n    Note that it is generally faster to parse from a file path or URL\n    than from an open file object or file-like object.  Transparent\n    decompression from gzip compressed sources is supported (unless\n    explicitly disabled in libxml2).\n\n    The ``base_url`` keyword allows setting a URL for the document\n    when parsing from a file-like object.  This is needed when looking\n    up external entities (DTD, XInclude, ...) with relative paths.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_parse(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_result_container;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("parse");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "parse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2680; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_source = values[0];
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[1]);
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 1));
      case  1: __pyx_v_source = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2680; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.parse");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_container = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2705
 *     """
 *     cdef _Document doc
 *     try:             # <<<<<<<<<<<<<<
 *         doc = _parseDocument(source, parser, base_url)
 *         return _elementTreeFactory(doc, None)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2706
 *     cdef _Document doc
 *     try:
 *         doc = _parseDocument(source, parser, base_url)             # <<<<<<<<<<<<<<
 *         return _elementTreeFactory(doc, None)
 *     except _TargetParserResult, result_container:
 */
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2706; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2707
 *     try:
 *         doc = _parseDocument(source, parser, base_url)
 *         return _elementTreeFactory(doc, None)             # <<<<<<<<<<<<<<
 *     except _TargetParserResult, result_container:
 *         return result_container.result
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L10_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2708
 *         doc = _parseDocument(source, parser, base_url)
 *         return _elementTreeFactory(doc, None)
 *     except _TargetParserResult, result_container:             # <<<<<<<<<<<<<<
 *         return result_container.result
 * 
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2708; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree.parse");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2708; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_result_container);
      __pyx_v_result_container = __pyx_t_3;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2709
 *         return _elementTreeFactory(doc, None)
 *     except _TargetParserResult, result_container:
 *         return result_container.result             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2709; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_r = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.parse");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_result_container);
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":10
 *     cdef list _dependent_proxies
 * 
 *     cdef int _assertNode(self) except -1:             # <<<<<<<<<<<<<<
 *         u"""This is our way of saying: this proxy is invalid!
 *         """
 */

static  int __pyx_f_4lxml_5etree_21_ReadOnlyElementProxy__assertNode(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_assertNode");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":13
 *         u"""This is our way of saying: this proxy is invalid!
 *         """
 *         assert self._c_node is not NULL, u"Proxy invalidated!"             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(__pyx_v_self->_c_node != NULL))) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_98));
    {__pyx_filename = __pyx_f[9]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":14
 *         """
 *         assert self._c_node is not NULL, u"Proxy invalidated!"
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef void free_after_use(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy._assertNode");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":16
 *         return 0
 * 
 *     cdef void free_after_use(self):             # <<<<<<<<<<<<<<
 *         u"""Should the xmlNode* be freed when releasing the proxy?
 *         """
 */

static  void __pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_free_after_use(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self) {
  __Pyx_RefNannySetupContext("free_after_use");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":19
 *         u"""Should the xmlNode* be freed when releasing the proxy?
 *         """
 *         self._free_after_use = 1             # <<<<<<<<<<<<<<
 * 
 *     property tag:
 */
  __pyx_v_self->_free_after_use = 1;

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":24
 *         u"""Element tag
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             return _namespacedName(self._c_node)
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_3tag___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_3tag___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":25
 *         """
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             return _namespacedName(self._c_node)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":26
 *         def __get__(self):
 *             self._assertNode()
 *             return _namespacedName(self._c_node)             # <<<<<<<<<<<<<<
 * 
 *     property text:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedName(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.tag.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":32
 *         the value None, if there was no text.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             return _collectText(self._c_node.children)
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4text___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4text___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":33
 *         """
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             return _collectText(self._c_node.children)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":34
 *         def __get__(self):
 *             self._assertNode()
 *             return _collectText(self._c_node.children)             # <<<<<<<<<<<<<<
 * 
 *     property tail:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->children); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.text.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":41
 *         there was no text.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             return _collectText(self._c_node.next)
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4tail___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4tail___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":42
 *         """
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             return _collectText(self._c_node.next)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":43
 *         def __get__(self):
 *             self._assertNode()
 *             return _collectText(self._c_node.next)             # <<<<<<<<<<<<<<
 * 
 *     property attrib:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->next); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.tail.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":46
 * 
 *     property attrib:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             return dict(_collectAttributes(self._c_node, 3))
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":47
 *     property attrib:
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             return dict(_collectAttributes(self._c_node, 3))
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":48
 *         def __get__(self):
 *             self._assertNode()
 *             return dict(_collectAttributes(self._c_node, 3))             # <<<<<<<<<<<<<<
 * 
 *     property prefix:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, 3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.attrib.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":53
 *         u"""Namespace prefix or None.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             if self._c_node.ns is not NULL:
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":54
 *         """
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":55
 *         def __get__(self):
 *             self._assertNode()
 *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)
 */
  __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->ns != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":56
 *             self._assertNode()
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
 *                     return funicode(self._c_node.ns.prefix)
 *             return None
 */
    __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->ns->prefix != NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":57
 *             if self._c_node.ns is not NULL:
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
 *             return None
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->ns->prefix); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":58
 *                 if self._c_node.ns.prefix is not NULL:
 *                     return funicode(self._c_node.ns.prefix)
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     property sourceline:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.prefix.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":63
 *         u"""Original line number as found by the parser or None if unknown.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef long line
 *             self._assertNode()
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_10sourceline___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_10sourceline___get__(PyObject *__pyx_v_self) {
  long __pyx_v_line;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":65
 *         def __get__(self):
 *             cdef long line
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             line = tree.xmlGetLineNo(self._c_node)
 *             if line > 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":66
 *             cdef long line
 *             self._assertNode()
 *             line = tree.xmlGetLineNo(self._c_node)             # <<<<<<<<<<<<<<
 *             if line > 0:
 *                 return line
 */
  __pyx_v_line = xmlGetLineNo(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":67
 *             self._assertNode()
 *             line = tree.xmlGetLineNo(self._c_node)
 *             if line > 0:             # <<<<<<<<<<<<<<
 *                 return line
 *             else:
 */
  __pyx_t_2 = (__pyx_v_line > 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":68
 *             line = tree.xmlGetLineNo(self._c_node)
 *             if line > 0:
 *                 return line             # <<<<<<<<<<<<<<
 *             else:
 *                 return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_line); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":70
 *                 return line
 *             else:
 *                 return None             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.sourceline.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":72
 *                 return None
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"<Element %s at %x>" % (self.tag, id(self))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":73
 * 
 *     def __repr__(self):
 *         return u"<Element %s at %x>" % (self.tag, id(self))             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_builtin_id, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_54), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":75
 *         return u"<Element %s at %x>" % (self.tag, id(self))
 * 
 *     def __getitem__(self, x):             # <<<<<<<<<<<<<<
 *         u"""Returns the subelement at the given position or the requested
 *         slice.
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___getitem__[] = "Returns the subelement at the given position or the requested\n        slice.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
  xmlNode *__pyx_v_c_node;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_slicelength;
  Py_ssize_t __pyx_v_c;
  Py_ssize_t __pyx_v_i;
  _node_to_node_function __pyx_v_next_element;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_v_result = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":84
 *         cdef _node_to_node_function next_element
 *         cdef list result
 *         if python.PySlice_Check(x):             # <<<<<<<<<<<<<<
 *             # slicing
 *             if _isFullSlice(<python.slice>x):
 */
  __pyx_t_1 = PySlice_Check(__pyx_v_x);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":86
 *         if python.PySlice_Check(x):
 *             # slicing
 *             if _isFullSlice(<python.slice>x):             # <<<<<<<<<<<<<<
 *                 return _collectChildren(self)
 *             _findChildSlice(x, self._c_node, &c_node, &step, &slicelength)
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__isFullSlice(((PySliceObject *)__pyx_v_x));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":87
 *             # slicing
 *             if _isFullSlice(<python.slice>x):
 *                 return _collectChildren(self)             # <<<<<<<<<<<<<<
 *             _findChildSlice(x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:
 */
      __Pyx_XDECREF(__pyx_r);
      if (!(likely(((__pyx_v_self) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_2 = __pyx_f_4lxml_5etree__collectChildren(((struct LxmlElement *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":88
 *             if _isFullSlice(<python.slice>x):
 *                 return _collectChildren(self)
 *             _findChildSlice(x, self._c_node, &c_node, &step, &slicelength)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 return []
 */
    if (!(likely(((__pyx_v_x) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x, __pyx_ptype_4lxml_6python_slice))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_f_4lxml_5etree__findChildSlice(((PySliceObject *)__pyx_v_x), ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, (&__pyx_v_c_node), (&__pyx_v_step), (&__pyx_v_slicelength)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":89
 *                 return _collectChildren(self)
 *             _findChildSlice(x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 return []
 *             if step > 0:
 */
    __pyx_t_1 = (__pyx_v_c_node == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":90
 *             _findChildSlice(x, self._c_node, &c_node, &step, &slicelength)
 *             if c_node is NULL:
 *                 return []             # <<<<<<<<<<<<<<
 *             if step > 0:
 *                 next_element = _nextElement
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_r = ((PyObject *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":91
 *             if c_node is NULL:
 *                 return []
 *             if step > 0:             # <<<<<<<<<<<<<<
 *                 next_element = _nextElement
 *             else:
 */
    __pyx_t_1 = (__pyx_v_step > 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":92
 *                 return []
 *             if step > 0:
 *                 next_element = _nextElement             # <<<<<<<<<<<<<<
 *             else:
 *                 step = -step
 */
      __pyx_v_next_element = __pyx_f_4lxml_5etree__nextElement;
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":94
 *                 next_element = _nextElement
 *             else:
 *                 step = -step             # <<<<<<<<<<<<<<
 *                 next_element = _previousElement
 *             result = []
 */
      __pyx_v_step = (-__pyx_v_step);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":95
 *             else:
 *                 step = -step
 *                 next_element = _previousElement             # <<<<<<<<<<<<<<
 *             result = []
 *             c = 0
 */
      __pyx_v_next_element = __pyx_f_4lxml_5etree__previousElement;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":96
 *                 step = -step
 *                 next_element = _previousElement
 *             result = []             # <<<<<<<<<<<<<<
 *             c = 0
 *             while c_node is not NULL and c < slicelength:
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_v_result));
    __pyx_v_result = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":97
 *                 next_element = _previousElement
 *             result = []
 *             c = 0             # <<<<<<<<<<<<<<
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 */
    __pyx_v_c = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":98
 *             result = []
 *             c = 0
 *             while c_node is not NULL and c < slicelength:             # <<<<<<<<<<<<<<
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *                 result.append(_elementFactory(self._doc, c_node))
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_node != NULL);
      if (__pyx_t_1) {
        __pyx_t_4 = (__pyx_v_c < __pyx_v_slicelength);
        __pyx_t_5 = __pyx_t_4;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      if (!__pyx_t_5) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":99
 *             c = 0
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))             # <<<<<<<<<<<<<<
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1
 */
      if (unlikely(__pyx_v_result == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      if (!(likely(((((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy), __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_result), __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":100
 *             while c_node is not NULL and c < slicelength:
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *                 result.append(_elementFactory(self._doc, c_node))             # <<<<<<<<<<<<<<
 *                 c = c + 1
 *                 for i from 0 <= i < step:
 */
      if (unlikely(__pyx_v_result == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s___doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_2), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_result), __pyx_t_6); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":101
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 */
      __pyx_v_c = (__pyx_v_c + 1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":102
 *                 result.append(_elementFactory(self._doc, c_node))
 *                 c = c + 1
 *                 for i from 0 <= i < step:             # <<<<<<<<<<<<<<
 *                     c_node = next_element(c_node)
 *             return result
 */
      __pyx_t_7 = __pyx_v_step;
      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":103
 *                 c = c + 1
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)             # <<<<<<<<<<<<<<
 *             return result
 *         else:
 */
        __pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":104
 *                 for i from 0 <= i < step:
 *                     c_node = next_element(c_node)
 *             return result             # <<<<<<<<<<<<<<
 *         else:
 *             # indexing
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_result));
    __pyx_r = ((PyObject *)__pyx_v_result);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":107
 *         else:
 *             # indexing
 *             c_node = _findChild(self._c_node, x)             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 */
    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_x); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_node = __pyx_f_4lxml_5etree__findChild(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, __pyx_t_7);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":108
 *             # indexing
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 raise IndexError, u"list index out of range"
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 */
    __pyx_t_5 = (__pyx_v_c_node == NULL);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":109
 *             c_node = _findChild(self._c_node, x)
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"             # <<<<<<<<<<<<<<
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 * 
 */
      __Pyx_Raise(__pyx_builtin_IndexError, ((PyObject *)__pyx_kp_u_50), 0);
      {__pyx_filename = __pyx_f[9]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":110
 *             if c_node is NULL:
 *                 raise IndexError, u"list index out of range"
 *             return _newReadOnlyProxy(self._source_proxy, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(((((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":112
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         u"""Returns the number of subelements.
 *         """
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___len__(PyObject *__pyx_v_self); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___len__[] = "Returns the number of subelements.\n        ";
static Py_ssize_t __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_v_c;
  xmlNode *__pyx_v_c_node;
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__len__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":117
 *         cdef Py_ssize_t c
 *         cdef xmlNode* c_node
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c = 0
 *         c_node = self._c_node.children
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":118
 *         cdef xmlNode* c_node
 *         self._assertNode()
 *         c = 0             # <<<<<<<<<<<<<<
 *         c_node = self._c_node.children
 *         while c_node is not NULL:
 */
  __pyx_v_c = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":119
 *         self._assertNode()
 *         c = 0
 *         c_node = self._c_node.children             # <<<<<<<<<<<<<<
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):
 */
  __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":120
 *         c = 0
 *         c_node = self._c_node.children
 *         while c_node is not NULL:             # <<<<<<<<<<<<<<
 *             if tree._isElement(c_node):
 *                 c = c + 1
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":121
 *         c_node = self._c_node.children
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):             # <<<<<<<<<<<<<<
 *                 c = c + 1
 *             c_node = c_node.next
 */
    __pyx_t_2 = _isElement(__pyx_v_c_node);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":122
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):
 *                 c = c + 1             # <<<<<<<<<<<<<<
 *             c_node = c_node.next
 *         return c
 */
      __pyx_v_c = (__pyx_v_c + 1);
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":123
 *             if tree._isElement(c_node):
 *                 c = c + 1
 *             c_node = c_node.next             # <<<<<<<<<<<<<<
 *         return c
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":124
 *                 c = c + 1
 *             c_node = c_node.next
 *         return c             # <<<<<<<<<<<<<<
 * 
 *     def __nonzero__(self):
 */
  __pyx_r = __pyx_v_c;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__len__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":126
 *         return c
 * 
 *     def __nonzero__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         self._assertNode()
 */

static int __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___nonzero__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___nonzero__(PyObject *__pyx_v_self) {
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__nonzero__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":128
 *     def __nonzero__(self):
 *         cdef xmlNode* c_node
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c_node = _findChildBackwards(self._c_node, 0)
 *         return c_node != NULL
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":129
 *         cdef xmlNode* c_node
 *         self._assertNode()
 *         c_node = _findChildBackwards(self._c_node, 0)             # <<<<<<<<<<<<<<
 *         return c_node != NULL
 * 
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildBackwards(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":130
 *         self._assertNode()
 *         c_node = _findChildBackwards(self._c_node, 0)
 *         return c_node != NULL             # <<<<<<<<<<<<<<
 * 
 *     def __deepcopy__(self, memo):
 */
  __pyx_r = (__pyx_v_c_node != NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__nonzero__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":132
 *         return c_node != NULL
 * 
 *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
 *         u"__deepcopy__(self, memo)"
 *         return self.__copy__()
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___deepcopy__[] = "__deepcopy__(self, memo)";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__deepcopy__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":134
 *     def __deepcopy__(self, memo):
 *         u"__deepcopy__(self, memo)"
 *         return self.__copy__()             # <<<<<<<<<<<<<<
 * 
 *     def __copy__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____copy__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__deepcopy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":136
 *         return self.__copy__()
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         u"__copy__(self)"
 *         cdef xmlDoc* c_doc
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___copy__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___copy__[] = "__copy__(self)";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___copy__(PyObject *__pyx_v_self, PyObject *unused) {
  xmlDoc *__pyx_v_c_doc;
  xmlNode *__pyx_v_c_node;
  struct LxmlDocument *__pyx_v_new_doc;
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  xmlDoc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__copy__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_new_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":141
 *         cdef xmlNode* c_node
 *         cdef _Document new_doc
 *         c_doc = _copyDocRoot(self._c_node.doc, self._c_node) # recursive             # <<<<<<<<<<<<<<
 *         new_doc = _documentFactory(c_doc, None)
 *         root = new_doc.getroot()
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__copyDocRoot(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->doc, ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":142
 *         cdef _Document new_doc
 *         c_doc = _copyDocRoot(self._c_node.doc, self._c_node) # recursive
 *         new_doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
 *         root = new_doc.getroot()
 *         if root is not None:
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_doc));
  __pyx_v_new_doc = ((struct LxmlDocument *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":143
 *         c_doc = _copyDocRoot(self._c_node.doc, self._c_node) # recursive
 *         new_doc = _documentFactory(c_doc, None)
 *         root = new_doc.getroot()             # <<<<<<<<<<<<<<
 *         if root is not None:
 *             return root
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_new_doc->__pyx_vtab)->getroot(__pyx_v_new_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":144
 *         new_doc = _documentFactory(c_doc, None)
 *         root = new_doc.getroot()
 *         if root is not None:             # <<<<<<<<<<<<<<
 *             return root
 *         # Comment/PI
 */
  __pyx_t_3 = (__pyx_v_root != Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":145
 *         root = new_doc.getroot()
 *         if root is not None:
 *             return root             # <<<<<<<<<<<<<<
 *         # Comment/PI
 *         c_node = c_doc.children
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_root);
    __pyx_r = __pyx_v_root;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":147
 *             return root
 *         # Comment/PI
 *         c_node = c_doc.children             # <<<<<<<<<<<<<<
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next
 */
  __pyx_v_c_node = __pyx_v_c_doc->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":148
 *         # Comment/PI
 *         c_node = c_doc.children
 *         while c_node is not NULL and c_node.type != self._c_node.type:             # <<<<<<<<<<<<<<
 *             c_node = c_node.next
 *         if c_node is NULL:
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_node != NULL);
    if (__pyx_t_3) {
      __pyx_t_4 = (__pyx_v_c_node->type != ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->type);
      __pyx_t_5 = __pyx_t_4;
    } else {
      __pyx_t_5 = __pyx_t_3;
    }
    if (!__pyx_t_5) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":149
 *         c_node = c_doc.children
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next             # <<<<<<<<<<<<<<
 *         if c_node is NULL:
 *             return None
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":150
 *         while c_node is not NULL and c_node.type != self._c_node.type:
 *             c_node = c_node.next
 *         if c_node is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return _elementFactory(new_doc, c_node)
 */
  __pyx_t_5 = (__pyx_v_c_node == NULL);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":151
 *             c_node = c_node.next
 *         if c_node is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return _elementFactory(new_doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":152
 *         if c_node is NULL:
 *             return None
 *         return _elementFactory(new_doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_new_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__copy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_new_doc);
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":154
 *         return _elementFactory(new_doc, c_node)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self.getchildren())
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":155
 * 
 *     def __iter__(self):
 *         return iter(self.getchildren())             # <<<<<<<<<<<<<<
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->getchildren(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":157
 *         return iter(self.getchildren())
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         u"""iterchildren(self, tag=None, reversed=False)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_iterchildren(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_iterchildren[] = "iterchildren(self, tag=None, reversed=False)\n\n        Iterate over the children of this element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_iterchildren(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_reversed = 0;
  PyObject *__pyx_v_children;
  PyObject *__pyx_v_el;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__reversed,0};
  __Pyx_RefNannySetupContext("iterchildren");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_99;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__reversed);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "iterchildren") < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
    __pyx_v_reversed = values[1];
  } else {
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_reversed = __pyx_k_99;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iterchildren", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.iterchildren");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_reversed);
  __pyx_v_children = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_el = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":162
 *         Iterate over the children of this element.
 *         """
 *         children = self.getchildren()             # <<<<<<<<<<<<<<
 *         if tag is not None and tag != '*':
 *             children = [ el for el in children if el.tag == tag ]
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->getchildren(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_children);
  __pyx_v_children = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":163
 *         """
 *         children = self.getchildren()
 *         if tag is not None and tag != '*':             # <<<<<<<<<<<<<<
 *             children = [ el for el in children if el.tag == tag ]
 *         if reversed:
 */
  __pyx_t_2 = (__pyx_v_tag != Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_tag, ((PyObject *)__pyx_kp_s_100), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":164
 *         children = self.getchildren()
 *         if tag is not None and tag != '*':
 *             children = [ el for el in children if el.tag == tag ]             # <<<<<<<<<<<<<<
 *         if reversed:
 *             children = children[::-1]
 */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    if (PyList_CheckExact(__pyx_v_children) || PyTuple_CheckExact(__pyx_v_children)) {
      __pyx_t_5 = 0; __pyx_t_6 = __pyx_v_children; __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_children); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_6);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF(__pyx_v_el);
      __pyx_v_el = __pyx_t_7;
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_GetAttr(__pyx_v_el, __pyx_n_s__tag); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_tag, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_4) {
        __pyx_t_9 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_v_el); if (unlikely(__pyx_t_9)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L9;
      }
      __pyx_L9:;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_INCREF(((PyObject *)__pyx_t_1));
    __Pyx_DECREF(__pyx_v_children);
    __pyx_v_children = ((PyObject *)__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":165
 *         if tag is not None and tag != '*':
 *             children = [ el for el in children if el.tag == tag ]
 *         if reversed:             # <<<<<<<<<<<<<<
 *             children = children[::-1]
 *         return iter(children)
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_reversed); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":166
 *             children = [ el for el in children if el.tag == tag ]
 *         if reversed:
 *             children = children[::-1]             # <<<<<<<<<<<<<<
 *         return iter(children)
 * 
 */
    __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_GetItem(__pyx_v_children, __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_children);
    __pyx_v_children = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":167
 *         if reversed:
 *             children = children[::-1]
 *         return iter(children)             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key, default=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = PyObject_GetIter(__pyx_v_children); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.iterchildren");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_children);
  __Pyx_DECREF(__pyx_v_el);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_reversed);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":169
 *         return iter(children)
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         u"""Gets an element attribute.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_get[] = "Gets an element attribute.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":172
 *         u"""Gets an element attribute.
 *         """
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         return _getNodeAttributeValue(self._c_node, key, default)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":173
 *         """
 *         self._assertNode()
 *         return _getNodeAttributeValue(self._c_node, key, default)             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__getNodeAttributeValue(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":175
 *         return _getNodeAttributeValue(self._c_node, key, default)
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         u"""Gets a list of attribute names. The names are returned in an
 *         arbitrary order (just like for an ordinary Python dictionary).
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_keys[] = "Gets a list of attribute names. The names are returned in an\n        arbitrary order (just like for an ordinary Python dictionary).\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_keys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("keys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":179
 *         arbitrary order (just like for an ordinary Python dictionary).
 *         """
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._c_node, 1)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":180
 *         """
 *         self._assertNode()
 *         return _collectAttributes(self._c_node, 1)             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.keys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":182
 *         return _collectAttributes(self._c_node, 1)
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         u"""Gets element attributes, as a sequence. The attributes are returned
 *         in an arbitrary order.
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_values[] = "Gets element attributes, as a sequence. The attributes are returned\n        in an arbitrary order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_values(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("values");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":186
 *         in an arbitrary order.
 *         """
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._c_node, 2)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":187
 *         """
 *         self._assertNode()
 *         return _collectAttributes(self._c_node, 2)             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, 2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":189
 *         return _collectAttributes(self._c_node, 2)
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         u"""Gets element attributes, as a sequence. The attributes are returned
 *         in an arbitrary order.
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_items[] = "Gets element attributes, as a sequence. The attributes are returned\n        in an arbitrary order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("items");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":193
 *         in an arbitrary order.
 *         """
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         return _collectAttributes(self._c_node, 3)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":194
 *         """
 *         self._assertNode()
 *         return _collectAttributes(self._c_node, 3)             # <<<<<<<<<<<<<<
 * 
 *     cpdef getchildren(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectAttributes(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node, 3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":196
 *         return _collectAttributes(self._c_node, 3)
 * 
 *     cpdef getchildren(self):             # <<<<<<<<<<<<<<
 *         u"""Returns all subelements. The elements are returned in document
 *         order.
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getchildren(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static  PyObject *__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_getchildren(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self, int __pyx_skip_dispatch) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("getchildren");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_result = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overriden in Python */
  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__getchildren); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getchildren)) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":202
 *         cdef xmlNode* c_node
 *         cdef list result
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         result = []
 *         c_node = self._c_node.children
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->__pyx_vtab)->_assertNode(__pyx_v_self); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":203
 *         cdef list result
 *         self._assertNode()
 *         result = []             # <<<<<<<<<<<<<<
 *         c_node = self._c_node.children
 *         while c_node is not NULL:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":204
 *         self._assertNode()
 *         result = []
 *         c_node = self._c_node.children             # <<<<<<<<<<<<<<
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):
 */
  __pyx_v_c_node = __pyx_v_self->_c_node->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":205
 *         result = []
 *         c_node = self._c_node.children
 *         while c_node is not NULL:             # <<<<<<<<<<<<<<
 *             if tree._isElement(c_node):
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 */
  while (1) {
    __pyx_t_4 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_4) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":206
 *         c_node = self._c_node.children
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):             # <<<<<<<<<<<<<<
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *             c_node = c_node.next
 */
    __pyx_t_4 = _isElement(__pyx_v_c_node);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":207
 *         while c_node is not NULL:
 *             if tree._isElement(c_node):
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))             # <<<<<<<<<<<<<<
 *             c_node = c_node.next
 *         return result
 */
      if (unlikely(__pyx_v_result == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      if (!(likely(((__pyx_v_self->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self->_source_proxy), __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_result), __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":208
 *             if tree._isElement(c_node):
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *             c_node = c_node.next             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":209
 *                 result.append(_newReadOnlyProxy(self._source_proxy, c_node))
 *             c_node = c_node.next
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getparent(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.getchildren");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":196
 *         return _collectAttributes(self._c_node, 3)
 * 
 *     cpdef getchildren(self):             # <<<<<<<<<<<<<<
 *         u"""Returns all subelements. The elements are returned in document
 *         order.
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getchildren(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getchildren[] = "Returns all subelements. The elements are returned in document\n        order.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getchildren(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getchildren");
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->getchildren(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self), 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.getchildren");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":211
 *         return result
 * 
 *     def getparent(self):             # <<<<<<<<<<<<<<
 *         u"""Returns the parent of this element or None for the root element.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getparent(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getparent[] = "Returns the parent of this element or None for the root element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getparent(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_parent;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("getparent");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":215
 *         """
 *         cdef xmlNode* c_parent
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c_parent = self._c_node.parent
 *         if c_parent is NULL or not tree._isElement(c_parent):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":216
 *         cdef xmlNode* c_parent
 *         self._assertNode()
 *         c_parent = self._c_node.parent             # <<<<<<<<<<<<<<
 *         if c_parent is NULL or not tree._isElement(c_parent):
 *             return None
 */
  __pyx_v_c_parent = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node->parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":217
 *         self._assertNode()
 *         c_parent = self._c_node.parent
 *         if c_parent is NULL or not tree._isElement(c_parent):             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_2 = (__pyx_v_c_parent == NULL);
  if (!__pyx_t_2) {
    __pyx_t_3 = (!_isElement(__pyx_v_c_parent));
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":218
 *         c_parent = self._c_node.parent
 *         if c_parent is NULL or not tree._isElement(c_parent):
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             return _newReadOnlyProxy(self._source_proxy, c_parent)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":220
 *             return None
 *         else:
 *             return _newReadOnlyProxy(self._source_proxy, c_parent)             # <<<<<<<<<<<<<<
 * 
 *     def getnext(self):
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(((((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy), __pyx_v_c_parent)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.getparent");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":222
 *             return _newReadOnlyProxy(self._source_proxy, c_parent)
 * 
 *     def getnext(self):             # <<<<<<<<<<<<<<
 *         u"""Returns the following sibling of this element or None.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getnext(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getnext[] = "Returns the following sibling of this element or None.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getnext(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("getnext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":226
 *         """
 *         cdef xmlNode* c_node
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c_node = _nextElement(self._c_node)
 *         if c_node is not NULL:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":227
 *         cdef xmlNode* c_node
 *         self._assertNode()
 *         c_node = _nextElement(self._c_node)             # <<<<<<<<<<<<<<
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":228
 *         self._assertNode()
 *         c_node = _nextElement(self._c_node)
 *         if c_node is not NULL:             # <<<<<<<<<<<<<<
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 *         return None
 */
  __pyx_t_2 = (__pyx_v_c_node != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":229
 *         c_node = _nextElement(self._c_node)
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(((((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy), __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":230
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def getprevious(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.getnext");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":232
 *         return None
 * 
 *     def getprevious(self):             # <<<<<<<<<<<<<<
 *         u"""Returns the preceding sibling of this element or None.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getprevious(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getprevious[] = "Returns the preceding sibling of this element or None.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getprevious(PyObject *__pyx_v_self, PyObject *unused) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("getprevious");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":236
 *         """
 *         cdef xmlNode* c_node
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c_node = _previousElement(self._c_node)
 *         if c_node is not NULL:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->__pyx_vtab)->_assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":237
 *         cdef xmlNode* c_node
 *         self._assertNode()
 *         c_node = _previousElement(self._c_node)             # <<<<<<<<<<<<<<
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__previousElement(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":238
 *         self._assertNode()
 *         c_node = _previousElement(self._c_node)
 *         if c_node is not NULL:             # <<<<<<<<<<<<<<
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 *         return None
 */
  __pyx_t_2 = (__pyx_v_c_node != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":239
 *         c_node = _previousElement(self._c_node)
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(((((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy) == Py_None) || likely(__Pyx_TypeTest(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)->_source_proxy), __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":240
 *         if c_node is not NULL:
 *             return _newReadOnlyProxy(self._source_proxy, c_node)
 *         return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ReadOnlyElementProxy.getprevious");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":247
 *     cdef _ReadOnlyElementProxy NEW_RO_PROXY "PY_NEW" (object t)
 * 
 * cdef _ReadOnlyElementProxy _newReadOnlyProxy(             # <<<<<<<<<<<<<<
 *     _ReadOnlyElementProxy source_proxy, xmlNode* c_node):
 *     cdef _ReadOnlyElementProxy el
 */

static  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_f_4lxml_5etree__newReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_source_proxy, xmlNode *__pyx_v_c_node) {
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_el;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_newReadOnlyProxy");
  __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":250
 *     _ReadOnlyElementProxy source_proxy, xmlNode* c_node):
 *     cdef _ReadOnlyElementProxy el
 *     el = NEW_RO_PROXY(_ReadOnlyElementProxy)             # <<<<<<<<<<<<<<
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_el));
  __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":251
 *     cdef _ReadOnlyElementProxy el
 *     el = NEW_RO_PROXY(_ReadOnlyElementProxy)
 *     el._c_node = c_node             # <<<<<<<<<<<<<<
 *     _initReadOnlyProxy(el, source_proxy)
 *     return el
 */
  __pyx_v_el->_c_node = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":252
 *     el = NEW_RO_PROXY(_ReadOnlyElementProxy)
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)             # <<<<<<<<<<<<<<
 *     return el
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__initReadOnlyProxy(__pyx_v_el, __pyx_v_source_proxy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":253
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)
 *     return el             # <<<<<<<<<<<<<<
 * 
 * cdef inline _initReadOnlyProxy(_ReadOnlyElementProxy el,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_el));
  __pyx_r = __pyx_v_el;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._newReadOnlyProxy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_el);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":255
 *     return el
 * 
 * cdef inline _initReadOnlyProxy(_ReadOnlyElementProxy el,             # <<<<<<<<<<<<<<
 *                                _ReadOnlyElementProxy source_proxy):
 *     el._free_after_use = 0
 */

static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__initReadOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_el, struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_source_proxy) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_initReadOnlyProxy");
  __Pyx_INCREF((PyObject *)__pyx_v_el);
  __Pyx_INCREF((PyObject *)__pyx_v_source_proxy);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":257
 * cdef inline _initReadOnlyProxy(_ReadOnlyElementProxy el,
 *                                _ReadOnlyElementProxy source_proxy):
 *     el._free_after_use = 0             # <<<<<<<<<<<<<<
 *     if source_proxy is None:
 *         el._source_proxy = el
 */
  __pyx_v_el->_free_after_use = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":258
 *                                _ReadOnlyElementProxy source_proxy):
 *     el._free_after_use = 0
 *     if source_proxy is None:             # <<<<<<<<<<<<<<
 *         el._source_proxy = el
 *         el._dependent_proxies = [el]
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_source_proxy) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":259
 *     el._free_after_use = 0
 *     if source_proxy is None:
 *         el._source_proxy = el             # <<<<<<<<<<<<<<
 *         el._dependent_proxies = [el]
 *     else:
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_el));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_el));
    __Pyx_GOTREF(__pyx_v_el->_source_proxy);
    __Pyx_DECREF(__pyx_v_el->_source_proxy);
    __pyx_v_el->_source_proxy = ((PyObject *)__pyx_v_el);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":260
 *     if source_proxy is None:
 *         el._source_proxy = el
 *         el._dependent_proxies = [el]             # <<<<<<<<<<<<<<
 *     else:
 *         el._source_proxy = source_proxy
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(((PyObject *)__pyx_v_el));
    PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_el));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_el));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
    __Pyx_GOTREF(__pyx_v_el->_dependent_proxies);
    __Pyx_DECREF(((PyObject *)__pyx_v_el->_dependent_proxies));
    __pyx_v_el->_dependent_proxies = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":262
 *         el._dependent_proxies = [el]
 *     else:
 *         el._source_proxy = source_proxy             # <<<<<<<<<<<<<<
 *         source_proxy._dependent_proxies.append(el)
 * 
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_source_proxy));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_source_proxy));
    __Pyx_GOTREF(__pyx_v_el->_source_proxy);
    __Pyx_DECREF(__pyx_v_el->_source_proxy);
    __pyx_v_el->_source_proxy = ((PyObject *)__pyx_v_source_proxy);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":263
 *     else:
 *         el._source_proxy = source_proxy
 *         source_proxy._dependent_proxies.append(el)             # <<<<<<<<<<<<<<
 * 
 * cdef _freeReadOnlyProxies(_ReadOnlyElementProxy sourceProxy):
 */
    if (unlikely(__pyx_v_source_proxy->_dependent_proxies == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_source_proxy->_dependent_proxies), ((PyObject *)__pyx_v_el)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._initReadOnlyProxy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_el);
  __Pyx_DECREF((PyObject *)__pyx_v_source_proxy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":265
 *         source_proxy._dependent_proxies.append(el)
 * 
 * cdef _freeReadOnlyProxies(_ReadOnlyElementProxy sourceProxy):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     cdef _ReadOnlyElementProxy el
 */

static  PyObject *__pyx_f_4lxml_5etree__freeReadOnlyProxies(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_sourceProxy) {
  xmlNode *__pyx_v_c_node;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_el;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_freeReadOnlyProxies");
  __Pyx_INCREF((PyObject *)__pyx_v_sourceProxy);
  __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":268
 *     cdef xmlNode* c_node
 *     cdef _ReadOnlyElementProxy el
 *     if sourceProxy is None:             # <<<<<<<<<<<<<<
 *         return
 *     if sourceProxy._dependent_proxies is None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_sourceProxy) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":269
 *     cdef _ReadOnlyElementProxy el
 *     if sourceProxy is None:
 *         return             # <<<<<<<<<<<<<<
 *     if sourceProxy._dependent_proxies is None:
 *         return
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":270
 *     if sourceProxy is None:
 *         return
 *     if sourceProxy._dependent_proxies is None:             # <<<<<<<<<<<<<<
 *         return
 *     for el in sourceProxy._dependent_proxies:
 */
  __pyx_t_1 = (__pyx_v_sourceProxy->_dependent_proxies == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":271
 *         return
 *     if sourceProxy._dependent_proxies is None:
 *         return             # <<<<<<<<<<<<<<
 *     for el in sourceProxy._dependent_proxies:
 *         c_node = el._c_node
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":272
 *     if sourceProxy._dependent_proxies is None:
 *         return
 *     for el in sourceProxy._dependent_proxies:             # <<<<<<<<<<<<<<
 *         c_node = el._c_node
 *         el._c_node = NULL
 */
  if (likely(((PyObject *)__pyx_v_sourceProxy->_dependent_proxies) != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_3 = ((PyObject *)__pyx_v_sourceProxy->_dependent_proxies); __Pyx_INCREF(__pyx_t_3);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[9]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_el));
    __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":273
 *         return
 *     for el in sourceProxy._dependent_proxies:
 *         c_node = el._c_node             # <<<<<<<<<<<<<<
 *         el._c_node = NULL
 *         if el._free_after_use:
 */
    __pyx_v_c_node = __pyx_v_el->_c_node;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":274
 *     for el in sourceProxy._dependent_proxies:
 *         c_node = el._c_node
 *         el._c_node = NULL             # <<<<<<<<<<<<<<
 *         if el._free_after_use:
 *             tree.xmlFreeNode(c_node)
 */
    __pyx_v_el->_c_node = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":275
 *         c_node = el._c_node
 *         el._c_node = NULL
 *         if el._free_after_use:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeNode(c_node)
 *     del sourceProxy._dependent_proxies[:]
 */
    __pyx_t_1 = __pyx_v_el->_free_after_use;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":276
 *         el._c_node = NULL
 *         if el._free_after_use:
 *             tree.xmlFreeNode(c_node)             # <<<<<<<<<<<<<<
 *     del sourceProxy._dependent_proxies[:]
 * 
 */
      xmlFreeNode(__pyx_v_c_node);
      goto __pyx_L7;
    }
    __pyx_L7:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":277
 *         if el._free_after_use:
 *             tree.xmlFreeNode(c_node)
 *     del sourceProxy._dependent_proxies[:]             # <<<<<<<<<<<<<<
 * 
 * cdef class _AppendOnlyElementProxy(_ReadOnlyElementProxy):
 */
  if (PySequence_DelSlice(((PyObject *)__pyx_v_sourceProxy->_dependent_proxies), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._freeReadOnlyProxies");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_el);
  __Pyx_DECREF((PyObject *)__pyx_v_sourceProxy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":283
 *     text content (i.e. everything that adds to the subtree).
 *     """
 *     cpdef append(self, other_element):             # <<<<<<<<<<<<<<
 *         u"""Append a copy of an Element to the list of children.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append(PyObject *__pyx_v_self, PyObject *__pyx_v_other_element); /*proto*/
static  PyObject *__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_self, PyObject *__pyx_v_other_element, int __pyx_skip_dispatch) {
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  xmlNode *__pyx_t_5;
  xmlNode *__pyx_t_6;
  __Pyx_RefNannySetupContext("append");
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overriden in Python */
  else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__append); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append)) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_other_element);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_other_element);
      __Pyx_GIVEREF(__pyx_v_other_element);
      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":288
 *         cdef xmlNode* c_next
 *         cdef xmlNode* c_node
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         c_node = _roNodeOf(other_element)
 *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":289
 *         cdef xmlNode* c_node
 *         self._assertNode()
 *         c_node = _roNodeOf(other_element)             # <<<<<<<<<<<<<<
 *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
 *         c_next = c_node.next
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree__roNodeOf(__pyx_v_other_element); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":290
 *         self._assertNode()
 *         c_node = _roNodeOf(other_element)
 *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)             # <<<<<<<<<<<<<<
 *         c_next = c_node.next
 *         tree.xmlAddChild(self._c_node, c_node)
 */
  __pyx_t_6 = __pyx_f_4lxml_5etree__copyNodeToDoc(__pyx_v_c_node, __pyx_v_self->__pyx_base._c_node->doc); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_6;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":291
 *         c_node = _roNodeOf(other_element)
 *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
 *         c_next = c_node.next             # <<<<<<<<<<<<<<
 *         tree.xmlAddChild(self._c_node, c_node)
 *         _moveTail(c_next, c_node)
 */
  __pyx_v_c_next = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":292
 *         c_node = _copyNodeToDoc(c_node, self._c_node.doc)
 *         c_next = c_node.next
 *         tree.xmlAddChild(self._c_node, c_node)             # <<<<<<<<<<<<<<
 *         _moveTail(c_next, c_node)
 * 
 */
  xmlAddChild(__pyx_v_self->__pyx_base._c_node, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":293
 *         c_next = c_node.next
 *         tree.xmlAddChild(self._c_node, c_node)
 *         _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
 * 
 *     def extend(self, elements):
 */
  __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._AppendOnlyElementProxy.append");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":283
 *     text content (i.e. everything that adds to the subtree).
 *     """
 *     cpdef append(self, other_element):             # <<<<<<<<<<<<<<
 *         u"""Append a copy of an Element to the list of children.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append(PyObject *__pyx_v_self, PyObject *__pyx_v_other_element); /*proto*/
static char __pyx_doc_4lxml_5etree_23_AppendOnlyElementProxy_append[] = "Append a copy of an Element to the list of children.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append(PyObject *__pyx_v_self, PyObject *__pyx_v_other_element) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("append");
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base.__pyx_vtab)->append(((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self), __pyx_v_other_element, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._AppendOnlyElementProxy.append");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":295
 *         _moveTail(c_next, c_node)
 * 
 *     def extend(self, elements):             # <<<<<<<<<<<<<<
 *         u"""Append a copy of all Elements from a sequence to the list of
 *         children.
 */

static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_extend(PyObject *__pyx_v_self, PyObject *__pyx_v_elements); /*proto*/
static char __pyx_doc_4lxml_5etree_23_AppendOnlyElementProxy_extend[] = "Append a copy of all Elements from a sequence to the list of\n        children.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_extend(PyObject *__pyx_v_self, PyObject *__pyx_v_elements) {
  PyObject *__pyx_v_element;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("extend");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_elements);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":299
 *         children.
 *         """
 *         self._assertNode()             # <<<<<<<<<<<<<<
 *         for element in elements:
 *             self.append(element)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":300
 *         """
 *         self._assertNode()
 *         for element in elements:             # <<<<<<<<<<<<<<
 *             self.append(element)
 * 
 */
  if (PyList_CheckExact(__pyx_v_elements) || PyTuple_CheckExact(__pyx_v_elements)) {
    __pyx_t_2 = 0; __pyx_t_3 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
    } else {
      __pyx_t_4 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_4) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_v_element);
    __pyx_v_element = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":301
 *         self._assertNode()
 *         for element in elements:
 *             self.append(element)             # <<<<<<<<<<<<<<
 * 
 *     property text:
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base.__pyx_vtab)->append(((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self), __pyx_v_element, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._AppendOnlyElementProxy.extend");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_elements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":307
 *         value None, if there was no text.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             return _collectText(self._c_node.children)
 */

static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":308
 *         """
 *         def __get__(self):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             return _collectText(self._c_node.children)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":309
 *         def __get__(self):
 *             self._assertNode()
 *             return _collectText(self._c_node.children)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base._c_node->children); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._AppendOnlyElementProxy.text.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":311
 *             return _collectText(self._c_node.children)
 * 
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._assertNode()
 *             if isinstance(value, QName):
 */

static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_value);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":312
 * 
 *         def __set__(self, value):
 *             self._assertNode()             # <<<<<<<<<<<<<<
 *             if isinstance(value, QName):
 *                 value = python.PyUnicode_FromEncodedObject(
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._assertNode(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_self)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":313
 *         def __set__(self, value):
 *             self._assertNode()
 *             if isinstance(value, QName):             # <<<<<<<<<<<<<<
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')
 */
  __pyx_t_2 = PyObject_TypeCheck(__pyx_v_value, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_QName))); 
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":315
 *             if isinstance(value, QName):
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *             _setNodeText(self._c_node, value)
 * 
 */
    if (!(likely(((__pyx_v_self) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_f_4lxml_5etree__resolveQNameText(((struct LxmlElement *)__pyx_v_self), __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyUnicode_FromEncodedObject(__pyx_t_3, __pyx_k_20, __pyx_k__strict); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":316
 *                 value = python.PyUnicode_FromEncodedObject(
 *                     _resolveQNameText(self, value), 'UTF-8', 'strict')
 *             _setNodeText(self._c_node, value)             # <<<<<<<<<<<<<<
 * 
 * cdef _AppendOnlyElementProxy _newAppendOnlyProxy(
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setNodeText(((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_v_self)->__pyx_base._c_node, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._AppendOnlyElementProxy.text.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":318
 *             _setNodeText(self._c_node, value)
 * 
 * cdef _AppendOnlyElementProxy _newAppendOnlyProxy(             # <<<<<<<<<<<<<<
 *     _ReadOnlyElementProxy source_proxy, xmlNode* c_node):
 *     cdef _AppendOnlyElementProxy el
 */

static  struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_f_4lxml_5etree__newAppendOnlyProxy(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_source_proxy, xmlNode *__pyx_v_c_node) {
  struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_v_el;
  struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_newAppendOnlyProxy");
  __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":321
 *     _ReadOnlyElementProxy source_proxy, xmlNode* c_node):
 *     cdef _AppendOnlyElementProxy el
 *     el = <_AppendOnlyElementProxy>NEW_RO_PROXY(_AppendOnlyElementProxy)             # <<<<<<<<<<<<<<
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__AppendOnlyElementProxy)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_t_1)));
  __Pyx_DECREF(((PyObject *)__pyx_v_el));
  __pyx_v_el = ((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":322
 *     cdef _AppendOnlyElementProxy el
 *     el = <_AppendOnlyElementProxy>NEW_RO_PROXY(_AppendOnlyElementProxy)
 *     el._c_node = c_node             # <<<<<<<<<<<<<<
 *     _initReadOnlyProxy(el, source_proxy)
 *     return el
 */
  __pyx_v_el->__pyx_base._c_node = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":323
 *     el = <_AppendOnlyElementProxy>NEW_RO_PROXY(_AppendOnlyElementProxy)
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)             # <<<<<<<<<<<<<<
 *     return el
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__initReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_el), __pyx_v_source_proxy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":324
 *     el._c_node = c_node
 *     _initReadOnlyProxy(el, source_proxy)
 *     return el             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _roNodeOf(element) except NULL:
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_el));
  __pyx_r = __pyx_v_el;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._newAppendOnlyProxy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_el);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":326
 *     return el
 * 
 * cdef xmlNode* _roNodeOf(element) except NULL:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     if isinstance(element, _Element):
 */

static  xmlNode *__pyx_f_4lxml_5etree__roNodeOf(PyObject *__pyx_v_element) {
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_roNodeOf");
  __Pyx_INCREF(__pyx_v_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":328
 * cdef xmlNode* _roNodeOf(element) except NULL:
 *     cdef xmlNode* c_node
 *     if isinstance(element, _Element):             # <<<<<<<<<<<<<<
 *         c_node = (<_Element>element)._c_node
 *     elif isinstance(element, _ReadOnlyElementProxy):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":329
 *     cdef xmlNode* c_node
 *     if isinstance(element, _Element):
 *         c_node = (<_Element>element)._c_node             # <<<<<<<<<<<<<<
 *     elif isinstance(element, _ReadOnlyElementProxy):
 *         c_node = (<_ReadOnlyElementProxy>element)._c_node
 */
    __pyx_v_c_node = ((struct LxmlElement *)__pyx_v_element)->_c_node;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":330
 *     if isinstance(element, _Element):
 *         c_node = (<_Element>element)._c_node
 *     elif isinstance(element, _ReadOnlyElementProxy):             # <<<<<<<<<<<<<<
 *         c_node = (<_ReadOnlyElementProxy>element)._c_node
 *     else:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ReadOnlyElementProxy))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":331
 *         c_node = (<_Element>element)._c_node
 *     elif isinstance(element, _ReadOnlyElementProxy):
 *         c_node = (<_ReadOnlyElementProxy>element)._c_node             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError, u"invalid value to append()"
 */
    __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_element)->_c_node;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":333
 *         c_node = (<_ReadOnlyElementProxy>element)._c_node
 *     else:
 *         raise TypeError, u"invalid value to append()"             # <<<<<<<<<<<<<<
 * 
 *     if c_node is NULL:
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_101), 0);
    {__pyx_filename = __pyx_f[9]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":335
 *         raise TypeError, u"invalid value to append()"
 * 
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         raise TypeError, u"invalid element"
 *     return c_node
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":336
 * 
 *     if c_node is NULL:
 *         raise TypeError, u"invalid element"             # <<<<<<<<<<<<<<
 *     return c_node
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_102), 0);
    {__pyx_filename = __pyx_f[9]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":337
 *     if c_node is NULL:
 *         raise TypeError, u"invalid element"
 *     return c_node             # <<<<<<<<<<<<<<
 */
  __pyx_r = __pyx_v_c_node;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._roNodeOf");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":42
 *     hierarchies that implement a common namespace.
 *     """
 *     def __init__(self, *children, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
 *         u"""ElementBase(*children, attrib=None, nsmap=None, **_extra)
 *         """
 */

static int __pyx_pf_4lxml_5etree_11ElementBase___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11ElementBase___init__[] = "ElementBase(*children, attrib=None, nsmap=None, **_extra)\n        ";
static int __pyx_pf_4lxml_5etree_11ElementBase___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_attrib = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v_children = 0;
  PyObject *__pyx_v__extra = 0;
  int __pyx_v_is_html;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser;
  struct LxmlElement *__pyx_v_last_child;
  PyObject *__pyx_v__getattr;
  PyObject *__pyx_v_namespace;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_v_child;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("__init__");
  __pyx_v__extra = PyDict_New(); if (unlikely(!__pyx_v__extra)) return -1;
  __Pyx_GOTREF(__pyx_v__extra);
  if (PyTuple_GET_SIZE(__pyx_args) > 0) {
    __pyx_v_children = PyTuple_GetSlice(__pyx_args, 0, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_children);

    if (unlikely(!__pyx_v_children)) {
      __Pyx_DECREF(__pyx_v__extra);
      return -1;
    }
  } else {
    __pyx_v_children = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  0: break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_attrib = values[0];
    __pyx_v_nsmap = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 0) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_attrib = ((PyObject *)Py_None);
    __pyx_v_nsmap = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_children);
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_AddTraceback("lxml.etree.ElementBase.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);
  __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_last_child = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v__getattr = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_namespace = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_child = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":45
 *         u"""ElementBase(*children, attrib=None, nsmap=None, **_extra)
 *         """
 *         cdef bint is_html = 0             # <<<<<<<<<<<<<<
 *         cdef _BaseParser parser
 *         cdef _Element last_child
 */
  __pyx_v_is_html = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":49
 *         cdef _Element last_child
 *         # don't use normal attribute access as it might be overridden
 *         _getattr = object.__getattribute__             # <<<<<<<<<<<<<<
 *         try:
 *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_builtin_object, __pyx_n_s____getattribute__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v__getattr);
  __pyx_v__getattr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":50
 *         # don't use normal attribute access as it might be overridden
 *         _getattr = object.__getattribute__
 *         try:             # <<<<<<<<<<<<<<
 *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
 *         except AttributeError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":51
 *         _getattr = object.__getattribute__
 *         try:
 *             namespace = _utf8(_getattr(self, 'NAMESPACE'))             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             namespace = None
 */
      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__NAMESPACE));
      PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_n_s__NAMESPACE));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__NAMESPACE));
      __pyx_t_2 = PyObject_Call(__pyx_v__getattr, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_namespace);
      __pyx_v_namespace = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":52
 *         try:
 *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             namespace = None
 *         try:
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree.ElementBase.__init__");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":53
 *             namespace = _utf8(_getattr(self, 'NAMESPACE'))
 *         except AttributeError:
 *             namespace = None             # <<<<<<<<<<<<<<
 *         try:
 *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_namespace);
      __pyx_v_namespace = Py_None;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":54
 *         except AttributeError:
 *             namespace = None
 *         try:             # <<<<<<<<<<<<<<
 *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
 *             if ns is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":55
 *             namespace = None
 *         try:
 *             ns, tag = _getNsTag(_getattr(self, 'TAG'))             # <<<<<<<<<<<<<<
 *             if ns is not None:
 *                 namespace = ns
 */
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__TAG));
      PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__TAG));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__TAG));
      __pyx_t_2 = PyObject_Call(__pyx_v__getattr, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
        PyObject* tuple = __pyx_t_4;
        __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
        __pyx_t_1 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_ns);
        __pyx_v_ns = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_v_tag);
        __pyx_v_tag = __pyx_t_1;
        __pyx_t_1 = 0;
      } else {
        __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_ns);
        __pyx_v_ns = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_v_tag);
        __pyx_v_tag = __pyx_t_1;
        __pyx_t_1 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":56
 *         try:
 *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
 *             if ns is not None:             # <<<<<<<<<<<<<<
 *                 namespace = ns
 *         except AttributeError:
 */
      __pyx_t_6 = (__pyx_v_ns != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":57
 *             ns, tag = _getNsTag(_getattr(self, 'TAG'))
 *             if ns is not None:
 *                 namespace = ns             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
 */
        __Pyx_INCREF(__pyx_v_ns);
        __Pyx_DECREF(__pyx_v_namespace);
        __pyx_v_namespace = __pyx_v_ns;
        goto __pyx_L24;
      }
      __pyx_L24:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L23_try_end;
    __pyx_L16_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":58
 *             if ns is not None:
 *                 namespace = ns
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
 *             if b'.' in tag:
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree.ElementBase.__init__");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":59
 *                 namespace = ns
 *         except AttributeError:
 *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))             # <<<<<<<<<<<<<<
 *             if b'.' in tag:
 *                 tag = tag.split(b'.')[-1]
 */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      __Pyx_INCREF(((PyObject *)__pyx_n_s____class__));
      PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_n_s____class__));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s____class__));
      __pyx_t_7 = PyObject_Call(__pyx_v__getattr, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __Pyx_INCREF(((PyObject *)__pyx_n_s____name__));
      PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_n_s____name__));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s____name__));
      __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_Call(__pyx_v__getattr, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __pyx_f_4lxml_5etree__utf8(__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":60
 *         except AttributeError:
 *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
 *             if b'.' in tag:             # <<<<<<<<<<<<<<
 *                 tag = tag.split(b'.')[-1]
 *         try:
 */
      __pyx_t_6 = ((PySequence_Contains(__pyx_v_tag, ((PyObject *)__pyx_kp_b_2)))); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":61
 *             tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__'))
 *             if b'.' in tag:
 *                 tag = tag.split(b'.')[-1]             # <<<<<<<<<<<<<<
 *         try:
 *             parser = _getattr(self, 'PARSER')
 */
        __pyx_t_5 = PyObject_GetAttr(__pyx_v_tag, __pyx_n_s__split); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(((PyObject *)__pyx_kp_b_2));
        PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_b_2));
        __Pyx_GIVEREF(((PyObject *)__pyx_kp_b_2));
        __pyx_t_8 = PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_8, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_7) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_tag);
        __pyx_v_tag = __pyx_t_7;
        __pyx_t_7 = 0;
        goto __pyx_L27;
      }
      __pyx_L27:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L17_exception_handled;
    }
    __pyx_L18_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L17_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L23_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":62
 *             if b'.' in tag:
 *                 tag = tag.split(b'.')[-1]
 *         try:             # <<<<<<<<<<<<<<
 *             parser = _getattr(self, 'PARSER')
 *         except AttributeError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":63
 *                 tag = tag.split(b'.')[-1]
 *         try:
 *             parser = _getattr(self, 'PARSER')             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             parser = None
 */
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      __Pyx_INCREF(((PyObject *)__pyx_n_s__PARSER));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__PARSER));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__PARSER));
      __pyx_t_1 = PyObject_Call(__pyx_v__getattr, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_parser));
      __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
      __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L35_try_end;
    __pyx_L28_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":64
 *         try:
 *             parser = _getattr(self, 'PARSER')
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             parser = None
 *             for child in children:
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree.ElementBase.__init__");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L30_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":65
 *             parser = _getattr(self, 'PARSER')
 *         except AttributeError:
 *             parser = None             # <<<<<<<<<<<<<<
 *             for child in children:
 *                 if isinstance(child, _Element):
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(((PyObject *)__pyx_v_parser));
      __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":66
 *         except AttributeError:
 *             parser = None
 *             for child in children:             # <<<<<<<<<<<<<<
 *                 if isinstance(child, _Element):
 *                     parser = (<_Element>child)._doc._parser
 */
      if (PyList_CheckExact(__pyx_v_children) || PyTuple_CheckExact(__pyx_v_children)) {
        __pyx_t_9 = 0; __pyx_t_7 = __pyx_v_children; __Pyx_INCREF(__pyx_t_7);
      } else {
        __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_children); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L30_except_error;}
        __Pyx_GOTREF(__pyx_t_7);
      }
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++;
        } else {
          __pyx_t_8 = PyIter_Next(__pyx_t_7);
          if (!__pyx_t_8) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L30_except_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_8);
        }
        __Pyx_DECREF(__pyx_v_child);
        __pyx_v_child = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":67
 *             parser = None
 *             for child in children:
 *                 if isinstance(child, _Element):             # <<<<<<<<<<<<<<
 *                     parser = (<_Element>child)._doc._parser
 *                     break
 */
        __pyx_t_6 = PyObject_TypeCheck(__pyx_v_child, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
        if (__pyx_t_6) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":68
 *             for child in children:
 *                 if isinstance(child, _Element):
 *                     parser = (<_Element>child)._doc._parser             # <<<<<<<<<<<<<<
 *                     break
 *         if isinstance(parser, HTMLParser):
 */
          __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_child)->_doc->_parser));
          __Pyx_DECREF(((PyObject *)__pyx_v_parser));
          __pyx_v_parser = ((struct LxmlElement *)__pyx_v_child)->_doc->_parser;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":69
 *                 if isinstance(child, _Element):
 *                     parser = (<_Element>child)._doc._parser
 *                     break             # <<<<<<<<<<<<<<
 *         if isinstance(parser, HTMLParser):
 *             is_html = 1
 */
          goto __pyx_L39_break;
          goto __pyx_L40;
        }
        __pyx_L40:;
      }
      __pyx_L39_break:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L29_exception_handled;
    }
    __pyx_L30_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L29_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L35_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":70
 *                     parser = (<_Element>child)._doc._parser
 *                     break
 *         if isinstance(parser, HTMLParser):             # <<<<<<<<<<<<<<
 *             is_html = 1
 *         if namespace is None:
 */
  __pyx_t_6 = PyObject_TypeCheck(((PyObject *)__pyx_v_parser), ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_HTMLParser))); 
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":71
 *                     break
 *         if isinstance(parser, HTMLParser):
 *             is_html = 1             # <<<<<<<<<<<<<<
 *         if namespace is None:
 *             try:
 */
    __pyx_v_is_html = 1;
    goto __pyx_L41;
  }
  __pyx_L41:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":72
 *         if isinstance(parser, HTMLParser):
 *             is_html = 1
 *         if namespace is None:             # <<<<<<<<<<<<<<
 *             try:
 *                 is_html = _getattr(self, 'HTML')
 */
  __pyx_t_6 = (__pyx_v_namespace == Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":73
 *             is_html = 1
 *         if namespace is None:
 *             try:             # <<<<<<<<<<<<<<
 *                 is_html = _getattr(self, 'HTML')
 *             except AttributeError:
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":74
 *         if namespace is None:
 *             try:
 *                 is_html = _getattr(self, 'HTML')             # <<<<<<<<<<<<<<
 *             except AttributeError:
 *                 pass
 */
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L43_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_self);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
        __Pyx_GIVEREF(__pyx_v_self);
        __Pyx_INCREF(((PyObject *)__pyx_n_s__HTML));
        PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__HTML));
        __Pyx_GIVEREF(((PyObject *)__pyx_n_s__HTML));
        __pyx_t_2 = PyObject_Call(__pyx_v__getattr, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L43_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L43_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_v_is_html = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L50_try_end;
      __pyx_L43_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":75
 *             try:
 *                 is_html = _getattr(self, 'HTML')
 *             except AttributeError:             # <<<<<<<<<<<<<<
 *                 pass
 *         _initNewElement(self, is_html, tag, namespace, parser,
 */
      __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
      if (__pyx_t_3) {
        PyErr_Restore(0,0,0);
        goto __pyx_L44_exception_handled;
      }
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L44_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L50_try_end:;
    }
    goto __pyx_L42;
  }
  __pyx_L42:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":78
 *                 pass
 *         _initNewElement(self, is_html, tag, namespace, parser,
 *                         attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
 *         last_child = None
 *         for child in children:
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__initNewElement(((struct LxmlElement *)__pyx_v_self), __pyx_v_is_html, __pyx_v_tag, __pyx_v_namespace, __pyx_v_parser, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":79
 *         _initNewElement(self, is_html, tag, namespace, parser,
 *                         attrib, nsmap, _extra)
 *         last_child = None             # <<<<<<<<<<<<<<
 *         for child in children:
 *             if _isString(child):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(((PyObject *)__pyx_v_last_child));
  __pyx_v_last_child = ((struct LxmlElement *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":80
 *                         attrib, nsmap, _extra)
 *         last_child = None
 *         for child in children:             # <<<<<<<<<<<<<<
 *             if _isString(child):
 *                 if last_child is None:
 */
  if (PyList_CheckExact(__pyx_v_children) || PyTuple_CheckExact(__pyx_v_children)) {
    __pyx_t_9 = 0; __pyx_t_2 = __pyx_v_children; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_9 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_children); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++;
    } else {
      __pyx_t_4 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_4) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_v_child);
    __pyx_v_child = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":81
 *         last_child = None
 *         for child in children:
 *             if _isString(child):             # <<<<<<<<<<<<<<
 *                 if last_child is None:
 *                     if _hasText(self._c_node):
 */
    __pyx_t_6 = _isString(__pyx_v_child);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":82
 *         for child in children:
 *             if _isString(child):
 *                 if last_child is None:             # <<<<<<<<<<<<<<
 *                     if _hasText(self._c_node):
 *                         self.text += child
 */
      __pyx_t_6 = (((PyObject *)__pyx_v_last_child) == Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":83
 *             if _isString(child):
 *                 if last_child is None:
 *                     if _hasText(self._c_node):             # <<<<<<<<<<<<<<
 *                         self.text += child
 *                     else:
 */
        __pyx_t_3 = __pyx_f_4lxml_5etree__hasText(((struct LxmlElementBase *)__pyx_v_self)->__pyx_base._c_node);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":84
 *                 if last_child is None:
 *                     if _hasText(self._c_node):
 *                         self.text += child             # <<<<<<<<<<<<<<
 *                     else:
 *                         self.text = child
 */
          __pyx_t_4 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_v_child); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__text, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L55;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":86
 *                         self.text += child
 *                     else:
 *                         self.text = child             # <<<<<<<<<<<<<<
 *                 else:
 *                     if _hasTail(last_child._c_node):
 */
          if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__text, __pyx_v_child) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_L55:;
        goto __pyx_L54;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":88
 *                         self.text = child
 *                 else:
 *                     if _hasTail(last_child._c_node):             # <<<<<<<<<<<<<<
 *                         last_child.tail += child
 *                     else:
 */
        __pyx_t_3 = __pyx_f_4lxml_5etree__hasTail(__pyx_v_last_child->_c_node);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":89
 *                 else:
 *                     if _hasTail(last_child._c_node):
 *                         last_child.tail += child             # <<<<<<<<<<<<<<
 *                     else:
 *                         last_child.tail = child
 */
          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_last_child), __pyx_n_s__tail); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_v_child); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (PyObject_SetAttr(((PyObject *)__pyx_v_last_child), __pyx_n_s__tail, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L56;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":91
 *                         last_child.tail += child
 *                     else:
 *                         last_child.tail = child             # <<<<<<<<<<<<<<
 *             elif isinstance(child, _Element):
 *                 last_child = child
 */
          if (PyObject_SetAttr(((PyObject *)__pyx_v_last_child), __pyx_n_s__tail, __pyx_v_child) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_L56:;
      }
      __pyx_L54:;
      goto __pyx_L53;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":92
 *                     else:
 *                         last_child.tail = child
 *             elif isinstance(child, _Element):             # <<<<<<<<<<<<<<
 *                 last_child = child
 *                 _appendChild(self, last_child)
 */
    __pyx_t_6 = PyObject_TypeCheck(__pyx_v_child, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":93
 *                         last_child.tail = child
 *             elif isinstance(child, _Element):
 *                 last_child = child             # <<<<<<<<<<<<<<
 *                 _appendChild(self, last_child)
 *             elif isinstance(child, type) and issubclass(child, ElementBase):
 */
      if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_INCREF(__pyx_v_child);
      __Pyx_DECREF(((PyObject *)__pyx_v_last_child));
      __pyx_v_last_child = ((struct LxmlElement *)__pyx_v_child);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":94
 *             elif isinstance(child, _Element):
 *                 last_child = child
 *                 _appendChild(self, last_child)             # <<<<<<<<<<<<<<
 *             elif isinstance(child, type) and issubclass(child, ElementBase):
 *                 last_child = child()
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_last_child); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L53;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":95
 *                 last_child = child
 *                 _appendChild(self, last_child)
 *             elif isinstance(child, type) and issubclass(child, ElementBase):             # <<<<<<<<<<<<<<
 *                 last_child = child()
 *                 _appendChild(self, last_child)
 */
    __pyx_t_6 = PyObject_TypeCheck(__pyx_v_child, ((PyTypeObject *)((PyObject*)&PyType_Type))); 
    if (__pyx_t_6) {
      __pyx_t_10 = PyObject_IsSubclass(__pyx_v_child, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementBase))); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_11 = __pyx_t_10;
    } else {
      __pyx_t_11 = __pyx_t_6;
    }
    if (__pyx_t_11) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":96
 *                 _appendChild(self, last_child)
 *             elif isinstance(child, type) and issubclass(child, ElementBase):
 *                 last_child = child()             # <<<<<<<<<<<<<<
 *                 _appendChild(self, last_child)
 *             else:
 */
      __pyx_t_4 = PyObject_Call(__pyx_v_child, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_last_child));
      __pyx_v_last_child = ((struct LxmlElement *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":97
 *             elif isinstance(child, type) and issubclass(child, ElementBase):
 *                 last_child = child()
 *                 _appendChild(self, last_child)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise TypeError, "Invalid child type: %r" % type(child)
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_v_self), __pyx_v_last_child); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L53;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":99
 *                 _appendChild(self, last_child)
 *             else:
 *                 raise TypeError, "Invalid child type: %r" % type(child)             # <<<<<<<<<<<<<<
 * 
 * cdef class CommentBase(_Comment):
 */
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_103), ((PyObject *)Py_TYPE(__pyx_v_child))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_4, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L53:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("lxml.etree.ElementBase.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_children);
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF((PyObject *)__pyx_v_last_child);
  __Pyx_DECREF(__pyx_v__getattr);
  __Pyx_DECREF(__pyx_v_namespace);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_child);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":156
 *     """
 *     cdef _element_class_lookup_function _lookup_function
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = NULL # use default lookup
 * 
 */

static int __pyx_pf_4lxml_5etree_18ElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_18ElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":157
 *     cdef _element_class_lookup_function _lookup_function
 *     def __cinit__(self):
 *         self._lookup_function = NULL # use default lookup             # <<<<<<<<<<<<<<
 * 
 * cdef public class FallbackElementClassLookup(ElementClassLookup) \
 */
  ((struct LxmlElementClassLookup *)__pyx_v_self)->_lookup_function = NULL;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":168
 *     cdef readonly ElementClassLookup fallback
 *     cdef _element_class_lookup_function _fallback_function
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         # fall back to default lookup
 *         self._fallback_function = _lookupDefaultElementClass
 */

static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":170
 *     def __cinit__(self):
 *         # fall back to default lookup
 *         self._fallback_function = _lookupDefaultElementClass             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, ElementClassLookup fallback=None):
 */
  ((struct LxmlFallbackElementClassLookup *)__pyx_v_self)->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":172
 *         self._fallback_function = _lookupDefaultElementClass
 * 
 *     def __init__(self, ElementClassLookup fallback=None):             # <<<<<<<<<<<<<<
 *         if fallback is not None:
 *             self._setFallback(fallback)
 */

static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementClassLookup *__pyx_v_fallback = 0;
  int __pyx_r;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fallback,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fallback);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)values[0]);
  } else {
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_fallback = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_fallback);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fallback), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "fallback", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":173
 * 
 *     def __init__(self, ElementClassLookup fallback=None):
 *         if fallback is not None:             # <<<<<<<<<<<<<<
 *             self._setFallback(fallback)
 *         else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_fallback) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":174
 *     def __init__(self, ElementClassLookup fallback=None):
 *         if fallback is not None:
 *             self._setFallback(fallback)             # <<<<<<<<<<<<<<
 *         else:
 *             self._fallback_function = _lookupDefaultElementClass
 */
    ((struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *)((struct LxmlFallbackElementClassLookup *)__pyx_v_self)->__pyx_vtab)->_setFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_self), __pyx_v_fallback);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":176
 *             self._setFallback(fallback)
 *         else:
 *             self._fallback_function = _lookupDefaultElementClass             # <<<<<<<<<<<<<<
 * 
 *     cdef void _setFallback(self, ElementClassLookup lookup):
 */
    ((struct LxmlFallbackElementClassLookup *)__pyx_v_self)->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_fallback);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":178
 *             self._fallback_function = _lookupDefaultElementClass
 * 
 *     cdef void _setFallback(self, ElementClassLookup lookup):             # <<<<<<<<<<<<<<
 *         u"""Sets the fallback scheme for this lookup method.
 *         """
 */

static  void __pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback(struct LxmlFallbackElementClassLookup *__pyx_v_self, struct LxmlElementClassLookup *__pyx_v_lookup) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_setFallback");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_lookup);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":181
 *         u"""Sets the fallback scheme for this lookup method.
 *         """
 *         self.fallback = lookup             # <<<<<<<<<<<<<<
 *         self._fallback_function = lookup._lookup_function
 *         if self._fallback_function is NULL:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
  __Pyx_GOTREF(__pyx_v_self->fallback);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->fallback));
  __pyx_v_self->fallback = __pyx_v_lookup;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":182
 *         """
 *         self.fallback = lookup
 *         self._fallback_function = lookup._lookup_function             # <<<<<<<<<<<<<<
 *         if self._fallback_function is NULL:
 *             self._fallback_function = _lookupDefaultElementClass
 */
  __pyx_v_self->_fallback_function = __pyx_v_lookup->_lookup_function;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":183
 *         self.fallback = lookup
 *         self._fallback_function = lookup._lookup_function
 *         if self._fallback_function is NULL:             # <<<<<<<<<<<<<<
 *             self._fallback_function = _lookupDefaultElementClass
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_fallback_function == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":184
 *         self._fallback_function = lookup._lookup_function
 *         if self._fallback_function is NULL:
 *             self._fallback_function = _lookupDefaultElementClass             # <<<<<<<<<<<<<<
 * 
 *     def set_fallback(self, ElementClassLookup lookup not None):
 */
    __pyx_v_self->_fallback_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":186
 *             self._fallback_function = _lookupDefaultElementClass
 * 
 *     def set_fallback(self, ElementClassLookup lookup not None):             # <<<<<<<<<<<<<<
 *         u"""set_fallback(self, lookup)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_set_fallback(PyObject *__pyx_v_self, PyObject *__pyx_v_lookup); /*proto*/
static char __pyx_doc_4lxml_5etree_26FallbackElementClassLookup_set_fallback[] = "set_fallback(self, lookup)\n\n        Sets the fallback scheme for this lookup method.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_set_fallback(PyObject *__pyx_v_self, PyObject *__pyx_v_lookup) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("set_fallback");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 0, "lookup", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":191
 *         Sets the fallback scheme for this lookup method.
 *         """
 *         self._setFallback(lookup)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _callLookupFallback(FallbackElementClassLookup lookup,
 */
  ((struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *)((struct LxmlFallbackElementClassLookup *)__pyx_v_self)->__pyx_vtab)->_setFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_self), ((struct LxmlElementClassLookup *)__pyx_v_lookup));

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.FallbackElementClassLookup.set_fallback");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":193
 *         self._setFallback(lookup)
 * 
 * cdef inline object _callLookupFallback(FallbackElementClassLookup lookup,             # <<<<<<<<<<<<<<
 *                                        _Document doc, xmlNode* c_node):
 *     return lookup._fallback_function(lookup.fallback, doc, c_node)
 */

static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_lookup, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_callLookupFallback");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":195
 * cdef inline object _callLookupFallback(FallbackElementClassLookup lookup,
 *                                        _Document doc, xmlNode* c_node):
 *     return lookup._fallback_function(lookup.fallback, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_lookup->_fallback_function(((PyObject *)__pyx_v_lookup->fallback), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._callLookupFallback");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":213
 *     cdef readonly object pi_class
 *     cdef readonly object entity_class
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = _lookupDefaultElementClass
 * 
 */

static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":214
 *     cdef readonly object entity_class
 *     def __cinit__(self):
 *         self._lookup_function = _lookupDefaultElementClass             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, element=None, comment=None, pi=None, entity=None):
 */
  ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->__pyx_base._lookup_function = __pyx_f_4lxml_5etree__lookupDefaultElementClass;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":216
 *         self._lookup_function = _lookupDefaultElementClass
 * 
 *     def __init__(self, element=None, comment=None, pi=None, entity=None):             # <<<<<<<<<<<<<<
 *         if element is None:
 *             self.element_class = _Element
 */

static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element = 0;
  PyObject *__pyx_v_comment = 0;
  PyObject *__pyx_v_pi = 0;
  PyObject *__pyx_v_entity = 0;
  int __pyx_r;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__comment,&__pyx_n_s__pi,&__pyx_n_s__entity,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comment);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pi);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__entity);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element = values[0];
    __pyx_v_comment = values[1];
    __pyx_v_pi = values[2];
    __pyx_v_entity = values[3];
  } else {
    __pyx_v_element = ((PyObject *)Py_None);
    __pyx_v_comment = ((PyObject *)Py_None);
    __pyx_v_pi = ((PyObject *)Py_None);
    __pyx_v_entity = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: __pyx_v_entity = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: __pyx_v_pi = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_comment = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_element = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_element);
  __Pyx_INCREF(__pyx_v_comment);
  __Pyx_INCREF(__pyx_v_pi);
  __Pyx_INCREF(__pyx_v_entity);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":217
 * 
 *     def __init__(self, element=None, comment=None, pi=None, entity=None):
 *         if element is None:             # <<<<<<<<<<<<<<
 *             self.element_class = _Element
 *         elif issubclass(element, ElementBase):
 */
  __pyx_t_1 = (__pyx_v_element == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":218
 *     def __init__(self, element=None, comment=None, pi=None, entity=None):
 *         if element is None:
 *             self.element_class = _Element             # <<<<<<<<<<<<<<
 *         elif issubclass(element, ElementBase):
 *             self.element_class = element
 */
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element)));
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element));
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":219
 *         if element is None:
 *             self.element_class = _Element
 *         elif issubclass(element, ElementBase):             # <<<<<<<<<<<<<<
 *             self.element_class = element
 *         else:
 */
  __pyx_t_1 = PyObject_IsSubclass(__pyx_v_element, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementBase))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":220
 *             self.element_class = _Element
 *         elif issubclass(element, ElementBase):
 *             self.element_class = element             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, u"element class must be subclass of ElementBase"
 */
    __Pyx_INCREF(__pyx_v_element);
    __Pyx_GIVEREF(__pyx_v_element);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->element_class = __pyx_v_element;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":222
 *             self.element_class = element
 *         else:
 *             raise TypeError, u"element class must be subclass of ElementBase"             # <<<<<<<<<<<<<<
 * 
 *         if comment is None:
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_104), 0);
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":224
 *             raise TypeError, u"element class must be subclass of ElementBase"
 * 
 *         if comment is None:             # <<<<<<<<<<<<<<
 *             self.comment_class = _Comment
 *         elif issubclass(comment, CommentBase):
 */
  __pyx_t_1 = (__pyx_v_comment == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":225
 * 
 *         if comment is None:
 *             self.comment_class = _Comment             # <<<<<<<<<<<<<<
 *         elif issubclass(comment, CommentBase):
 *             self.comment_class = comment
 */
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Comment)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Comment)));
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Comment));
    goto __pyx_L7;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":226
 *         if comment is None:
 *             self.comment_class = _Comment
 *         elif issubclass(comment, CommentBase):             # <<<<<<<<<<<<<<
 *             self.comment_class = comment
 *         else:
 */
  __pyx_t_1 = PyObject_IsSubclass(__pyx_v_comment, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_CommentBase))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":227
 *             self.comment_class = _Comment
 *         elif issubclass(comment, CommentBase):
 *             self.comment_class = comment             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, u"comment class must be subclass of CommentBase"
 */
    __Pyx_INCREF(__pyx_v_comment);
    __Pyx_GIVEREF(__pyx_v_comment);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->comment_class = __pyx_v_comment;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":229
 *             self.comment_class = comment
 *         else:
 *             raise TypeError, u"comment class must be subclass of CommentBase"             # <<<<<<<<<<<<<<
 * 
 *         if entity is None:
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_105), 0);
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":231
 *             raise TypeError, u"comment class must be subclass of CommentBase"
 * 
 *         if entity is None:             # <<<<<<<<<<<<<<
 *             self.entity_class = _Entity
 *         elif issubclass(entity, EntityBase):
 */
  __pyx_t_1 = (__pyx_v_entity == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":232
 * 
 *         if entity is None:
 *             self.entity_class = _Entity             # <<<<<<<<<<<<<<
 *         elif issubclass(entity, EntityBase):
 *             self.entity_class = entity
 */
    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Entity)));
    __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Entity)));
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Entity));
    goto __pyx_L8;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":233
 *         if entity is None:
 *             self.entity_class = _Entity
 *         elif issubclass(entity, EntityBase):             # <<<<<<<<<<<<<<
 *             self.entity_class = entity
 *         else:
 */
  __pyx_t_1 = PyObject_IsSubclass(__pyx_v_entity, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_EntityBase))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":234
 *             self.entity_class = _Entity
 *         elif issubclass(entity, EntityBase):
 *             self.entity_class = entity             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, u"Entity class must be subclass of EntityBase"
 */
    __Pyx_INCREF(__pyx_v_entity);
    __Pyx_GIVEREF(__pyx_v_entity);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->entity_class = __pyx_v_entity;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":236
 *             self.entity_class = entity
 *         else:
 *             raise TypeError, u"Entity class must be subclass of EntityBase"             # <<<<<<<<<<<<<<
 * 
 *         if pi is None:
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_106), 0);
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":238
 *             raise TypeError, u"Entity class must be subclass of EntityBase"
 * 
 *         if pi is None:             # <<<<<<<<<<<<<<
 *             self.pi_class = None # special case, see below
 *         elif issubclass(pi, PIBase):
 */
  __pyx_t_1 = (__pyx_v_pi == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":239
 * 
 *         if pi is None:
 *             self.pi_class = None # special case, see below             # <<<<<<<<<<<<<<
 *         elif issubclass(pi, PIBase):
 *             self.pi_class = pi
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class = Py_None;
    goto __pyx_L9;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":240
 *         if pi is None:
 *             self.pi_class = None # special case, see below
 *         elif issubclass(pi, PIBase):             # <<<<<<<<<<<<<<
 *             self.pi_class = pi
 *         else:
 */
  __pyx_t_1 = PyObject_IsSubclass(__pyx_v_pi, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_PIBase))); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":241
 *             self.pi_class = None # special case, see below
 *         elif issubclass(pi, PIBase):
 *             self.pi_class = pi             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, u"PI class must be subclass of PIBase"
 */
    __Pyx_INCREF(__pyx_v_pi);
    __Pyx_GIVEREF(__pyx_v_pi);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class);
    ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_self)->pi_class = __pyx_v_pi;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":243
 *             self.pi_class = pi
 *         else:
 *             raise TypeError, u"PI class must be subclass of PIBase"             # <<<<<<<<<<<<<<
 * 
 * cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node):
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_107), 0);
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L9:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.ElementDefaultClassLookup.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_DECREF(__pyx_v_comment);
  __Pyx_DECREF(__pyx_v_pi);
  __Pyx_DECREF(__pyx_v_entity);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":245
 *             raise TypeError, u"PI class must be subclass of PIBase"
 * 
 * cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     u"Trivial class lookup function that always returns the default class."
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 */

static  PyObject *__pyx_f_4lxml_5etree__lookupDefaultElementClass(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v__doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_v_cls;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_lookupDefaultElementClass");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v__doc);
  __pyx_v_cls = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":247
 * cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node):
 *     u"Trivial class lookup function that always returns the default class."
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).element_class
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":248
 *     u"Trivial class lookup function that always returns the default class."
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if state is not None:             # <<<<<<<<<<<<<<
 *             return (<ElementDefaultClassLookup>state).element_class
 *         else:
 */
    __pyx_t_1 = (__pyx_v_state != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":249
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).element_class             # <<<<<<<<<<<<<<
 *         else:
 *             return _Element
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->element_class);
      __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->element_class;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":251
 *             return (<ElementDefaultClassLookup>state).element_class
 *         else:
 *             return _Element             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         if state is not None:
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element)));
      __pyx_r = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element));
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":252
 *         else:
 *             return _Element
 *     elif c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).comment_class
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_COMMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":253
 *             return _Element
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         if state is not None:             # <<<<<<<<<<<<<<
 *             return (<ElementDefaultClassLookup>state).comment_class
 *         else:
 */
    __pyx_t_1 = (__pyx_v_state != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":254
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).comment_class             # <<<<<<<<<<<<<<
 *         else:
 *             return _Comment
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->comment_class);
      __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->comment_class;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":256
 *             return (<ElementDefaultClassLookup>state).comment_class
 *         else:
 *             return _Comment             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 *         if state is not None:
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Comment)));
      __pyx_r = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Comment));
      goto __pyx_L0;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":257
 *         else:
 *             return _Comment
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).entity_class
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ENTITY_REF_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":258
 *             return _Comment
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 *         if state is not None:             # <<<<<<<<<<<<<<
 *             return (<ElementDefaultClassLookup>state).entity_class
 *         else:
 */
    __pyx_t_1 = (__pyx_v_state != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":259
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 *         if state is not None:
 *             return (<ElementDefaultClassLookup>state).entity_class             # <<<<<<<<<<<<<<
 *         else:
 *             return _Entity
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->entity_class);
      __pyx_r = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->entity_class;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":261
 *             return (<ElementDefaultClassLookup>state).entity_class
 *         else:
 *             return _Entity             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_PI_NODE:
 *         if state is not None:
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Entity)));
      __pyx_r = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Entity));
      goto __pyx_L0;
    }
    __pyx_L6:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":262
 *         else:
 *             return _Entity
 *     elif c_node.type == tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
 *         if state is not None:
 *             cls = (<ElementDefaultClassLookup>state).pi_class
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_PI_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":263
 *             return _Entity
 *     elif c_node.type == tree.XML_PI_NODE:
 *         if state is not None:             # <<<<<<<<<<<<<<
 *             cls = (<ElementDefaultClassLookup>state).pi_class
 *         if cls is None:
 */
    __pyx_t_1 = (__pyx_v_state != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":264
 *     elif c_node.type == tree.XML_PI_NODE:
 *         if state is not None:
 *             cls = (<ElementDefaultClassLookup>state).pi_class             # <<<<<<<<<<<<<<
 *         if cls is None:
 *             # special case XSLT-PI
 */
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->pi_class);
      __Pyx_DECREF(__pyx_v_cls);
      __pyx_v_cls = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)__pyx_v_state)->pi_class;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":265
 *         if state is not None:
 *             cls = (<ElementDefaultClassLookup>state).pi_class
 *         if cls is None:             # <<<<<<<<<<<<<<
 *             # special case XSLT-PI
 *             if c_node.name is not NULL and c_node.content is not NULL:
 */
    __pyx_t_1 = (__pyx_v_cls == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":267
 *         if cls is None:
 *             # special case XSLT-PI
 *             if c_node.name is not NULL and c_node.content is not NULL:             # <<<<<<<<<<<<<<
 *                 if cstd.strcmp(c_node.name, "xml-stylesheet") == 0:
 *                     if cstd.strstr(c_node.content, "text/xsl") is not NULL or \
 */
      __pyx_t_1 = (__pyx_v_c_node->name != NULL);
      if (__pyx_t_1) {
        __pyx_t_2 = (__pyx_v_c_node->content != NULL);
        __pyx_t_3 = __pyx_t_2;
      } else {
        __pyx_t_3 = __pyx_t_1;
      }
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":268
 *             # special case XSLT-PI
 *             if c_node.name is not NULL and c_node.content is not NULL:
 *                 if cstd.strcmp(c_node.name, "xml-stylesheet") == 0:             # <<<<<<<<<<<<<<
 *                     if cstd.strstr(c_node.content, "text/xsl") is not NULL or \
 *                            cstd.strstr(c_node.content, "text/xml") is not NULL:
 */
        __pyx_t_3 = (strcmp(__pyx_v_c_node->name, __pyx_k_108) == 0);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":269
 *             if c_node.name is not NULL and c_node.content is not NULL:
 *                 if cstd.strcmp(c_node.name, "xml-stylesheet") == 0:
 *                     if cstd.strstr(c_node.content, "text/xsl") is not NULL or \             # <<<<<<<<<<<<<<
 *                            cstd.strstr(c_node.content, "text/xml") is not NULL:
 *                         return _XSLTProcessingInstruction
 */
          __pyx_t_3 = (strstr(__pyx_v_c_node->content, __pyx_k_109) != NULL);
          if (!__pyx_t_3) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":270
 *                 if cstd.strcmp(c_node.name, "xml-stylesheet") == 0:
 *                     if cstd.strstr(c_node.content, "text/xsl") is not NULL or \
 *                            cstd.strstr(c_node.content, "text/xml") is not NULL:             # <<<<<<<<<<<<<<
 *                         return _XSLTProcessingInstruction
 *             return _ProcessingInstruction
 */
            __pyx_t_1 = (strstr(__pyx_v_c_node->content, __pyx_k_110) != NULL);
            __pyx_t_2 = __pyx_t_1;
          } else {
            __pyx_t_2 = __pyx_t_3;
          }
          if (__pyx_t_2) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":271
 *                     if cstd.strstr(c_node.content, "text/xsl") is not NULL or \
 *                            cstd.strstr(c_node.content, "text/xml") is not NULL:
 *                         return _XSLTProcessingInstruction             # <<<<<<<<<<<<<<
 *             return _ProcessingInstruction
 *         else:
 */
            __Pyx_XDECREF(__pyx_r);
            __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction)));
            __pyx_r = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTProcessingInstruction));
            goto __pyx_L0;
            goto __pyx_L11;
          }
          __pyx_L11:;
          goto __pyx_L10;
        }
        __pyx_L10:;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":272
 *                            cstd.strstr(c_node.content, "text/xml") is not NULL:
 *                         return _XSLTProcessingInstruction
 *             return _ProcessingInstruction             # <<<<<<<<<<<<<<
 *         else:
 *             return cls
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ProcessingInstruction)));
      __pyx_r = ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ProcessingInstruction));
      goto __pyx_L0;
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":274
 *             return _ProcessingInstruction
 *         else:
 *             return cls             # <<<<<<<<<<<<<<
 *     else:
 *         assert 0, u"Unknown node type: %s" % c_node.type
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_cls);
      __pyx_r = __pyx_v_cls;
      goto __pyx_L0;
    }
    __pyx_L8:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":276
 *             return cls
 *     else:
 *         assert 0, u"Unknown node type: %s" % c_node.type             # <<<<<<<<<<<<<<
 * 
 * 
 */
    #ifndef PYREX_WITHOUT_ASSERTIONS
    if (unlikely(!0)) {
      __pyx_t_4 = PyInt_FromLong(__pyx_v_c_node->type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_111), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      PyErr_SetObject(PyExc_AssertionError, __pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      {__pyx_filename = __pyx_f[2]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #endif
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._lookupDefaultElementClass");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_cls);
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v__doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":299
 *     cdef char* _c_ns
 *     cdef char* _c_name
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = _attribute_class_lookup
 * 
 */

static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":300
 *     cdef char* _c_name
 *     def __cinit__(self):
 *         self._lookup_function = _attribute_class_lookup             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, attribute_name, class_mapping,
 */
  ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__attribute_class_lookup;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":302
 *         self._lookup_function = _attribute_class_lookup
 * 
 *     def __init__(self, attribute_name, class_mapping,             # <<<<<<<<<<<<<<
 *                  ElementClassLookup fallback=None):
 *         self._pytag = _getNsTag(attribute_name)
 */

static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_attribute_name = 0;
  PyObject *__pyx_v_class_mapping = 0;
  struct LxmlElementClassLookup *__pyx_v_fallback = 0;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_name;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__attribute_name,&__pyx_n_s__class_mapping,&__pyx_n_s__fallback,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":303
 * 
 *     def __init__(self, attribute_name, class_mapping,
 *                  ElementClassLookup fallback=None):             # <<<<<<<<<<<<<<
 *         self._pytag = _getNsTag(attribute_name)
 *         ns, name = self._pytag
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attribute_name);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__class_mapping);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fallback);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_attribute_name = values[0];
    __pyx_v_class_mapping = values[1];
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)values[2]);
  } else {
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_fallback = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 2));
      case  2:
      __pyx_v_class_mapping = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_attribute_name = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.AttributeBasedElementClassLookup.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_attribute_name);
  __Pyx_INCREF(__pyx_v_class_mapping);
  __Pyx_INCREF((PyObject *)__pyx_v_fallback);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fallback), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "fallback", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":304
 *     def __init__(self, attribute_name, class_mapping,
 *                  ElementClassLookup fallback=None):
 *         self._pytag = _getNsTag(attribute_name)             # <<<<<<<<<<<<<<
 *         ns, name = self._pytag
 *         if ns is None:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_attribute_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag);
  ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":305
 *                  ElementClassLookup fallback=None):
 *         self._pytag = _getNsTag(attribute_name)
 *         ns, name = self._pytag             # <<<<<<<<<<<<<<
 *         if ns is None:
 *             self._c_ns = NULL
 */
  if (PyTuple_CheckExact(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag) && likely(PyTuple_GET_SIZE(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag) == 2)) {
    PyObject* tuple = ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag;
    __pyx_t_1 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_1;
    __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_3 = PyObject_GetIter(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_pytag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_3, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_3, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_EndUnpack(__pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_1;
    __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":306
 *         self._pytag = _getNsTag(attribute_name)
 *         ns, name = self._pytag
 *         if ns is None:             # <<<<<<<<<<<<<<
 *             self._c_ns = NULL
 *         else:
 */
  __pyx_t_4 = (__pyx_v_ns == Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":307
 *         ns, name = self._pytag
 *         if ns is None:
 *             self._c_ns = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             self._c_ns = _cstr(ns)
 */
    ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_c_ns = NULL;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":309
 *             self._c_ns = NULL
 *         else:
 *             self._c_ns = _cstr(ns)             # <<<<<<<<<<<<<<
 *         self._c_name = _cstr(name)
 *         self._class_mapping = dict(class_mapping)
 */
    ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_c_ns = PyString_AS_STRING(__pyx_v_ns);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":310
 *         else:
 *             self._c_ns = _cstr(ns)
 *         self._c_name = _cstr(name)             # <<<<<<<<<<<<<<
 *         self._class_mapping = dict(class_mapping)
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_c_name = PyString_AS_STRING(__pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":311
 *             self._c_ns = _cstr(ns)
 *         self._c_name = _cstr(name)
 *         self._class_mapping = dict(class_mapping)             # <<<<<<<<<<<<<<
 * 
 *         FallbackElementClassLookup.__init__(self, fallback)
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_class_mapping);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_class_mapping);
  __Pyx_GIVEREF(__pyx_v_class_mapping);
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_class_mapping);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_class_mapping);
  ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_self)->_class_mapping = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":313
 *         self._class_mapping = dict(class_mapping)
 * 
 *         FallbackElementClassLookup.__init__(self, fallback)             # <<<<<<<<<<<<<<
 * 
 * cdef object _attribute_class_lookup(state, _Document doc, xmlNode* c_node):
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_FallbackElementClassLookup)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(((PyObject *)__pyx_v_fallback));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_fallback));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_fallback));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.AttributeBasedElementClassLookup.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_attribute_name);
  __Pyx_DECREF(__pyx_v_class_mapping);
  __Pyx_DECREF((PyObject *)__pyx_v_fallback);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":315
 *         FallbackElementClassLookup.__init__(self, fallback)
 * 
 * cdef object _attribute_class_lookup(state, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef AttributeBasedElementClassLookup lookup
 *     cdef python.PyObject* dict_result
 */

static  PyObject *__pyx_f_4lxml_5etree__attribute_class_lookup(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *__pyx_v_lookup;
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_attribute_class_lookup");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":319
 *     cdef python.PyObject* dict_result
 * 
 *     lookup = <AttributeBasedElementClassLookup>state             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         value = _attributeValueFromNsName(
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_state)));
  __Pyx_DECREF(((PyObject *)__pyx_v_lookup));
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)__pyx_v_state);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":320
 * 
 *     lookup = <AttributeBasedElementClassLookup>state
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         value = _attributeValueFromNsName(
 *             c_node, lookup._c_ns, lookup._c_name)
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":322
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         value = _attributeValueFromNsName(
 *             c_node, lookup._c_ns, lookup._c_name)             # <<<<<<<<<<<<<<
 *         dict_result = python.PyDict_GetItem(lookup._class_mapping, value)
 *         if dict_result is not NULL:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__attributeValueFromNsName(__pyx_v_c_node, __pyx_v_lookup->_c_ns, __pyx_v_lookup->_c_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":323
 *         value = _attributeValueFromNsName(
 *             c_node, lookup._c_ns, lookup._c_name)
 *         dict_result = python.PyDict_GetItem(lookup._class_mapping, value)             # <<<<<<<<<<<<<<
 *         if dict_result is not NULL:
 *             return <object>dict_result
 */
    __pyx_v_dict_result = PyDict_GetItem(__pyx_v_lookup->_class_mapping, __pyx_v_value);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":324
 *             c_node, lookup._c_ns, lookup._c_name)
 *         dict_result = python.PyDict_GetItem(lookup._class_mapping, value)
 *         if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *             return <object>dict_result
 *     return _callLookupFallback(lookup, doc, c_node)
 */
    __pyx_t_1 = (__pyx_v_dict_result != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":325
 *         dict_result = python.PyDict_GetItem(lookup._class_mapping, value)
 *         if dict_result is not NULL:
 *             return <object>dict_result             # <<<<<<<<<<<<<<
 *     return _callLookupFallback(lookup, doc, c_node)
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
      __pyx_r = ((PyObject *)__pyx_v_dict_result);
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":326
 *         if dict_result is not NULL:
 *             return <object>dict_result
 *     return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._attribute_class_lookup");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":336
 *     Element class lookup based on the XML parser.
 *     """
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = _parser_class_lookup
 * 
 */

static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":337
 *     """
 *     def __cinit__(self):
 *         self._lookup_function = _parser_class_lookup             # <<<<<<<<<<<<<<
 * 
 * cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node):
 */
  ((struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *)__pyx_v_self)->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__parser_class_lookup;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":339
 *         self._lookup_function = _parser_class_lookup
 * 
 * cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     if doc._parser._class_lookup is not None:
 *         return doc._parser._class_lookup._lookup_function(
 */

static  PyObject *__pyx_f_4lxml_5etree__parser_class_lookup(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_parser_class_lookup");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":340
 * 
 * cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node):
 *     if doc._parser._class_lookup is not None:             # <<<<<<<<<<<<<<
 *         return doc._parser._class_lookup._lookup_function(
 *             doc._parser._class_lookup, doc, c_node)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc->_parser->_class_lookup) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":341
 * cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node):
 *     if doc._parser._class_lookup is not None:
 *         return doc._parser._class_lookup._lookup_function(             # <<<<<<<<<<<<<<
 *             doc._parser._class_lookup, doc, c_node)
 *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":342
 *     if doc._parser._class_lookup is not None:
 *         return doc._parser._class_lookup._lookup_function(
 *             doc._parser._class_lookup, doc, c_node)             # <<<<<<<<<<<<<<
 *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)
 * 
 */
    __pyx_t_2 = __pyx_v_doc->_parser->_class_lookup->_lookup_function(((PyObject *)__pyx_v_doc->_parser->_class_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":343
 *         return doc._parser._class_lookup._lookup_function(
 *             doc._parser._class_lookup, doc, c_node)
 *     return _callLookupFallback(<FallbackElementClassLookup>state, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_state), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._parser_class_lookup");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":365
 *     If you return None from this method, the fallback will be called.
 *     """
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = _custom_class_lookup
 * 
 */

static int __pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":366
 *     """
 *     def __cinit__(self):
 *         self._lookup_function = _custom_class_lookup             # <<<<<<<<<<<<<<
 * 
 *     def lookup(self, type, doc, namespace, name):
 */
  ((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)__pyx_v_self)->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__custom_class_lookup;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":368
 *         self._lookup_function = _custom_class_lookup
 * 
 *     def lookup(self, type, doc, namespace, name):             # <<<<<<<<<<<<<<
 *         u"lookup(self, type, doc, namespace, name)"
 *         return None
 */

static PyObject *__pyx_pf_4lxml_5etree_24CustomElementClassLookup_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_24CustomElementClassLookup_lookup[] = "lookup(self, type, doc, namespace, name)";
static PyObject *__pyx_pf_4lxml_5etree_24CustomElementClassLookup_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_type = 0;
  PyObject *__pyx_v_doc = 0;
  PyObject *__pyx_v_namespace = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__type,&__pyx_n_s__doc,&__pyx_n_s__namespace,&__pyx_n_s__name,0};
  __Pyx_RefNannySetupContext("lookup");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__type);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__doc);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespace);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 2); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, 3); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "lookup") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_type = values[0];
    __pyx_v_doc = values[1];
    __pyx_v_namespace = values[2];
    __pyx_v_name = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_type = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_doc = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_namespace = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_name = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lookup", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.CustomElementClassLookup.lookup");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":370
 *     def lookup(self, type, doc, namespace, name):
 *         u"lookup(self, type, doc, namespace, name)"
 *         return None             # <<<<<<<<<<<<<<
 * 
 * cdef object _custom_class_lookup(state, _Document doc, xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":372
 *         return None
 * 
 * cdef object _custom_class_lookup(state, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef CustomElementClassLookup lookup
 *     cdef char* c_str
 */

static  PyObject *__pyx_f_4lxml_5etree__custom_class_lookup(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *__pyx_v_lookup;
  char *__pyx_v_c_str;
  PyObject *__pyx_v_element_type;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_cls;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_custom_class_lookup");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element_type = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_cls = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":376
 *     cdef char* c_str
 * 
 *     lookup = <CustomElementClassLookup>state             # <<<<<<<<<<<<<<
 * 
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)__pyx_v_state)));
  __Pyx_DECREF(((PyObject *)__pyx_v_lookup));
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)__pyx_v_state);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":378
 *     lookup = <CustomElementClassLookup>state
 * 
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         element_type = u"element"
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":379
 * 
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         element_type = u"element"             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         element_type = u"comment"
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__element));
    __Pyx_DECREF(__pyx_v_element_type);
    __pyx_v_element_type = ((PyObject *)__pyx_n_u__element);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":380
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         element_type = u"element"
 *     elif c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
 *         element_type = u"comment"
 *     elif c_node.type == tree.XML_PI_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_COMMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":381
 *         element_type = u"element"
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         element_type = u"comment"             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_PI_NODE:
 *         element_type = u"PI"
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__comment));
    __Pyx_DECREF(__pyx_v_element_type);
    __pyx_v_element_type = ((PyObject *)__pyx_n_u__comment);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":382
 *     elif c_node.type == tree.XML_COMMENT_NODE:
 *         element_type = u"comment"
 *     elif c_node.type == tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
 *         element_type = u"PI"
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_PI_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":383
 *         element_type = u"comment"
 *     elif c_node.type == tree.XML_PI_NODE:
 *         element_type = u"PI"             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 *         element_type = u"entity"
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__PI));
    __Pyx_DECREF(__pyx_v_element_type);
    __pyx_v_element_type = ((PyObject *)__pyx_n_u__PI);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":384
 *     elif c_node.type == tree.XML_PI_NODE:
 *         element_type = u"PI"
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
 *         element_type = u"entity"
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ENTITY_REF_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":385
 *         element_type = u"PI"
 *     elif c_node.type == tree.XML_ENTITY_REF_NODE:
 *         element_type = u"entity"             # <<<<<<<<<<<<<<
 *     else:
 *         element_type = u"element"
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__entity));
    __Pyx_DECREF(__pyx_v_element_type);
    __pyx_v_element_type = ((PyObject *)__pyx_n_u__entity);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":387
 *         element_type = u"entity"
 *     else:
 *         element_type = u"element"             # <<<<<<<<<<<<<<
 *     if c_node.name is NULL:
 *         name = None
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_u__element));
    __Pyx_DECREF(__pyx_v_element_type);
    __pyx_v_element_type = ((PyObject *)__pyx_n_u__element);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":388
 *     else:
 *         element_type = u"element"
 *     if c_node.name is NULL:             # <<<<<<<<<<<<<<
 *         name = None
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_node->name == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":389
 *         element_type = u"element"
 *     if c_node.name is NULL:
 *         name = None             # <<<<<<<<<<<<<<
 *     else:
 *         name = funicode(c_node.name)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = Py_None;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":391
 *         name = None
 *     else:
 *         name = funicode(c_node.name)             # <<<<<<<<<<<<<<
 *     c_str = tree._getNs(c_node)
 *     if c_str is NULL:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":392
 *     else:
 *         name = funicode(c_node.name)
 *     c_str = tree._getNs(c_node)             # <<<<<<<<<<<<<<
 *     if c_str is NULL:
 *         ns = None
 */
  __pyx_v_c_str = _getNs(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":393
 *         name = funicode(c_node.name)
 *     c_str = tree._getNs(c_node)
 *     if c_str is NULL:             # <<<<<<<<<<<<<<
 *         ns = None
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_str == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":394
 *     c_str = tree._getNs(c_node)
 *     if c_str is NULL:
 *         ns = None             # <<<<<<<<<<<<<<
 *     else:
 *         ns = funicode(c_str)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = Py_None;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":396
 *         ns = None
 *     else:
 *         ns = funicode(c_str)             # <<<<<<<<<<<<<<
 * 
 *     cls = lookup.lookup(element_type, doc, ns, name)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_str); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns);
    __pyx_v_ns = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":398
 *         ns = funicode(c_str)
 * 
 *     cls = lookup.lookup(element_type, doc, ns, name)             # <<<<<<<<<<<<<<
 *     if cls is not None:
 *         return cls
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_lookup), __pyx_n_s__lookup); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_element_type);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_element_type);
  __Pyx_GIVEREF(__pyx_v_element_type);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __Pyx_INCREF(__pyx_v_ns);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_ns);
  __Pyx_GIVEREF(__pyx_v_ns);
  __Pyx_INCREF(__pyx_v_name);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_v_cls);
  __pyx_v_cls = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":399
 * 
 *     cls = lookup.lookup(element_type, doc, ns, name)
 *     if cls is not None:             # <<<<<<<<<<<<<<
 *         return cls
 *     return _callLookupFallback(lookup, doc, c_node)
 */
  __pyx_t_1 = (__pyx_v_cls != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":400
 *     cls = lookup.lookup(element_type, doc, ns, name)
 *     if cls is not None:
 *         return cls             # <<<<<<<<<<<<<<
 *     return _callLookupFallback(lookup, doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_cls);
    __pyx_r = __pyx_v_cls;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":401
 *     if cls is not None:
 *         return cls
 *     return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._custom_class_lookup");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_DECREF(__pyx_v_element_type);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_cls);
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":450
 *     See http://codespeak.net/lxml/element_classes.html
 *     """
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._lookup_function = _python_class_lookup
 * 
 */

static int __pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":451
 *     """
 *     def __cinit__(self):
 *         self._lookup_function = _python_class_lookup             # <<<<<<<<<<<<<<
 * 
 *     def lookup(self, doc, element):
 */
  ((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)__pyx_v_self)->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__python_class_lookup;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":453
 *         self._lookup_function = _python_class_lookup
 * 
 *     def lookup(self, doc, element):             # <<<<<<<<<<<<<<
 *         u"""lookup(self, doc, element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_24PythonElementClassLookup_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_24PythonElementClassLookup_lookup[] = "lookup(self, doc, element)\n\n        Override this method to implement your own lookup scheme.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_24PythonElementClassLookup_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_doc = 0;
  PyObject *__pyx_v_element = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__doc,&__pyx_n_s__element,0};
  __Pyx_RefNannySetupContext("lookup");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__doc);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("lookup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "lookup") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_doc = values[0];
    __pyx_v_element = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_doc = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_element = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lookup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.PythonElementClassLookup.lookup");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":458
 *         Override this method to implement your own lookup scheme.
 *         """
 *         return None             # <<<<<<<<<<<<<<
 * 
 * cdef object _python_class_lookup(state, _Document doc, tree.xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":460
 *         return None
 * 
 * cdef object _python_class_lookup(state, _Document doc, tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef PythonElementClassLookup lookup
 *     cdef _ReadOnlyElementProxy proxy
 */

static  PyObject *__pyx_f_4lxml_5etree__python_class_lookup(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *__pyx_v_lookup;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_proxy;
  PyObject *__pyx_v_cls;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_python_class_lookup");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_cls = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":463
 *     cdef PythonElementClassLookup lookup
 *     cdef _ReadOnlyElementProxy proxy
 *     lookup = <PythonElementClassLookup>state             # <<<<<<<<<<<<<<
 * 
 *     proxy = _newReadOnlyProxy(None, c_node)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)__pyx_v_state)));
  __Pyx_DECREF(((PyObject *)__pyx_v_lookup));
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)__pyx_v_state);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":465
 *     lookup = <PythonElementClassLookup>state
 * 
 *     proxy = _newReadOnlyProxy(None, c_node)             # <<<<<<<<<<<<<<
 *     cls = lookup.lookup(doc, proxy)
 *     _freeReadOnlyProxies(proxy)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None), __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_proxy));
  __pyx_v_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":466
 * 
 *     proxy = _newReadOnlyProxy(None, c_node)
 *     cls = lookup.lookup(doc, proxy)             # <<<<<<<<<<<<<<
 *     _freeReadOnlyProxies(proxy)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_lookup), __pyx_n_s__lookup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __Pyx_INCREF(((PyObject *)__pyx_v_proxy));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_proxy));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_proxy));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_cls);
  __pyx_v_cls = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":467
 *     proxy = _newReadOnlyProxy(None, c_node)
 *     cls = lookup.lookup(doc, proxy)
 *     _freeReadOnlyProxies(proxy)             # <<<<<<<<<<<<<<
 * 
 *     if cls is not None:
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__freeReadOnlyProxies(__pyx_v_proxy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":469
 *     _freeReadOnlyProxies(proxy)
 * 
 *     if cls is not None:             # <<<<<<<<<<<<<<
 *         return cls
 *     return _callLookupFallback(lookup, doc, c_node)
 */
  __pyx_t_4 = (__pyx_v_cls != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":470
 * 
 *     if cls is not None:
 *         return cls             # <<<<<<<<<<<<<<
 *     return _callLookupFallback(lookup, doc, c_node)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_cls);
    __pyx_r = __pyx_v_cls;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":471
 *     if cls is not None:
 *         return cls
 *     return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._python_class_lookup");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_DECREF((PyObject *)__pyx_v_proxy);
  __Pyx_DECREF(__pyx_v_cls);
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":479
 * cdef object ELEMENT_CLASS_LOOKUP_STATE
 * 
 * cdef void _setElementClassLookupFunction(             # <<<<<<<<<<<<<<
 *     _element_class_lookup_function function, object state):
 *     global LOOKUP_ELEMENT_CLASS, ELEMENT_CLASS_LOOKUP_STATE
 */

static  void __pyx_f_4lxml_5etree__setElementClassLookupFunction(_element_class_lookup_function __pyx_v_function, PyObject *__pyx_v_state) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_setElementClassLookupFunction");
  __Pyx_INCREF(__pyx_v_state);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":482
 *     _element_class_lookup_function function, object state):
 *     global LOOKUP_ELEMENT_CLASS, ELEMENT_CLASS_LOOKUP_STATE
 *     if function is NULL:             # <<<<<<<<<<<<<<
 *         state    = DEFAULT_ELEMENT_CLASS_LOOKUP
 *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function
 */
  __pyx_t_1 = (__pyx_v_function == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":483
 *     global LOOKUP_ELEMENT_CLASS, ELEMENT_CLASS_LOOKUP_STATE
 *     if function is NULL:
 *         state    = DEFAULT_ELEMENT_CLASS_LOOKUP             # <<<<<<<<<<<<<<
 *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function
 * 
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
    __Pyx_DECREF(__pyx_v_state);
    __pyx_v_state = ((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":484
 *     if function is NULL:
 *         state    = DEFAULT_ELEMENT_CLASS_LOOKUP
 *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function             # <<<<<<<<<<<<<<
 * 
 *     ELEMENT_CLASS_LOOKUP_STATE = state
 */
    __pyx_v_function = __pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP->__pyx_base.__pyx_base._lookup_function;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":486
 *         function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function
 * 
 *     ELEMENT_CLASS_LOOKUP_STATE = state             # <<<<<<<<<<<<<<
 *     LOOKUP_ELEMENT_CLASS = function
 * 
 */
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE);
  __Pyx_GIVEREF(__pyx_v_state);
  __pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE = __pyx_v_state;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":487
 * 
 *     ELEMENT_CLASS_LOOKUP_STATE = state
 *     LOOKUP_ELEMENT_CLASS = function             # <<<<<<<<<<<<<<
 * 
 * def set_element_class_lookup(ElementClassLookup lookup = None):
 */
  __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS = __pyx_v_function;

  __Pyx_DECREF(__pyx_v_state);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":489
 *     LOOKUP_ELEMENT_CLASS = function
 * 
 * def set_element_class_lookup(ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
 *     u"""set_element_class_lookup(lookup = None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_set_element_class_lookup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_set_element_class_lookup[] = "set_element_class_lookup(lookup = None)\n\n    Set the global default element class lookup method.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_set_element_class_lookup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementClassLookup *__pyx_v_lookup = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lookup,0};
  __Pyx_RefNannySetupContext("set_element_class_lookup");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lookup);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set_element_class_lookup") < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)values[0]);
  } else {
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_lookup = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.set_element_class_lookup");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_lookup);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":494
 *     Set the global default element class lookup method.
 *     """
 *     if lookup is None or lookup._lookup_function is NULL:             # <<<<<<<<<<<<<<
 *         _setElementClassLookupFunction(NULL, None)
 *     else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_lookup) == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_lookup->_lookup_function == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":495
 *     """
 *     if lookup is None or lookup._lookup_function is NULL:
 *         _setElementClassLookupFunction(NULL, None)             # <<<<<<<<<<<<<<
 *     else:
 *         _setElementClassLookupFunction(lookup._lookup_function, lookup)
 */
    __pyx_f_4lxml_5etree__setElementClassLookupFunction(NULL, Py_None);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":497
 *         _setElementClassLookupFunction(NULL, None)
 *     else:
 *         _setElementClassLookupFunction(lookup._lookup_function, lookup)             # <<<<<<<<<<<<<<
 * 
 * # default setup: parser delegation
 */
    __pyx_f_4lxml_5etree__setElementClassLookupFunction(__pyx_v_lookup->_lookup_function, ((PyObject *)__pyx_v_lookup));
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.set_element_class_lookup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":20
 *     cdef dict _entries
 *     cdef char* _c_ns_uri_utf
 *     def __init__(self, ns_uri):             # <<<<<<<<<<<<<<
 *         self._ns_uri = ns_uri
 *         if ns_uri is None:
 */

static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ns_uri = 0;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ns_uri,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ns_uri);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_ns_uri = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_ns_uri = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ns_uri);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":21
 *     cdef char* _c_ns_uri_utf
 *     def __init__(self, ns_uri):
 *         self._ns_uri = ns_uri             # <<<<<<<<<<<<<<
 *         if ns_uri is None:
 *             self._ns_uri_utf = None
 */
  __Pyx_INCREF(__pyx_v_ns_uri);
  __Pyx_GIVEREF(__pyx_v_ns_uri);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri);
  ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri = __pyx_v_ns_uri;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":22
 *     def __init__(self, ns_uri):
 *         self._ns_uri = ns_uri
 *         if ns_uri is None:             # <<<<<<<<<<<<<<
 *             self._ns_uri_utf = None
 *             self._c_ns_uri_utf = NULL
 */
  __pyx_t_1 = (__pyx_v_ns_uri == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":23
 *         self._ns_uri = ns_uri
 *         if ns_uri is None:
 *             self._ns_uri_utf = None             # <<<<<<<<<<<<<<
 *             self._c_ns_uri_utf = NULL
 *         else:
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf);
    ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf = Py_None;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":24
 *         if ns_uri is None:
 *             self._ns_uri_utf = None
 *             self._c_ns_uri_utf = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             self._ns_uri_utf = _utf8(ns_uri)
 */
    ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_c_ns_uri_utf = NULL;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":26
 *             self._c_ns_uri_utf = NULL
 *         else:
 *             self._ns_uri_utf = _utf8(ns_uri)             # <<<<<<<<<<<<<<
 *             self._c_ns_uri_utf = _cstr(self._ns_uri_utf)
 *         self._entries = {}
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf);
    ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":27
 *         else:
 *             self._ns_uri_utf = _utf8(ns_uri)
 *             self._c_ns_uri_utf = _cstr(self._ns_uri_utf)             # <<<<<<<<<<<<<<
 *         self._entries = {}
 * 
 */
    ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_c_ns_uri_utf = PyString_AS_STRING(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_ns_uri_utf);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":28
 *             self._ns_uri_utf = _utf8(ns_uri)
 *             self._c_ns_uri_utf = _cstr(self._ns_uri_utf)
 *         self._entries = {}             # <<<<<<<<<<<<<<
 * 
 *     def update(self, class_dict_iterable):
 */
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries));
  ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries = __pyx_t_2;
  __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":30
 *         self._entries = {}
 * 
 *     def update(self, class_dict_iterable):             # <<<<<<<<<<<<<<
 *         u"""update(self, class_dict_iterable)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_update(PyObject *__pyx_v_self, PyObject *__pyx_v_class_dict_iterable); /*proto*/
static char __pyx_doc_4lxml_5etree_18_NamespaceRegistry_update[] = "update(self, class_dict_iterable)\n\n        Forgivingly update the registry.\n\n        If registered values do not match the required type for this\n        registry, or if their name starts with '_', they will be\n        silently discarded. This allows registrations at the module or\n        class level using vars(), globals() etc.";
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_update(PyObject *__pyx_v_self, PyObject *__pyx_v_class_dict_iterable) {
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_item;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("update");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_class_dict_iterable);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":39
 *         silently discarded. This allows registrations at the module or
 *         class level using vars(), globals() etc."""
 *         if hasattr(class_dict_iterable, u'items'):             # <<<<<<<<<<<<<<
 *             class_dict_iterable = class_dict_iterable.items()
 *         for name, item in class_dict_iterable:
 */
  __pyx_t_1 = PyObject_HasAttr(__pyx_v_class_dict_iterable, ((PyObject *)__pyx_n_u__items)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":40
 *         class level using vars(), globals() etc."""
 *         if hasattr(class_dict_iterable, u'items'):
 *             class_dict_iterable = class_dict_iterable.items()             # <<<<<<<<<<<<<<
 *         for name, item in class_dict_iterable:
 *             if (name is None or name[:1] != u'_') and callable(item):
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_class_dict_iterable, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_class_dict_iterable);
    __pyx_v_class_dict_iterable = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":41
 *         if hasattr(class_dict_iterable, u'items'):
 *             class_dict_iterable = class_dict_iterable.items()
 *         for name, item in class_dict_iterable:             # <<<<<<<<<<<<<<
 *             if (name is None or name[:1] != u'_') and callable(item):
 *                 self[name] = item
 */
  if (PyList_CheckExact(__pyx_v_class_dict_iterable) || PyTuple_CheckExact(__pyx_v_class_dict_iterable)) {
    __pyx_t_4 = 0; __pyx_t_3 = __pyx_v_class_dict_iterable; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_class_dict_iterable); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++;
    } else {
      __pyx_t_2 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_2) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
      PyObject* tuple = __pyx_t_2;
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_item);
      __pyx_v_item = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_item);
      __pyx_v_item = __pyx_t_6;
      __pyx_t_6 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":42
 *             class_dict_iterable = class_dict_iterable.items()
 *         for name, item in class_dict_iterable:
 *             if (name is None or name[:1] != u'_') and callable(item):             # <<<<<<<<<<<<<<
 *                 self[name] = item
 * 
 */
    __pyx_t_1 = (__pyx_v_name == Py_None);
    if (!__pyx_t_1) {
      __pyx_t_2 = PySequence_GetSlice(__pyx_v_name, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_n_u___), Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_9 = __pyx_t_8;
    } else {
      __pyx_t_9 = __pyx_t_1;
    }
    if (__pyx_t_9) {
      __pyx_t_10 = PyCallable_Check(__pyx_v_item);
      __pyx_t_1 = __pyx_t_10;
    } else {
      __pyx_t_1 = __pyx_t_9;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":43
 *         for name, item in class_dict_iterable:
 *             if (name is None or name[:1] != u'_') and callable(item):
 *                 self[name] = item             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, name):
 */
      if (PyObject_SetItem(__pyx_v_self, __pyx_v_name, __pyx_v_item) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.update");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_class_dict_iterable);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":45
 *                 self[name] = item
 * 
 *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
 *         if name is not None:
 *             name = _utf8(name)
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":46
 * 
 *     def __getitem__(self, name):
 *         if name is not None:             # <<<<<<<<<<<<<<
 *             name = _utf8(name)
 *         return self._get(name)
 */
  __pyx_t_1 = (__pyx_v_name != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":47
 *     def __getitem__(self, name):
 *         if name is not None:
 *             name = _utf8(name)             # <<<<<<<<<<<<<<
 *         return self._get(name)
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":48
 *         if name is not None:
 *             name = _utf8(name)
 *         return self._get(name)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->__pyx_vtab)->_get(((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":50
 *         return self._get(name)
 * 
 *     def __delitem__(self, name):             # <<<<<<<<<<<<<<
 *         if name is not None:
 *             name = _utf8(name)
 */

static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static int __pyx_pf_4lxml_5etree_18_NamespaceRegistry___delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__delitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":51
 * 
 *     def __delitem__(self, name):
 *         if name is not None:             # <<<<<<<<<<<<<<
 *             name = _utf8(name)
 *         del self._entries[name]
 */
  __pyx_t_1 = (__pyx_v_name != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":52
 *     def __delitem__(self, name):
 *         if name is not None:
 *             name = _utf8(name)             # <<<<<<<<<<<<<<
 *         del self._entries[name]
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":53
 *         if name is not None:
 *             name = _utf8(name)
 *         del self._entries[name]             # <<<<<<<<<<<<<<
 * 
 *     cdef object _get(self, object name):
 */
  if (PyDict_DelItem(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries), __pyx_v_name) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__delitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":55
 *         del self._entries[name]
 * 
 *     cdef object _get(self, object name):             # <<<<<<<<<<<<<<
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 */

static  PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__get(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_get");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":57
 *     cdef object _get(self, object name):
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)             # <<<<<<<<<<<<<<
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."
 */
  __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_entries), __pyx_v_name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":58
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 *         if dict_result is NULL:             # <<<<<<<<<<<<<<
 *             raise KeyError, u"Name not registered."
 *         return <object>dict_result
 */
  __pyx_t_1 = (__pyx_v_dict_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":59
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."             # <<<<<<<<<<<<<<
 *         return <object>dict_result
 * 
 */
    __Pyx_Raise(__pyx_builtin_KeyError, ((PyObject *)__pyx_kp_u_112), 0);
    {__pyx_filename = __pyx_f[10]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":60
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."
 *         return <object>dict_result             # <<<<<<<<<<<<<<
 * 
 *     cdef object _getForString(self, char* name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
  __pyx_r = ((PyObject *)__pyx_v_dict_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry._get");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":62
 *         return <object>dict_result
 * 
 *     cdef object _getForString(self, char* name):             # <<<<<<<<<<<<<<
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 */

static  PyObject *__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_self, char *__pyx_v_name) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_getForString");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":64
 *     cdef object _getForString(self, char* name):
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)             # <<<<<<<<<<<<<<
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_entries), ((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":65
 *         cdef python.PyObject* dict_result
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 *         if dict_result is NULL:             # <<<<<<<<<<<<<<
 *             raise KeyError, u"Name not registered."
 *         return <object>dict_result
 */
  __pyx_t_2 = (__pyx_v_dict_result == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":66
 *         dict_result = python.PyDict_GetItem(self._entries, name)
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."             # <<<<<<<<<<<<<<
 *         return <object>dict_result
 * 
 */
    __Pyx_Raise(__pyx_builtin_KeyError, ((PyObject *)__pyx_kp_u_112), 0);
    {__pyx_filename = __pyx_f[10]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":67
 *         if dict_result is NULL:
 *             raise KeyError, u"Name not registered."
 *         return <object>dict_result             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
  __pyx_r = ((PyObject *)__pyx_v_dict_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry._getForString");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":69
 *         return <object>dict_result
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return iter(self._entries)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":70
 * 
 *     def __iter__(self):
 *         return iter(self._entries)             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetIter(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":72
 *         return iter(self._entries)
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         return list(self._entries.items())
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("items");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":73
 * 
 *     def items(self):
 *         return list(self._entries.items())             # <<<<<<<<<<<<<<
 * 
 *     def iteritems(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_Items(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)&PyList_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":75
 *         return list(self._entries.items())
 * 
 *     def iteritems(self):             # <<<<<<<<<<<<<<
 *         return iter(self._entries.items())
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_iteritems(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_iteritems(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("iteritems");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":76
 * 
 *     def iteritems(self):
 *         return iter(self._entries.items())             # <<<<<<<<<<<<<<
 * 
 *     def clear(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_Items(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._NamespaceRegistry.iteritems");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":78
 *         return iter(self._entries.items())
 * 
 *     def clear(self):             # <<<<<<<<<<<<<<
 *         python.PyDict_Clear(self._entries)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_clear(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_18_NamespaceRegistry_clear(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("clear");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":79
 * 
 *     def clear(self):
 *         python.PyDict_Clear(self._entries)             # <<<<<<<<<<<<<<
 * 
 * cdef class _ClassNamespaceRegistry(_NamespaceRegistry):
 */
  PyDict_Clear(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_self)->_entries));

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":83
 * cdef class _ClassNamespaceRegistry(_NamespaceRegistry):
 *     u"Dictionary-like registry for namespace implementation classes"
 *     def __setitem__(self, name, item):             # <<<<<<<<<<<<<<
 *         if not python.PyType_Check(item) or not issubclass(item, ElementBase):
 *             raise NamespaceRegistryError, \
 */

static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item); /*proto*/
static int __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__setitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_INCREF(__pyx_v_item);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":84
 *     u"Dictionary-like registry for namespace implementation classes"
 *     def __setitem__(self, name, item):
 *         if not python.PyType_Check(item) or not issubclass(item, ElementBase):             # <<<<<<<<<<<<<<
 *             raise NamespaceRegistryError, \
 *                 u"Registered element classes must be subtypes of ElementBase"
 */
  __pyx_t_1 = (!PyType_Check(__pyx_v_item));
  if (!__pyx_t_1) {
    __pyx_t_2 = PyObject_IsSubclass(__pyx_v_item, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ElementBase))); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = (!__pyx_t_2);
    __pyx_t_2 = __pyx_t_3;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":85
 *     def __setitem__(self, name, item):
 *         if not python.PyType_Check(item) or not issubclass(item, ElementBase):
 *             raise NamespaceRegistryError, \             # <<<<<<<<<<<<<<
 *                 u"Registered element classes must be subtypes of ElementBase"
 *         if name is not None:
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s_113); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, ((PyObject *)__pyx_kp_u_114), 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[10]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":87
 *             raise NamespaceRegistryError, \
 *                 u"Registered element classes must be subtypes of ElementBase"
 *         if name is not None:             # <<<<<<<<<<<<<<
 *             name = _utf8(name)
 *         self._entries[name] = item
 */
  __pyx_t_2 = (__pyx_v_name != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":88
 *                 u"Registered element classes must be subtypes of ElementBase"
 *         if name is not None:
 *             name = _utf8(name)             # <<<<<<<<<<<<<<
 *         self._entries[name] = item
 * 
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_name);
    __pyx_v_name = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":89
 *         if name is not None:
 *             name = _utf8(name)
 *         self._entries[name] = item             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  if (PyDict_SetItem(((PyObject *)((struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *)__pyx_v_self)->__pyx_base._entries), __pyx_v_name, __pyx_v_item) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ClassNamespaceRegistry.__setitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":91
 *         self._entries[name] = item
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"Namespace(%r)" % self._ns_uri
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":92
 * 
 *     def __repr__(self):
 *         return u"Namespace(%r)" % self._ns_uri             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_115), ((struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *)__pyx_v_self)->__pyx_base._ns_uri); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ClassNamespaceRegistry.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":102
 *     """
 *     cdef object _namespace_registries
 *     def __init__(self, ElementClassLookup fallback=None):             # <<<<<<<<<<<<<<
 *         self._namespace_registries = {}
 *         FallbackElementClassLookup.__init__(self, fallback)
 */

static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementClassLookup *__pyx_v_fallback = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__fallback,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fallback);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)values[0]);
  } else {
    __pyx_v_fallback = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_fallback = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fallback), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "fallback", 0))) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":103
 *     cdef object _namespace_registries
 *     def __init__(self, ElementClassLookup fallback=None):
 *         self._namespace_registries = {}             # <<<<<<<<<<<<<<
 *         FallbackElementClassLookup.__init__(self, fallback)
 *         self._lookup_function = _find_nselement_class
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->_namespace_registries);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->_namespace_registries);
  ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->_namespace_registries = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":104
 *     def __init__(self, ElementClassLookup fallback=None):
 *         self._namespace_registries = {}
 *         FallbackElementClassLookup.__init__(self, fallback)             # <<<<<<<<<<<<<<
 *         self._lookup_function = _find_nselement_class
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_FallbackElementClassLookup)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(((PyObject *)__pyx_v_fallback));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_fallback));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_fallback));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":105
 *         self._namespace_registries = {}
 *         FallbackElementClassLookup.__init__(self, fallback)
 *         self._lookup_function = _find_nselement_class             # <<<<<<<<<<<<<<
 * 
 *     def get_namespace(self, ns_uri):
 */
  ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->__pyx_base.__pyx_base._lookup_function = __pyx_f_4lxml_5etree__find_nselement_class;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":107
 *         self._lookup_function = _find_nselement_class
 * 
 *     def get_namespace(self, ns_uri):             # <<<<<<<<<<<<<<
 *         u"""get_namespace(self, ns_uri)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_get_namespace(PyObject *__pyx_v_self, PyObject *__pyx_v_ns_uri); /*proto*/
static char __pyx_doc_4lxml_5etree_27ElementNamespaceClassLookup_get_namespace[] = "get_namespace(self, ns_uri)\n\n        Retrieve the namespace object associated with the given URI.\n\n        Creates a new one if it does not yet exist.";
static PyObject *__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_get_namespace(PyObject *__pyx_v_self, PyObject *__pyx_v_ns_uri) {
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_registry;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("get_namespace");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ns_uri);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":113
 * 
 *         Creates a new one if it does not yet exist."""
 *         if ns_uri:             # <<<<<<<<<<<<<<
 *             ns_utf = _utf8(ns_uri)
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ns_uri); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":114
 *         Creates a new one if it does not yet exist."""
 *         if ns_uri:
 *             ns_utf = _utf8(ns_uri)             # <<<<<<<<<<<<<<
 *         else:
 *             ns_utf = None
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":116
 *             ns_utf = _utf8(ns_uri)
 *         else:
 *             ns_utf = None             # <<<<<<<<<<<<<<
 *         try:
 *             return self._namespace_registries[ns_utf]
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = Py_None;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":117
 *         else:
 *             ns_utf = None
 *         try:             # <<<<<<<<<<<<<<
 *             return self._namespace_registries[ns_utf]
 *         except KeyError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":118
 *             ns_utf = None
 *         try:
 *             return self._namespace_registries[ns_utf]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             registry = self._namespace_registries[ns_utf] = \
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyObject_GetItem(((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->_namespace_registries, __pyx_v_ns_utf); if (!__pyx_t_2) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L10_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":119
 *         try:
 *             return self._namespace_registries[ns_utf]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             registry = self._namespace_registries[ns_utf] = \
 *                        _ClassNamespaceRegistry(ns_uri)
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.get_namespace");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":121
 *         except KeyError:
 *             registry = self._namespace_registries[ns_utf] = \
 *                        _ClassNamespaceRegistry(ns_uri)             # <<<<<<<<<<<<<<
 *             return registry
 * 
 */
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_ns_uri);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ns_uri);
      __Pyx_GIVEREF(__pyx_v_ns_uri);
      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ClassNamespaceRegistry)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_registry);
      __pyx_v_registry = __pyx_t_7;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":120
 *             return self._namespace_registries[ns_utf]
 *         except KeyError:
 *             registry = self._namespace_registries[ns_utf] = \             # <<<<<<<<<<<<<<
 *                        _ClassNamespaceRegistry(ns_uri)
 *             return registry
 */
      if (PyObject_SetItem(((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_self)->_namespace_registries, __pyx_v_ns_utf, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":122
 *             registry = self._namespace_registries[ns_utf] = \
 *                        _ClassNamespaceRegistry(ns_uri)
 *             return registry             # <<<<<<<<<<<<<<
 * 
 * cdef object _find_nselement_class(state, _Document doc, xmlNode* c_node):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_registry);
      __pyx_r = __pyx_v_registry;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.ElementNamespaceClassLookup.get_namespace");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_registry);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":124
 *             return registry
 * 
 * cdef object _find_nselement_class(state, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef python.PyObject* dict_result
 *     cdef ElementNamespaceClassLookup lookup
 */

static  PyObject *__pyx_f_4lxml_5etree__find_nselement_class(PyObject *__pyx_v_state, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_v_dict_result;
  struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *__pyx_v_lookup;
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry *__pyx_v_registry;
  char *__pyx_v_c_namespace_utf;
  PyObject *__pyx_v_classes;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_find_nselement_class");
  __Pyx_INCREF(__pyx_v_state);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_classes = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":129
 *     cdef _NamespaceRegistry registry
 *     cdef char* c_namespace_utf
 *     if state is None:             # <<<<<<<<<<<<<<
 *         return _lookupDefaultElementClass(None, doc, c_node)
 * 
 */
  __pyx_t_1 = (__pyx_v_state == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":130
 *     cdef char* c_namespace_utf
 *     if state is None:
 *         return _lookupDefaultElementClass(None, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     lookup = <ElementNamespaceClassLookup>state
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree__lookupDefaultElementClass(Py_None, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":132
 *         return _lookupDefaultElementClass(None, doc, c_node)
 * 
 *     lookup = <ElementNamespaceClassLookup>state             # <<<<<<<<<<<<<<
 *     if c_node.type != tree.XML_ELEMENT_NODE:
 *         return _callLookupFallback(lookup, doc, c_node)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_state)));
  __Pyx_DECREF(((PyObject *)__pyx_v_lookup));
  __pyx_v_lookup = ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)__pyx_v_state);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":133
 * 
 *     lookup = <ElementNamespaceClassLookup>state
 *     if c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         return _callLookupFallback(lookup, doc, c_node)
 * 
 */
  __pyx_t_1 = (__pyx_v_c_node->type != XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":134
 *     lookup = <ElementNamespaceClassLookup>state
 *     if c_node.type != tree.XML_ELEMENT_NODE:
 *         return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     c_namespace_utf = _getNs(c_node)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":136
 *         return _callLookupFallback(lookup, doc, c_node)
 * 
 *     c_namespace_utf = _getNs(c_node)             # <<<<<<<<<<<<<<
 *     if c_namespace_utf is not NULL:
 *         dict_result = python.PyDict_GetItem(
 */
  __pyx_v_c_namespace_utf = _getNs(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":137
 * 
 *     c_namespace_utf = _getNs(c_node)
 *     if c_namespace_utf is not NULL:             # <<<<<<<<<<<<<<
 *         dict_result = python.PyDict_GetItem(
 *             lookup._namespace_registries, c_namespace_utf)
 */
  __pyx_t_1 = (__pyx_v_c_namespace_utf != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":139
 *     if c_namespace_utf is not NULL:
 *         dict_result = python.PyDict_GetItem(
 *             lookup._namespace_registries, c_namespace_utf)             # <<<<<<<<<<<<<<
 *     else:
 *         dict_result = python.PyDict_GetItem(
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_namespace_utf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_v_dict_result = PyDict_GetItem(__pyx_v_lookup->_namespace_registries, ((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":142
 *     else:
 *         dict_result = python.PyDict_GetItem(
 *             lookup._namespace_registries, None)             # <<<<<<<<<<<<<<
 *     if dict_result is not NULL:
 *         registry = <_NamespaceRegistry>dict_result
 */
    __pyx_v_dict_result = PyDict_GetItem(__pyx_v_lookup->_namespace_registries, Py_None);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":143
 *         dict_result = python.PyDict_GetItem(
 *             lookup._namespace_registries, None)
 *     if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *         registry = <_NamespaceRegistry>dict_result
 *         classes = registry._entries
 */
  __pyx_t_1 = (__pyx_v_dict_result != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":144
 *             lookup._namespace_registries, None)
 *     if dict_result is not NULL:
 *         registry = <_NamespaceRegistry>dict_result             # <<<<<<<<<<<<<<
 *         classes = registry._entries
 * 
 */
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_dict_result)));
    __Pyx_DECREF(((PyObject *)__pyx_v_registry));
    __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_dict_result);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":145
 *     if dict_result is not NULL:
 *         registry = <_NamespaceRegistry>dict_result
 *         classes = registry._entries             # <<<<<<<<<<<<<<
 * 
 *         if c_node.name is not NULL:
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_registry->_entries));
    __Pyx_DECREF(__pyx_v_classes);
    __pyx_v_classes = ((PyObject *)__pyx_v_registry->_entries);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":147
 *         classes = registry._entries
 * 
 *         if c_node.name is not NULL:             # <<<<<<<<<<<<<<
 *             dict_result = python.PyDict_GetItem(
 *                 classes, c_node.name)
 */
    __pyx_t_1 = (__pyx_v_c_node->name != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":149
 *         if c_node.name is not NULL:
 *             dict_result = python.PyDict_GetItem(
 *                 classes, c_node.name)             # <<<<<<<<<<<<<<
 *         else:
 *             dict_result = NULL
 */
      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_node->name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_v_dict_result = PyDict_GetItem(__pyx_v_classes, ((PyObject *)__pyx_t_2));
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":151
 *                 classes, c_node.name)
 *         else:
 *             dict_result = NULL             # <<<<<<<<<<<<<<
 * 
 *         if dict_result is NULL:
 */
      __pyx_v_dict_result = NULL;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":153
 *             dict_result = NULL
 * 
 *         if dict_result is NULL:             # <<<<<<<<<<<<<<
 *             dict_result = python.PyDict_GetItem(classes, None)
 * 
 */
    __pyx_t_1 = (__pyx_v_dict_result == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":154
 * 
 *         if dict_result is NULL:
 *             dict_result = python.PyDict_GetItem(classes, None)             # <<<<<<<<<<<<<<
 * 
 *         if dict_result is not NULL:
 */
      __pyx_v_dict_result = PyDict_GetItem(__pyx_v_classes, Py_None);
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":156
 *             dict_result = python.PyDict_GetItem(classes, None)
 * 
 *         if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *             return <object>dict_result
 *     return _callLookupFallback(lookup, doc, c_node)
 */
    __pyx_t_1 = (__pyx_v_dict_result != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":157
 * 
 *         if dict_result is not NULL:
 *             return <object>dict_result             # <<<<<<<<<<<<<<
 *     return _callLookupFallback(lookup, doc, c_node)
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
      __pyx_r = ((PyObject *)__pyx_v_dict_result);
      goto __pyx_L0;
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":158
 *         if dict_result is not NULL:
 *             return <object>dict_result
 *     return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__callLookupFallback(((struct LxmlFallbackElementClassLookup *)__pyx_v_lookup), __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._find_nselement_class");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_lookup);
  __Pyx_DECREF((PyObject *)__pyx_v_registry);
  __Pyx_DECREF(__pyx_v_classes);
  __Pyx_DECREF(__pyx_v_state);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":167
 * __FUNCTION_NAMESPACE_REGISTRIES = {}
 * 
 * def FunctionNamespace(ns_uri):             # <<<<<<<<<<<<<<
 *     u"""FunctionNamespace(ns_uri)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_FunctionNamespace(PyObject *__pyx_self, PyObject *__pyx_v_ns_uri); /*proto*/
static char __pyx_doc_4lxml_5etree_FunctionNamespace[] = "FunctionNamespace(ns_uri)\n\n    Retrieve the function namespace object associated with the given\n    URI.\n\n    Creates a new one if it does not yet exist. A function namespace\n    can only be used to register extension functions.";
static PyObject *__pyx_pf_4lxml_5etree_FunctionNamespace(PyObject *__pyx_self, PyObject *__pyx_v_ns_uri) {
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_registry;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("FunctionNamespace");
  __pyx_self = __pyx_self;
  __Pyx_INCREF(__pyx_v_ns_uri);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":175
 *     Creates a new one if it does not yet exist. A function namespace
 *     can only be used to register extension functions."""
 *     if ns_uri:             # <<<<<<<<<<<<<<
 *         ns_utf = _utf8(ns_uri)
 *     else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ns_uri); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":176
 *     can only be used to register extension functions."""
 *     if ns_uri:
 *         ns_utf = _utf8(ns_uri)             # <<<<<<<<<<<<<<
 *     else:
 *         ns_utf = None
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":178
 *         ns_utf = _utf8(ns_uri)
 *     else:
 *         ns_utf = None             # <<<<<<<<<<<<<<
 *     try:
 *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = Py_None;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":179
 *     else:
 *         ns_utf = None
 *     try:             # <<<<<<<<<<<<<<
 *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
 *     except KeyError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":180
 *         ns_utf = None
 *     try:
 *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES), __pyx_v_ns_utf); if (!__pyx_t_2) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L10_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":181
 *     try:
 *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
 *                    _XPathFunctionNamespaceRegistry(ns_uri)
 */
    __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_3) {
      __Pyx_AddTraceback("lxml.etree.FunctionNamespace");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":183
 *     except KeyError:
 *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
 *                    _XPathFunctionNamespaceRegistry(ns_uri)             # <<<<<<<<<<<<<<
 *         return registry
 * 
 */
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_ns_uri);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ns_uri);
      __Pyx_GIVEREF(__pyx_v_ns_uri);
      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XPathFunctionNamespaceRegistry)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_registry);
      __pyx_v_registry = __pyx_t_7;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":182
 *         return __FUNCTION_NAMESPACE_REGISTRIES[ns_utf]
 *     except KeyError:
 *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \             # <<<<<<<<<<<<<<
 *                    _XPathFunctionNamespaceRegistry(ns_uri)
 *         return registry
 */
      if (PyDict_SetItem(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES), __pyx_v_ns_utf, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":184
 *         registry = __FUNCTION_NAMESPACE_REGISTRIES[ns_utf] = \
 *                    _XPathFunctionNamespaceRegistry(ns_uri)
 *         return registry             # <<<<<<<<<<<<<<
 * 
 * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_registry);
      __pyx_r = __pyx_v_registry;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.FunctionNamespace");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_registry);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":187
 * 
 * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):
 *     def __setitem__(self, name, item):             # <<<<<<<<<<<<<<
 *         if not callable(item):
 *             raise NamespaceRegistryError, \
 */

static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item); /*proto*/
static int __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_item) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__setitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_INCREF(__pyx_v_item);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":188
 * cdef class _FunctionNamespaceRegistry(_NamespaceRegistry):
 *     def __setitem__(self, name, item):
 *         if not callable(item):             # <<<<<<<<<<<<<<
 *             raise NamespaceRegistryError, \
 *                 u"Registered functions must be callable."
 */
  __pyx_t_1 = (!PyCallable_Check(__pyx_v_item));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":189
 *     def __setitem__(self, name, item):
 *         if not callable(item):
 *             raise NamespaceRegistryError, \             # <<<<<<<<<<<<<<
 *                 u"Registered functions must be callable."
 *         if not name:
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s_113); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_117), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[10]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":191
 *             raise NamespaceRegistryError, \
 *                 u"Registered functions must be callable."
 *         if not name:             # <<<<<<<<<<<<<<
 *             raise ValueError, \
 *                 u"extensions must have non empty names"
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_1);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":192
 *                 u"Registered functions must be callable."
 *         if not name:
 *             raise ValueError, \             # <<<<<<<<<<<<<<
 *                 u"extensions must have non empty names"
 *         self._entries[_utf8(name)] = item
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_118), 0);
    {__pyx_filename = __pyx_f[10]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":194
 *             raise ValueError, \
 *                 u"extensions must have non empty names"
 *         self._entries[_utf8(name)] = item             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(((PyObject *)((struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *)__pyx_v_self)->__pyx_base._entries), __pyx_t_2, __pyx_v_item) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._FunctionNamespaceRegistry.__setitem__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":196
 *         self._entries[_utf8(name)] = item
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return u"FunctionNamespace(%r)" % self._ns_uri
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":197
 * 
 *     def __repr__(self):
 *         return u"FunctionNamespace(%r)" % self._ns_uri             # <<<<<<<<<<<<<<
 * 
 * cdef class _XPathFunctionNamespaceRegistry(_FunctionNamespaceRegistry):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_119), ((struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *)__pyx_v_self)->__pyx_base._ns_uri); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._FunctionNamespaceRegistry.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":205
 *     property prefix:
 *         u"Namespace prefix for extension functions."
 *         def __del__(self):             # <<<<<<<<<<<<<<
 *             self._prefix = None # no prefix configured
 *             self._prefix_utf = None
 */

static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__del__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":206
 *         u"Namespace prefix for extension functions."
 *         def __del__(self):
 *             self._prefix = None # no prefix configured             # <<<<<<<<<<<<<<
 *             self._prefix_utf = None
 *         def __get__(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix);
  ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":207
 *         def __del__(self):
 *             self._prefix = None # no prefix configured
 *             self._prefix_utf = None             # <<<<<<<<<<<<<<
 *         def __get__(self):
 *             if self._prefix is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
  ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf = Py_None;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":208
 *             self._prefix = None # no prefix configured
 *             self._prefix_utf = None
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._prefix is None:
 *                 return ''
 */

static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":209
 *             self._prefix_utf = None
 *         def __get__(self):
 *             if self._prefix is None:             # <<<<<<<<<<<<<<
 *                 return ''
 *             else:
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":210
 *         def __get__(self):
 *             if self._prefix is None:
 *                 return ''             # <<<<<<<<<<<<<<
 *             else:
 *                 return self._prefix
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
    __pyx_r = ((PyObject *)__pyx_kp_s_14);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":212
 *                 return ''
 *             else:
 *                 return self._prefix             # <<<<<<<<<<<<<<
 *         def __set__(self, prefix):
 *             if prefix == '':
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix);
    __pyx_r = ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":213
 *             else:
 *                 return self._prefix
 *         def __set__(self, prefix):             # <<<<<<<<<<<<<<
 *             if prefix == '':
 *                 prefix = None # empty prefix
 */

static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_prefix); /*proto*/
static int __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_prefix) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__set__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_prefix);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":214
 *                 return self._prefix
 *         def __set__(self, prefix):
 *             if prefix == '':             # <<<<<<<<<<<<<<
 *                 prefix = None # empty prefix
 *             if prefix is None:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_prefix, ((PyObject *)__pyx_kp_s_14), Py_EQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":215
 *         def __set__(self, prefix):
 *             if prefix == '':
 *                 prefix = None # empty prefix             # <<<<<<<<<<<<<<
 *             if prefix is None:
 *                 self._prefix_utf = None
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_prefix);
    __pyx_v_prefix = Py_None;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":216
 *             if prefix == '':
 *                 prefix = None # empty prefix
 *             if prefix is None:             # <<<<<<<<<<<<<<
 *                 self._prefix_utf = None
 *             else:
 */
  __pyx_t_2 = (__pyx_v_prefix == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":217
 *                 prefix = None # empty prefix
 *             if prefix is None:
 *                 self._prefix_utf = None             # <<<<<<<<<<<<<<
 *             else:
 *                 self._prefix_utf = _utf8(prefix)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
    ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf = Py_None;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":219
 *                 self._prefix_utf = None
 *             else:
 *                 self._prefix_utf = _utf8(prefix)             # <<<<<<<<<<<<<<
 *             self._prefix = prefix
 * 
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_prefix); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf);
    ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix_utf = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":220
 *             else:
 *                 self._prefix_utf = _utf8(prefix)
 *             self._prefix = prefix             # <<<<<<<<<<<<<<
 * 
 * cdef list _find_all_extension_prefixes():
 */
  __Pyx_INCREF(__pyx_v_prefix);
  __Pyx_GIVEREF(__pyx_v_prefix);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix);
  ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_v_self)->_prefix = __pyx_v_prefix;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathFunctionNamespaceRegistry.prefix.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":222
 *             self._prefix = prefix
 * 
 * cdef list _find_all_extension_prefixes():             # <<<<<<<<<<<<<<
 *     u"Internal lookup function to find all function prefixes for XSLT/XPath."
 *     cdef _XPathFunctionNamespaceRegistry registry
 */

static  PyObject *__pyx_f_4lxml_5etree__find_all_extension_prefixes(void) {
  struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *__pyx_v_registry;
  PyObject *__pyx_v_ns_prefixes = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  void *__pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_find_all_extension_prefixes");
  __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":225
 *     u"Internal lookup function to find all function prefixes for XSLT/XPath."
 *     cdef _XPathFunctionNamespaceRegistry registry
 *     cdef list ns_prefixes = []             # <<<<<<<<<<<<<<
 *     for registry in __FUNCTION_NAMESPACE_REGISTRIES.itervalues():
 *         if registry._prefix_utf is not None:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_ns_prefixes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":226
 *     cdef _XPathFunctionNamespaceRegistry registry
 *     cdef list ns_prefixes = []
 *     for registry in __FUNCTION_NAMESPACE_REGISTRIES.itervalues():             # <<<<<<<<<<<<<<
 *         if registry._prefix_utf is not None:
 *             if registry._ns_uri_utf is not None:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES));
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = ((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES);
  __pyx_t_2 = 0;
  while (1) {
    if (!PyDict_Next(__pyx_t_1, (&__pyx_t_2), NULL, ((PyObject **)(&__pyx_t_3)))) break;
    if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_t_3), __pyx_ptype_4lxml_5etree__XPathFunctionNamespaceRegistry)))) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_t_3)));
    __Pyx_DECREF(((PyObject *)__pyx_v_registry));
    __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":227
 *     cdef list ns_prefixes = []
 *     for registry in __FUNCTION_NAMESPACE_REGISTRIES.itervalues():
 *         if registry._prefix_utf is not None:             # <<<<<<<<<<<<<<
 *             if registry._ns_uri_utf is not None:
 *                 ns_prefixes.append(
 */
    __pyx_t_4 = (__pyx_v_registry->_prefix_utf != Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":228
 *     for registry in __FUNCTION_NAMESPACE_REGISTRIES.itervalues():
 *         if registry._prefix_utf is not None:
 *             if registry._ns_uri_utf is not None:             # <<<<<<<<<<<<<<
 *                 ns_prefixes.append(
 *                     (registry._prefix_utf, registry._ns_uri_utf))
 */
      __pyx_t_4 = (__pyx_v_registry->__pyx_base.__pyx_base._ns_uri_utf != Py_None);
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":229
 *         if registry._prefix_utf is not None:
 *             if registry._ns_uri_utf is not None:
 *                 ns_prefixes.append(             # <<<<<<<<<<<<<<
 *                     (registry._prefix_utf, registry._ns_uri_utf))
 *     return ns_prefixes
 */
        if (unlikely(__pyx_v_ns_prefixes == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[10]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":230
 *             if registry._ns_uri_utf is not None:
 *                 ns_prefixes.append(
 *                     (registry._prefix_utf, registry._ns_uri_utf))             # <<<<<<<<<<<<<<
 *     return ns_prefixes
 * 
 */
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_registry->_prefix_utf);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_registry->_prefix_utf);
        __Pyx_GIVEREF(__pyx_v_registry->_prefix_utf);
        __Pyx_INCREF(__pyx_v_registry->__pyx_base.__pyx_base._ns_uri_utf);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_registry->__pyx_base.__pyx_base._ns_uri_utf);
        __Pyx_GIVEREF(__pyx_v_registry->__pyx_base.__pyx_base._ns_uri_utf);
        __pyx_t_6 = PyList_Append(((PyObject *)__pyx_v_ns_prefixes), __pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L6;
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":231
 *                 ns_prefixes.append(
 *                     (registry._prefix_utf, registry._ns_uri_utf))
 *     return ns_prefixes             # <<<<<<<<<<<<<<
 * 
 * cdef object _find_extension(ns_uri_utf, name_utf):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_ns_prefixes));
  __pyx_r = __pyx_v_ns_prefixes;
  goto __pyx_L0;

  __pyx_r = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._find_all_extension_prefixes");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_ns_prefixes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":233
 *     return ns_prefixes
 * 
 * cdef object _find_extension(ns_uri_utf, name_utf):             # <<<<<<<<<<<<<<
 *     cdef python.PyObject* dict_result
 *     dict_result = python.PyDict_GetItem(
 */

static  PyObject *__pyx_f_4lxml_5etree__find_extension(PyObject *__pyx_v_ns_uri_utf, PyObject *__pyx_v_name_utf) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_extensions;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_find_extension");
  __Pyx_INCREF(__pyx_v_ns_uri_utf);
  __Pyx_INCREF(__pyx_v_name_utf);
  __pyx_v_extensions = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":236
 *     cdef python.PyObject* dict_result
 *     dict_result = python.PyDict_GetItem(
 *         __FUNCTION_NAMESPACE_REGISTRIES, ns_uri_utf)             # <<<<<<<<<<<<<<
 *     if dict_result is NULL:
 *         return None
 */
  __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES), __pyx_v_ns_uri_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":237
 *     dict_result = python.PyDict_GetItem(
 *         __FUNCTION_NAMESPACE_REGISTRIES, ns_uri_utf)
 *     if dict_result is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     extensions = (<_NamespaceRegistry>dict_result)._entries
 */
  __pyx_t_1 = (__pyx_v_dict_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":238
 *         __FUNCTION_NAMESPACE_REGISTRIES, ns_uri_utf)
 *     if dict_result is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     extensions = (<_NamespaceRegistry>dict_result)._entries
 *     dict_result = python.PyDict_GetItem(extensions, name_utf)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":239
 *     if dict_result is NULL:
 *         return None
 *     extensions = (<_NamespaceRegistry>dict_result)._entries             # <<<<<<<<<<<<<<
 *     dict_result = python.PyDict_GetItem(extensions, name_utf)
 *     if dict_result is NULL:
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_dict_result)->_entries));
  __Pyx_DECREF(__pyx_v_extensions);
  __pyx_v_extensions = ((PyObject *)((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)__pyx_v_dict_result)->_entries);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":240
 *         return None
 *     extensions = (<_NamespaceRegistry>dict_result)._entries
 *     dict_result = python.PyDict_GetItem(extensions, name_utf)             # <<<<<<<<<<<<<<
 *     if dict_result is NULL:
 *         return None
 */
  __pyx_v_dict_result = PyDict_GetItem(__pyx_v_extensions, __pyx_v_name_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":241
 *     extensions = (<_NamespaceRegistry>dict_result)._entries
 *     dict_result = python.PyDict_GetItem(extensions, name_utf)
 *     if dict_result is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     else:
 */
  __pyx_t_1 = (__pyx_v_dict_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":242
 *     dict_result = python.PyDict_GetItem(extensions, name_utf)
 *     if dict_result is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     else:
 *         return <object>dict_result
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":244
 *         return None
 *     else:
 *         return <object>dict_result             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
    __pyx_r = ((PyObject *)__pyx_v_dict_result);
    goto __pyx_L0;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":17
 * cdef class Resolver:
 *     u"This is the base class of all resolvers."
 *     def resolve(self, system_url, public_id, context):             # <<<<<<<<<<<<<<
 *         u"""resolve(self, system_url, public_id, context)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8Resolver_resolve[] = "resolve(self, system_url, public_id, context)\n\n        Override this method to resolve an external source by\n        ``system_url`` and ``public_id``.  The third argument is an\n        opaque context object.\n\n        Return the result of one of the ``resolve_*()`` methods.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_system_url = 0;
  PyObject *__pyx_v_public_id = 0;
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__system_url,&__pyx_n_s__public_id,&__pyx_n_s__context,0};
  __Pyx_RefNannySetupContext("resolve");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__system_url);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__public_id);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, 2); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "resolve") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_system_url = values[0];
    __pyx_v_public_id = values[1];
    __pyx_v_context = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_system_url = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_public_id = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 2);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":26
 *         Return the result of one of the ``resolve_*()`` methods.
 *         """
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def resolve_empty(self, context):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":28
 *         return None
 * 
 *     def resolve_empty(self, context):             # <<<<<<<<<<<<<<
 *         u"""resolve_empty(self, context)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_empty(PyObject *__pyx_v_self, PyObject *__pyx_v_context); /*proto*/
static char __pyx_doc_4lxml_5etree_8Resolver_resolve_empty[] = "resolve_empty(self, context)\n\n        Return an empty input document.\n\n        Pass context as parameter.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_empty(PyObject *__pyx_v_self, PyObject *__pyx_v_context) {
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("resolve_empty");
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":36
 *         """
 *         cdef _InputDocument doc_ref
 *         doc_ref = _InputDocument()             # <<<<<<<<<<<<<<
 *         doc_ref._type = PARSER_DATA_EMPTY
 *         return doc_ref
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__InputDocument)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":37
 *         cdef _InputDocument doc_ref
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_EMPTY             # <<<<<<<<<<<<<<
 *         return doc_ref
 * 
 */
  __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_EMPTY;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":38
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_EMPTY
 *         return doc_ref             # <<<<<<<<<<<<<<
 * 
 *     def resolve_string(self, string, context, *, base_url=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_r = ((PyObject *)__pyx_v_doc_ref);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_empty");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":40
 *         return doc_ref
 * 
 *     def resolve_string(self, string, context, *, base_url=None):             # <<<<<<<<<<<<<<
 *         u"""resolve_string(self, string, context, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_string(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8Resolver_resolve_string[] = "resolve_string(self, string, context, base_url=None)\n\n        Return a parsable string as input document.\n\n        Pass data string and context as parameters.  You can pass the\n        source URL or filename through the ``base_url`` keyword\n        argument.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_string(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_string = 0;
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_v_base_url = 0;
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__string,&__pyx_n_s__context,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("resolve_string");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__string);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve_string", 1, 2, 2, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "resolve_string") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_string = values[0];
    __pyx_v_context = values[1];
    __pyx_v_base_url = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_string = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_base_url = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve_string", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_string");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_string);
  __Pyx_INCREF(__pyx_v_context);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":50
 *         """
 *         cdef _InputDocument doc_ref
 *         if python.PyUnicode_Check(string):             # <<<<<<<<<<<<<<
 *             string = python.PyUnicode_AsUTF8String(string)
 *         elif not python.PyString_Check(string):
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_string);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":51
 *         cdef _InputDocument doc_ref
 *         if python.PyUnicode_Check(string):
 *             string = python.PyUnicode_AsUTF8String(string)             # <<<<<<<<<<<<<<
 *         elif not python.PyString_Check(string):
 *             raise TypeError, "argument must be a byte string or unicode string"
 */
    __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_string); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_string);
    __pyx_v_string = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":52
 *         if python.PyUnicode_Check(string):
 *             string = python.PyUnicode_AsUTF8String(string)
 *         elif not python.PyString_Check(string):             # <<<<<<<<<<<<<<
 *             raise TypeError, "argument must be a byte string or unicode string"
 *         doc_ref = _InputDocument()
 */
  __pyx_t_1 = (!PyString_Check(__pyx_v_string));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":53
 *             string = python.PyUnicode_AsUTF8String(string)
 *         elif not python.PyString_Check(string):
 *             raise TypeError, "argument must be a byte string or unicode string"             # <<<<<<<<<<<<<<
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_STRING
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_s_120), 0);
    {__pyx_filename = __pyx_f[11]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":54
 *         elif not python.PyString_Check(string):
 *             raise TypeError, "argument must be a byte string or unicode string"
 *         doc_ref = _InputDocument()             # <<<<<<<<<<<<<<
 *         doc_ref._type = PARSER_DATA_STRING
 *         doc_ref._data_bytes = string
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__InputDocument)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":55
 *             raise TypeError, "argument must be a byte string or unicode string"
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_STRING             # <<<<<<<<<<<<<<
 *         doc_ref._data_bytes = string
 *         if base_url is not None:
 */
  __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_STRING;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":56
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_STRING
 *         doc_ref._data_bytes = string             # <<<<<<<<<<<<<<
 *         if base_url is not None:
 *             doc_ref._filename = _encodeFilename(base_url)
 */
  __Pyx_INCREF(__pyx_v_string);
  __Pyx_GIVEREF(__pyx_v_string);
  __Pyx_GOTREF(__pyx_v_doc_ref->_data_bytes);
  __Pyx_DECREF(__pyx_v_doc_ref->_data_bytes);
  __pyx_v_doc_ref->_data_bytes = __pyx_v_string;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":57
 *         doc_ref._type = PARSER_DATA_STRING
 *         doc_ref._data_bytes = string
 *         if base_url is not None:             # <<<<<<<<<<<<<<
 *             doc_ref._filename = _encodeFilename(base_url)
 *         return doc_ref
 */
  __pyx_t_1 = (__pyx_v_base_url != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":58
 *         doc_ref._data_bytes = string
 *         if base_url is not None:
 *             doc_ref._filename = _encodeFilename(base_url)             # <<<<<<<<<<<<<<
 *         return doc_ref
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_doc_ref->_filename);
    __Pyx_DECREF(__pyx_v_doc_ref->_filename);
    __pyx_v_doc_ref->_filename = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":59
 *         if base_url is not None:
 *             doc_ref._filename = _encodeFilename(base_url)
 *         return doc_ref             # <<<<<<<<<<<<<<
 * 
 *     def resolve_filename(self, filename, context):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_r = ((PyObject *)__pyx_v_doc_ref);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_string");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_string);
  __Pyx_DECREF(__pyx_v_context);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":61
 *         return doc_ref
 * 
 *     def resolve_filename(self, filename, context):             # <<<<<<<<<<<<<<
 *         u"""resolve_filename(self, filename, context)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_filename(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8Resolver_resolve_filename[] = "resolve_filename(self, filename, context)\n\n        Return the name of a parsable file as input document.\n\n        Pass filename and context as parameters.  You can also pass a\n        URL with an HTTP, FTP or file target.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_filename(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_context = 0;
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filename,&__pyx_n_s__context,0};
  __Pyx_RefNannySetupContext("resolve_filename");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve_filename", 1, 2, 2, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "resolve_filename") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_filename = values[0];
    __pyx_v_context = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_filename = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve_filename", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_filename");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":70
 *         """
 *         cdef _InputDocument doc_ref
 *         doc_ref = _InputDocument()             # <<<<<<<<<<<<<<
 *         doc_ref._type = PARSER_DATA_FILENAME
 *         doc_ref._filename = _encodeFilename(filename)
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__InputDocument)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":71
 *         cdef _InputDocument doc_ref
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_FILENAME             # <<<<<<<<<<<<<<
 *         doc_ref._filename = _encodeFilename(filename)
 *         return doc_ref
 */
  __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":72
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_FILENAME
 *         doc_ref._filename = _encodeFilename(filename)             # <<<<<<<<<<<<<<
 *         return doc_ref
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_doc_ref->_filename);
  __Pyx_DECREF(__pyx_v_doc_ref->_filename);
  __pyx_v_doc_ref->_filename = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":73
 *         doc_ref._type = PARSER_DATA_FILENAME
 *         doc_ref._filename = _encodeFilename(filename)
 *         return doc_ref             # <<<<<<<<<<<<<<
 * 
 *     def resolve_file(self, f, context, *, base_url=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_r = ((PyObject *)__pyx_v_doc_ref);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_filename");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":75
 *         return doc_ref
 * 
 *     def resolve_file(self, f, context, *, base_url=None):             # <<<<<<<<<<<<<<
 *         u"""resolve_file(self, f, context, base_url=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_file(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8Resolver_resolve_file[] = "resolve_file(self, f, context, base_url=None)\n\n        Return an open file-like object as input document.\n\n        Pass open file and context as parameters.  You can pass the\n        base URL or filename of the file through the ``base_url``\n        keyword argument.\n\n        Note that using ``.resolve_filename()`` is more efficient,\n        especially in threaded environments.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_8Resolver_resolve_file(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_f = 0;
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_v_base_url = 0;
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__f,&__pyx_n_s__context,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("resolve_file");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__f);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve_file", 1, 2, 2, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "resolve_file") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_f = values[0];
    __pyx_v_context = values[1];
    __pyx_v_base_url = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_f = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_base_url = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve_file", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_file");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_f);
  __Pyx_INCREF(__pyx_v_context);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":88
 *         """
 *         cdef _InputDocument doc_ref
 *         try:             # <<<<<<<<<<<<<<
 *             f.read
 *         except AttributeError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":89
 *         cdef _InputDocument doc_ref
 *         try:
 *             f.read             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             raise TypeError, u"Argument is not a file-like object"
 */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__read); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":90
 *         try:
 *             f.read
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             raise TypeError, u"Argument is not a file-like object"
 *         doc_ref = _InputDocument()
 */
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree.Resolver.resolve_file");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":91
 *             f.read
 *         except AttributeError:
 *             raise TypeError, u"Argument is not a file-like object"             # <<<<<<<<<<<<<<
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_FILE
 */
      __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_121), 0);
      {__pyx_filename = __pyx_f[11]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":92
 *         except AttributeError:
 *             raise TypeError, u"Argument is not a file-like object"
 *         doc_ref = _InputDocument()             # <<<<<<<<<<<<<<
 *         doc_ref._type = PARSER_DATA_FILE
 *         if base_url is not None:
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__InputDocument)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":93
 *             raise TypeError, u"Argument is not a file-like object"
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_FILE             # <<<<<<<<<<<<<<
 *         if base_url is not None:
 *             doc_ref._filename = _encodeFilename(base_url)
 */
  __pyx_v_doc_ref->_type = __pyx_e_4lxml_5etree_PARSER_DATA_FILE;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":94
 *         doc_ref = _InputDocument()
 *         doc_ref._type = PARSER_DATA_FILE
 *         if base_url is not None:             # <<<<<<<<<<<<<<
 *             doc_ref._filename = _encodeFilename(base_url)
 *         else:
 */
  __pyx_t_5 = (__pyx_v_base_url != Py_None);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":95
 *         doc_ref._type = PARSER_DATA_FILE
 *         if base_url is not None:
 *             doc_ref._filename = _encodeFilename(base_url)             # <<<<<<<<<<<<<<
 *         else:
 *             doc_ref._filename = _getFilenameForFile(f)
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_base_url); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_doc_ref->_filename);
    __Pyx_DECREF(__pyx_v_doc_ref->_filename);
    __pyx_v_doc_ref->_filename = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L16;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":97
 *             doc_ref._filename = _encodeFilename(base_url)
 *         else:
 *             doc_ref._filename = _getFilenameForFile(f)             # <<<<<<<<<<<<<<
 *         doc_ref._file = f
 *         return doc_ref
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_f); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_doc_ref->_filename);
    __Pyx_DECREF(__pyx_v_doc_ref->_filename);
    __pyx_v_doc_ref->_filename = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":98
 *         else:
 *             doc_ref._filename = _getFilenameForFile(f)
 *         doc_ref._file = f             # <<<<<<<<<<<<<<
 *         return doc_ref
 * 
 */
  __Pyx_INCREF(__pyx_v_f);
  __Pyx_GIVEREF(__pyx_v_f);
  __Pyx_GOTREF(__pyx_v_doc_ref->_file);
  __Pyx_DECREF(__pyx_v_doc_ref->_file);
  __pyx_v_doc_ref->_file = __pyx_v_f;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":99
 *             doc_ref._filename = _getFilenameForFile(f)
 *         doc_ref._file = f
 *         return doc_ref             # <<<<<<<<<<<<<<
 * 
 * cdef class _ResolverRegistry:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc_ref));
  __pyx_r = ((PyObject *)__pyx_v_doc_ref);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.Resolver.resolve_file");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_f);
  __Pyx_DECREF(__pyx_v_context);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":104
 *     cdef object _resolvers
 *     cdef Resolver _default_resolver
 *     def __init__(self, Resolver default_resolver=None):             # <<<<<<<<<<<<<<
 *         self._resolvers = set()
 *         self._default_resolver = default_resolver
 */

static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17_ResolverRegistry___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4lxml_5etree_Resolver *__pyx_v_default_resolver = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__default_resolver,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct __pyx_obj_4lxml_5etree_Resolver *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default_resolver);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_default_resolver = ((struct __pyx_obj_4lxml_5etree_Resolver *)values[0]);
  } else {
    __pyx_v_default_resolver = ((struct __pyx_obj_4lxml_5etree_Resolver *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_default_resolver = ((struct __pyx_obj_4lxml_5etree_Resolver *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_default_resolver), __pyx_ptype_4lxml_5etree_Resolver, 1, "default_resolver", 0))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":105
 *     cdef Resolver _default_resolver
 *     def __init__(self, Resolver default_resolver=None):
 *         self._resolvers = set()             # <<<<<<<<<<<<<<
 *         self._default_resolver = default_resolver
 * 
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers);
  ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":106
 *     def __init__(self, Resolver default_resolver=None):
 *         self._resolvers = set()
 *         self._default_resolver = default_resolver             # <<<<<<<<<<<<<<
 * 
 *     def add(self, Resolver resolver not None):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_default_resolver));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_default_resolver));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_default_resolver);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_default_resolver));
  ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_default_resolver = __pyx_v_default_resolver;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":108
 *         self._default_resolver = default_resolver
 * 
 *     def add(self, Resolver resolver not None):             # <<<<<<<<<<<<<<
 *         u"""add(self, resolver)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_add(PyObject *__pyx_v_self, PyObject *__pyx_v_resolver); /*proto*/
static char __pyx_doc_4lxml_5etree_17_ResolverRegistry_add[] = "add(self, resolver)\n\n        Register a resolver.\n\n        For each requested entity, the 'resolve' method of the resolver will\n        be called and the result will be passed to the parser.  If this method\n        returns None, the request will be delegated to other resolvers or the\n        default resolver.  The resolvers will be tested in an arbitrary order\n        until the first match is found.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_add(PyObject *__pyx_v_self, PyObject *__pyx_v_resolver) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("add");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_resolver), __pyx_ptype_4lxml_5etree_Resolver, 0, "resolver", 0))) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":119
 *         until the first match is found.
 *         """
 *         self._resolvers.add(resolver)             # <<<<<<<<<<<<<<
 * 
 *     def remove(self, resolver):
 */
  __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers, __pyx_n_s__add); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_resolver);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_resolver);
  __Pyx_GIVEREF(__pyx_v_resolver);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.add");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":121
 *         self._resolvers.add(resolver)
 * 
 *     def remove(self, resolver):             # <<<<<<<<<<<<<<
 *         u"remove(self, resolver)"
 *         self._resolvers.discard(resolver)
 */

static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_remove(PyObject *__pyx_v_self, PyObject *__pyx_v_resolver); /*proto*/
static char __pyx_doc_4lxml_5etree_17_ResolverRegistry_remove[] = "remove(self, resolver)";
static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_remove(PyObject *__pyx_v_self, PyObject *__pyx_v_resolver) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("remove");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":123
 *     def remove(self, resolver):
 *         u"remove(self, resolver)"
 *         self._resolvers.discard(resolver)             # <<<<<<<<<<<<<<
 * 
 *     cdef _ResolverRegistry _copy(self):
 */
  __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers, __pyx_n_s__discard); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_resolver);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_resolver);
  __Pyx_GIVEREF(__pyx_v_resolver);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.remove");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":125
 *         self._resolvers.discard(resolver)
 * 
 *     cdef _ResolverRegistry _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _ResolverRegistry registry
 *         registry = _ResolverRegistry(self._default_resolver)
 */

static  struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_f_4lxml_5etree_17_ResolverRegistry__copy(struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_registry;
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":127
 *     cdef _ResolverRegistry _copy(self):
 *         cdef _ResolverRegistry registry
 *         registry = _ResolverRegistry(self._default_resolver)             # <<<<<<<<<<<<<<
 *         registry._resolvers = self._resolvers.copy()
 *         return registry
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_default_resolver));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->_default_resolver));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_default_resolver));
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ResolverRegistry)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_v_registry));
  __pyx_v_registry = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":128
 *         cdef _ResolverRegistry registry
 *         registry = _ResolverRegistry(self._default_resolver)
 *         registry._resolvers = self._resolvers.copy()             # <<<<<<<<<<<<<<
 *         return registry
 * 
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->_resolvers, __pyx_n_s__copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_registry->_resolvers);
  __Pyx_DECREF(__pyx_v_registry->_resolvers);
  __pyx_v_registry->_resolvers = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":129
 *         registry = _ResolverRegistry(self._default_resolver)
 *         registry._resolvers = self._resolvers.copy()
 *         return registry             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_registry));
  __pyx_r = __pyx_v_registry;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_registry);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":131
 *         return registry
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         u"copy(self)"
 *         return self._copy()
 */

static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_17_ResolverRegistry_copy[] = "copy(self)";
static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":133
 *     def copy(self):
 *         u"copy(self)"
 *         return self._copy()             # <<<<<<<<<<<<<<
 * 
 *     def resolve(self, system_url, public_id, context):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry *)((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->__pyx_vtab)->_copy(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":135
 *         return self._copy()
 * 
 *     def resolve(self, system_url, public_id, context):             # <<<<<<<<<<<<<<
 *         u"resolve(self, system_url, public_id, context)"
 *         for resolver in self._resolvers:
 */

static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_resolve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_17_ResolverRegistry_resolve[] = "resolve(self, system_url, public_id, context)";
static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry_resolve(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_system_url = 0;
  PyObject *__pyx_v_public_id = 0;
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_v_resolver;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__system_url,&__pyx_n_s__public_id,&__pyx_n_s__context,0};
  __Pyx_RefNannySetupContext("resolve");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__system_url);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__public_id);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, 1); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, 2); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "resolve") < 0)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_system_url = values[0];
    __pyx_v_public_id = values[1];
    __pyx_v_context = values[2];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_system_url = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_public_id = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 2);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[11]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.resolve");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_system_url);
  __Pyx_INCREF(__pyx_v_public_id);
  __Pyx_INCREF(__pyx_v_context);
  __pyx_v_resolver = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":137
 *     def resolve(self, system_url, public_id, context):
 *         u"resolve(self, system_url, public_id, context)"
 *         for resolver in self._resolvers:             # <<<<<<<<<<<<<<
 *             result = resolver.resolve(system_url, public_id, context)
 *             if result is not None:
 */
  if (PyList_CheckExact(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers) || PyTuple_CheckExact(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers)) {
    __pyx_t_1 = 0; __pyx_t_2 = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_v_resolver);
    __pyx_v_resolver = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":138
 *         u"resolve(self, system_url, public_id, context)"
 *         for resolver in self._resolvers:
 *             result = resolver.resolve(system_url, public_id, context)             # <<<<<<<<<<<<<<
 *             if result is not None:
 *                 return result
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_resolver, __pyx_n_s__resolve); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_system_url);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_system_url);
    __Pyx_GIVEREF(__pyx_v_system_url);
    __Pyx_INCREF(__pyx_v_public_id);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_public_id);
    __Pyx_GIVEREF(__pyx_v_public_id);
    __Pyx_INCREF(__pyx_v_context);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_context);
    __Pyx_GIVEREF(__pyx_v_context);
    __pyx_t_5 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":139
 *         for resolver in self._resolvers:
 *             result = resolver.resolve(system_url, public_id, context)
 *             if result is not None:             # <<<<<<<<<<<<<<
 *                 return result
 *         if self._default_resolver is None:
 */
    __pyx_t_6 = (__pyx_v_result != Py_None);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":140
 *             result = resolver.resolve(system_url, public_id, context)
 *             if result is not None:
 *                 return result             # <<<<<<<<<<<<<<
 *         if self._default_resolver is None:
 *             return None
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":141
 *             if result is not None:
 *                 return result
 *         if self._default_resolver is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._default_resolver.resolve(system_url, public_id, context)
 */
  __pyx_t_6 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_default_resolver) == Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":142
 *                 return result
 *         if self._default_resolver is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._default_resolver.resolve(system_url, public_id, context)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":143
 *         if self._default_resolver is None:
 *             return None
 *         return self._default_resolver.resolve(system_url, public_id, context)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_default_resolver), __pyx_n_s__resolve); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_system_url);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_system_url);
  __Pyx_GIVEREF(__pyx_v_system_url);
  __Pyx_INCREF(__pyx_v_public_id);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_public_id);
  __Pyx_GIVEREF(__pyx_v_public_id);
  __Pyx_INCREF(__pyx_v_context);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_context);
  __Pyx_GIVEREF(__pyx_v_context);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.resolve");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_resolver);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_system_url);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":145
 *         return self._default_resolver.resolve(system_url, public_id, context)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return repr(self._resolvers)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_17_ResolverRegistry___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":146
 * 
 *     def __repr__(self):
 *         return repr(self._resolvers)             # <<<<<<<<<<<<<<
 * 
 * cdef class _ResolverContext(_ExceptionContext):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_Repr(((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_v_self)->_resolvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ResolverRegistry.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":152
 *     cdef _TempStore _storage
 * 
 *     cdef void clear(self):             # <<<<<<<<<<<<<<
 *         _ExceptionContext.clear(self)
 *         self._storage.clear()
 */

static  void __pyx_f_4lxml_5etree_16_ResolverContext_clear(struct __pyx_obj_4lxml_5etree__ResolverContext *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("clear");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":153
 * 
 *     cdef void clear(self):
 *         _ExceptionContext.clear(self)             # <<<<<<<<<<<<<<
 *         self._storage.clear()
 * 
 */
  __pyx_vtabptr_4lxml_5etree__ExceptionContext->clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":154
 *     cdef void clear(self):
 *         _ExceptionContext.clear(self)
 *         self._storage.clear()             # <<<<<<<<<<<<<<
 * 
 * cdef _initResolverContext(_ResolverContext context,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__TempStore *)__pyx_v_self->_storage->__pyx_vtab)->clear(__pyx_v_self->_storage); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree._ResolverContext.clear");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":156
 *         self._storage.clear()
 * 
 * cdef _initResolverContext(_ResolverContext context,             # <<<<<<<<<<<<<<
 *                           _ResolverRegistry resolvers):
 *     if resolvers is None:
 */

static  PyObject *__pyx_f_4lxml_5etree__initResolverContext(struct __pyx_obj_4lxml_5etree__ResolverContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_resolvers) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_initResolverContext");
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF((PyObject *)__pyx_v_resolvers);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":158
 * cdef _initResolverContext(_ResolverContext context,
 *                           _ResolverRegistry resolvers):
 *     if resolvers is None:             # <<<<<<<<<<<<<<
 *         context._resolvers = _ResolverRegistry()
 *     else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_resolvers) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":159
 *                           _ResolverRegistry resolvers):
 *     if resolvers is None:
 *         context._resolvers = _ResolverRegistry()             # <<<<<<<<<<<<<<
 *     else:
 *         context._resolvers = resolvers
 */
    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ResolverRegistry)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_context->_resolvers);
    __Pyx_DECREF(((PyObject *)__pyx_v_context->_resolvers));
    __pyx_v_context->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":161
 *         context._resolvers = _ResolverRegistry()
 *     else:
 *         context._resolvers = resolvers             # <<<<<<<<<<<<<<
 *     context._storage = _TempStore()
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_resolvers));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_resolvers));
    __Pyx_GOTREF(__pyx_v_context->_resolvers);
    __Pyx_DECREF(((PyObject *)__pyx_v_context->_resolvers));
    __pyx_v_context->_resolvers = __pyx_v_resolvers;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/docloader.pxi":162
 *     else:
 *         context._resolvers = resolvers
 *     context._storage = _TempStore()             # <<<<<<<<<<<<<<
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__TempStore)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_context->_storage);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_storage));
  __pyx_v_context->_storage = ((struct __pyx_obj_4lxml_5etree__TempStore *)__pyx_t_2);
  __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._initResolverContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_resolvers);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":23
 *     u"""Syntax error while parsing an XML document.
 *     """
 *     def __init__(self, message, code, line, column):             # <<<<<<<<<<<<<<
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 */

static PyObject *__pyx_pf_4lxml_5etree_14XMLSyntaxError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4lxml_5etree_14XMLSyntaxError___init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pf_4lxml_5etree_14XMLSyntaxError___init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_4lxml_5etree_14XMLSyntaxError___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_message = 0;
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_line = 0;
  PyObject *__pyx_v_column = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__message,&__pyx_n_s__code,&__pyx_n_s__line,&__pyx_n_s__column,0};
  __Pyx_RefNannySetupContext("__init__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__message);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__code);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__line);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  4:
      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__column);
      if (likely(values[4])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_message = values[1];
    __pyx_v_code = values[2];
    __pyx_v_line = values[3];
    __pyx_v_column = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_message = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_code = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_line = PyTuple_GET_ITEM(__pyx_args, 3);
    __pyx_v_column = PyTuple_GET_ITEM(__pyx_args, 4);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XMLSyntaxError.__init__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_message);
  __Pyx_INCREF(__pyx_v_code);
  __Pyx_INCREF(__pyx_v_line);
  __Pyx_INCREF(__pyx_v_column);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":24
 *     """
 *     def __init__(self, message, code, line, column):
 *         if python.PY_VERSION_HEX >= 0x02050000:             # <<<<<<<<<<<<<<
 *             # Python >= 2.5 uses new style class exceptions
 *             super(_XMLSyntaxError, self).__init__(message)
 */
  __pyx_t_1 = (PY_VERSION_HEX >= 0x02050000);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":26
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 *             super(_XMLSyntaxError, self).__init__(message)             # <<<<<<<<<<<<<<
 *         else:
 *             ParseError.__init__(self, message)
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_4lxml_5etree__XMLSyntaxError);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_4lxml_5etree__XMLSyntaxError);
    __Pyx_GIVEREF(__pyx_v_4lxml_5etree__XMLSyntaxError);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __pyx_t_3 = PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":28
 *             super(_XMLSyntaxError, self).__init__(message)
 *         else:
 *             ParseError.__init__(self, message)             # <<<<<<<<<<<<<<
 *         self.position = (line, column)
 *         self.code = code
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s____init__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __Pyx_INCREF(__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":29
 *         else:
 *             ParseError.__init__(self, message)
 *         self.position = (line, column)             # <<<<<<<<<<<<<<
 *         self.code = code
 * 
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_line);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_line);
  __Pyx_GIVEREF(__pyx_v_line);
  __Pyx_INCREF(__pyx_v_column);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_column);
  __Pyx_GIVEREF(__pyx_v_column);
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__position, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":30
 *             ParseError.__init__(self, message)
 *         self.position = (line, column)
 *         self.code = code             # <<<<<<<<<<<<<<
 * 
 * cdef object _XMLSyntaxError
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__code, __pyx_v_code) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.XMLSyntaxError.__init__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_self);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_code);
  __Pyx_DECREF(__pyx_v_line);
  __Pyx_DECREF(__pyx_v_column);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":54
 *     cdef list _implied_parser_contexts
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._implied_parser_contexts = []
 * 
 */

static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":55
 * 
 *     def __init__(self):
 *         self._implied_parser_contexts = []             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self)->_implied_parser_contexts);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self)->_implied_parser_contexts));
  ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self)->_implied_parser_contexts = __pyx_t_1;
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ParserDictionaryContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":57
 *         self._implied_parser_contexts = []
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c_dict is not NULL:
 *             xmlparser.xmlDictFree(self._c_dict)
 */

static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":58
 * 
 *     def __dealloc__(self):
 *         if self._c_dict is not NULL:             # <<<<<<<<<<<<<<
 *             xmlparser.xmlDictFree(self._c_dict)
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self)->_c_dict != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":59
 *     def __dealloc__(self):
 *         if self._c_dict is not NULL:
 *             xmlparser.xmlDictFree(self._c_dict)             # <<<<<<<<<<<<<<
 * 
 *     cdef void initMainParserContext(self):
 */
    xmlDictFree(((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self)->_c_dict);
    goto __pyx_L5;
  }
  __pyx_L5:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":61
 *             xmlparser.xmlDictFree(self._c_dict)
 * 
 *     cdef void initMainParserContext(self):             # <<<<<<<<<<<<<<
 *         u"""Put the global context into the thread dictionary of the main
 *         thread.  To be called once and only in the main thread."""
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
  PyObject *__pyx_v_thread_dict;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("initMainParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":66
 *         cdef python.PyObject* thread_dict
 *         cdef python.PyObject* result
 *         thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
 *         if thread_dict is not NULL:
 *             (<object>thread_dict)[u"_ParserDictionaryContext"] = self
 */
  __pyx_v_thread_dict = PyThreadState_GetDict();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":67
 *         cdef python.PyObject* result
 *         thread_dict = python.PyThreadState_GetDict()
 *         if thread_dict is not NULL:             # <<<<<<<<<<<<<<
 *             (<object>thread_dict)[u"_ParserDictionaryContext"] = self
 * 
 */
  __pyx_t_1 = (__pyx_v_thread_dict != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":68
 *         thread_dict = python.PyThreadState_GetDict()
 *         if thread_dict is not NULL:
 *             (<object>thread_dict)[u"_ParserDictionaryContext"] = self             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserDictionaryContext _findThreadParserContext(self):
 */
    if (PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), ((PyObject *)__pyx_n_u_123), ((PyObject *)__pyx_v_self)) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.initMainParserContext");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":70
 *             (<object>thread_dict)[u"_ParserDictionaryContext"] = self
 * 
 *     cdef _ParserDictionaryContext _findThreadParserContext(self):             # <<<<<<<<<<<<<<
 *         u"Find (or create) the _ParserDictionaryContext object for the current thread"
 *         cdef python.PyObject* thread_dict
 */

static  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
  PyObject *__pyx_v_thread_dict;
  PyObject *__pyx_v_result;
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  PyObject *__pyx_v_d;
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_findThreadParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_d = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":75
 *         cdef python.PyObject* result
 *         cdef _ParserDictionaryContext context
 *         thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
 *         if thread_dict is NULL:
 *             return self
 */
  __pyx_v_thread_dict = PyThreadState_GetDict();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":76
 *         cdef _ParserDictionaryContext context
 *         thread_dict = python.PyThreadState_GetDict()
 *         if thread_dict is NULL:             # <<<<<<<<<<<<<<
 *             return self
 *         d = <object>thread_dict
 */
  __pyx_t_1 = (__pyx_v_thread_dict == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":77
 *         thread_dict = python.PyThreadState_GetDict()
 *         if thread_dict is NULL:
 *             return self             # <<<<<<<<<<<<<<
 *         d = <object>thread_dict
 *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __pyx_r = __pyx_v_self;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":78
 *         if thread_dict is NULL:
 *             return self
 *         d = <object>thread_dict             # <<<<<<<<<<<<<<
 *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
 *         if result is not NULL:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_thread_dict));
  __Pyx_DECREF(__pyx_v_d);
  __pyx_v_d = ((PyObject *)__pyx_v_thread_dict);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":79
 *             return self
 *         d = <object>thread_dict
 *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")             # <<<<<<<<<<<<<<
 *         if result is not NULL:
 *             return <object>result
 */
  __pyx_v_result = PyDict_GetItem(__pyx_v_d, ((PyObject *)__pyx_n_u_123));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":80
 *         d = <object>thread_dict
 *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
 *         if result is not NULL:             # <<<<<<<<<<<<<<
 *             return <object>result
 *         context = _ParserDictionaryContext()
 */
  __pyx_t_1 = (__pyx_v_result != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":81
 *         result = python.PyDict_GetItem(d, u"_ParserDictionaryContext")
 *         if result is not NULL:
 *             return <object>result             # <<<<<<<<<<<<<<
 *         context = _ParserDictionaryContext()
 *         d[u"_ParserDictionaryContext"] = context
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    if (!(likely(((((PyObject *)__pyx_v_result)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_result), __pyx_ptype_4lxml_5etree__ParserDictionaryContext))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_INCREF(((PyObject *)__pyx_v_result));
    __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)((PyObject *)__pyx_v_result));
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":82
 *         if result is not NULL:
 *             return <object>result
 *         context = _ParserDictionaryContext()             # <<<<<<<<<<<<<<
 *         d[u"_ParserDictionaryContext"] = context
 *         return context
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ParserDictionaryContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":83
 *             return <object>result
 *         context = _ParserDictionaryContext()
 *         d[u"_ParserDictionaryContext"] = context             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  if (PyObject_SetItem(__pyx_v_d, ((PyObject *)__pyx_n_u_123), ((PyObject *)__pyx_v_context)) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":84
 *         context = _ParserDictionaryContext()
 *         d[u"_ParserDictionaryContext"] = context
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef void setDefaultParser(self, _BaseParser parser):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = __pyx_v_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ParserDictionaryContext._findThreadParserContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_d);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":86
 *         return context
 * 
 *     cdef void setDefaultParser(self, _BaseParser parser):             # <<<<<<<<<<<<<<
 *         u"Set the default parser for the current thread"
 *         cdef _ParserDictionaryContext context
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("setDefaultParser");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":89
 *         u"Set the default parser for the current thread"
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         context._default_parser = parser
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":90
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()
 *         context._default_parser = parser             # <<<<<<<<<<<<<<
 * 
 *     cdef _BaseParser getDefaultParser(self):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
  __Pyx_GOTREF(__pyx_v_context->_default_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_default_parser));
  __pyx_v_context->_default_parser = __pyx_v_parser;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.setDefaultParser");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":92
 *         context._default_parser = parser
 * 
 *     cdef _BaseParser getDefaultParser(self):             # <<<<<<<<<<<<<<
 *         u"Return (or create) the default parser of the current thread"
 *         cdef _ParserDictionaryContext context
 */

static  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("getDefaultParser");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":95
 *         u"Return (or create) the default parser of the current thread"
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         if context._default_parser is None:
 *             if self._default_parser is None:
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":96
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()
 *         if context._default_parser is None:             # <<<<<<<<<<<<<<
 *             if self._default_parser is None:
 *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_context->_default_parser) == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":97
 *         context = self._findThreadParserContext()
 *         if context._default_parser is None:
 *             if self._default_parser is None:             # <<<<<<<<<<<<<<
 *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
 *             if context is not self:
 */
    __pyx_t_2 = (((PyObject *)__pyx_v_self->_default_parser) == Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":98
 *         if context._default_parser is None:
 *             if self._default_parser is None:
 *                 self._default_parser = __DEFAULT_XML_PARSER._copy()             # <<<<<<<<<<<<<<
 *             if context is not self:
 *                 context._default_parser = self._default_parser._copy()
 */
      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._copy(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->_default_parser);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_default_parser));
      __pyx_v_self->_default_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
      __pyx_t_1 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":99
 *             if self._default_parser is None:
 *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
 *             if context is not self:             # <<<<<<<<<<<<<<
 *                 context._default_parser = self._default_parser._copy()
 *         return context._default_parser
 */
    __pyx_t_2 = (__pyx_v_context != __pyx_v_self);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":100
 *                 self._default_parser = __DEFAULT_XML_PARSER._copy()
 *             if context is not self:
 *                 context._default_parser = self._default_parser._copy()             # <<<<<<<<<<<<<<
 *         return context._default_parser
 * 
 */
      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->_default_parser->__pyx_vtab)->_copy(__pyx_v_self->_default_parser)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_context->_default_parser);
      __Pyx_DECREF(((PyObject *)__pyx_v_context->_default_parser));
      __pyx_v_context->_default_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_1);
      __pyx_t_1 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":101
 *             if context is not self:
 *                 context._default_parser = self._default_parser._copy()
 *         return context._default_parser             # <<<<<<<<<<<<<<
 * 
 *     cdef tree.xmlDict* _getThreadDict(self, tree.xmlDict* default):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context->_default_parser));
  __pyx_r = __pyx_v_context->_default_parser;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ParserDictionaryContext.getDefaultParser");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":103
 *         return context._default_parser
 * 
 *     cdef tree.xmlDict* _getThreadDict(self, tree.xmlDict* default):             # <<<<<<<<<<<<<<
 *         u"Return the thread-local dict or create a new one if necessary."
 *         cdef _ParserDictionaryContext context
 */

static  xmlDict *__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDict *__pyx_v_default) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  xmlDict *__pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_getThreadDict");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":106
 *         u"Return the thread-local dict or create a new one if necessary."
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         if context._c_dict is NULL:
 *             # thread dict not yet set up => use default or create a new one
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":107
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()
 *         if context._c_dict is NULL:             # <<<<<<<<<<<<<<
 *             # thread dict not yet set up => use default or create a new one
 *             if default is not NULL:
 */
  __pyx_t_2 = (__pyx_v_context->_c_dict == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":109
 *         if context._c_dict is NULL:
 *             # thread dict not yet set up => use default or create a new one
 *             if default is not NULL:             # <<<<<<<<<<<<<<
 *                 context._c_dict = default
 *                 xmlparser.xmlDictReference(default)
 */
    __pyx_t_2 = (__pyx_v_default != NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":110
 *             # thread dict not yet set up => use default or create a new one
 *             if default is not NULL:
 *                 context._c_dict = default             # <<<<<<<<<<<<<<
 *                 xmlparser.xmlDictReference(default)
 *                 return default
 */
      __pyx_v_context->_c_dict = __pyx_v_default;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":111
 *             if default is not NULL:
 *                 context._c_dict = default
 *                 xmlparser.xmlDictReference(default)             # <<<<<<<<<<<<<<
 *                 return default
 *             if self._c_dict is NULL:
 */
      xmlDictReference(__pyx_v_default);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":112
 *                 context._c_dict = default
 *                 xmlparser.xmlDictReference(default)
 *                 return default             # <<<<<<<<<<<<<<
 *             if self._c_dict is NULL:
 *                 self._c_dict = xmlparser.xmlDictCreate()
 */
      __pyx_r = __pyx_v_default;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":113
 *                 xmlparser.xmlDictReference(default)
 *                 return default
 *             if self._c_dict is NULL:             # <<<<<<<<<<<<<<
 *                 self._c_dict = xmlparser.xmlDictCreate()
 *             if context is not self:
 */
    __pyx_t_2 = (__pyx_v_self->_c_dict == NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":114
 *                 return default
 *             if self._c_dict is NULL:
 *                 self._c_dict = xmlparser.xmlDictCreate()             # <<<<<<<<<<<<<<
 *             if context is not self:
 *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)
 */
      __pyx_v_self->_c_dict = xmlDictCreate();
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":115
 *             if self._c_dict is NULL:
 *                 self._c_dict = xmlparser.xmlDictCreate()
 *             if context is not self:             # <<<<<<<<<<<<<<
 *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)
 *         return context._c_dict
 */
    __pyx_t_2 = (__pyx_v_context != __pyx_v_self);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":116
 *                 self._c_dict = xmlparser.xmlDictCreate()
 *             if context is not self:
 *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)             # <<<<<<<<<<<<<<
 *         return context._c_dict
 * 
 */
      __pyx_v_context->_c_dict = xmlDictCreateSub(__pyx_v_self->_c_dict);
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":117
 *             if context is not self:
 *                 context._c_dict = xmlparser.xmlDictCreateSub(self._c_dict)
 *         return context._c_dict             # <<<<<<<<<<<<<<
 * 
 *     cdef void initThreadDictRef(self, tree.xmlDict** c_dict_ref):
 */
  __pyx_r = __pyx_v_context->_c_dict;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext._getThreadDict");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":119
 *         return context._c_dict
 * 
 *     cdef void initThreadDictRef(self, tree.xmlDict** c_dict_ref):             # <<<<<<<<<<<<<<
 *         cdef tree.xmlDict* c_dict
 *         cdef tree.xmlDict* c_thread_dict
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDict **__pyx_v_c_dict_ref) {
  xmlDict *__pyx_v_c_dict;
  xmlDict *__pyx_v_c_thread_dict;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("initThreadDictRef");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":122
 *         cdef tree.xmlDict* c_dict
 *         cdef tree.xmlDict* c_thread_dict
 *         c_dict = c_dict_ref[0]             # <<<<<<<<<<<<<<
 *         c_thread_dict = self._getThreadDict(c_dict)
 *         if c_dict is c_thread_dict:
 */
  __pyx_v_c_dict = (__pyx_v_c_dict_ref[0]);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":123
 *         cdef tree.xmlDict* c_thread_dict
 *         c_dict = c_dict_ref[0]
 *         c_thread_dict = self._getThreadDict(c_dict)             # <<<<<<<<<<<<<<
 *         if c_dict is c_thread_dict:
 *             return
 */
  __pyx_v_c_thread_dict = ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_getThreadDict(__pyx_v_self, __pyx_v_c_dict);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":124
 *         c_dict = c_dict_ref[0]
 *         c_thread_dict = self._getThreadDict(c_dict)
 *         if c_dict is c_thread_dict:             # <<<<<<<<<<<<<<
 *             return
 *         if c_dict is not NULL:
 */
  __pyx_t_1 = (__pyx_v_c_dict == __pyx_v_c_thread_dict);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":125
 *         c_thread_dict = self._getThreadDict(c_dict)
 *         if c_dict is c_thread_dict:
 *             return             # <<<<<<<<<<<<<<
 *         if c_dict is not NULL:
 *             xmlparser.xmlDictFree(c_dict)
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":126
 *         if c_dict is c_thread_dict:
 *             return
 *         if c_dict is not NULL:             # <<<<<<<<<<<<<<
 *             xmlparser.xmlDictFree(c_dict)
 *         c_dict_ref[0] = c_thread_dict
 */
  __pyx_t_1 = (__pyx_v_c_dict != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":127
 *             return
 *         if c_dict is not NULL:
 *             xmlparser.xmlDictFree(c_dict)             # <<<<<<<<<<<<<<
 *         c_dict_ref[0] = c_thread_dict
 *         xmlparser.xmlDictReference(c_thread_dict)
 */
    xmlDictFree(__pyx_v_c_dict);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":128
 *         if c_dict is not NULL:
 *             xmlparser.xmlDictFree(c_dict)
 *         c_dict_ref[0] = c_thread_dict             # <<<<<<<<<<<<<<
 *         xmlparser.xmlDictReference(c_thread_dict)
 * 
 */
  (__pyx_v_c_dict_ref[0]) = __pyx_v_c_thread_dict;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":129
 *             xmlparser.xmlDictFree(c_dict)
 *         c_dict_ref[0] = c_thread_dict
 *         xmlparser.xmlDictReference(c_thread_dict)             # <<<<<<<<<<<<<<
 * 
 *     cdef void initParserDict(self, xmlparser.xmlParserCtxt* pctxt):
 */
  xmlDictReference(__pyx_v_c_thread_dict);

  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":131
 *         xmlparser.xmlDictReference(c_thread_dict)
 * 
 *     cdef void initParserDict(self, xmlparser.xmlParserCtxt* pctxt):             # <<<<<<<<<<<<<<
 *         u"Assure we always use the same string dictionary."
 *         self.initThreadDictRef(&pctxt.dict)
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlParserCtxt *__pyx_v_pctxt) {
  __Pyx_RefNannySetupContext("initParserDict");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":133
 *     cdef void initParserDict(self, xmlparser.xmlParserCtxt* pctxt):
 *         u"Assure we always use the same string dictionary."
 *         self.initThreadDictRef(&pctxt.dict)             # <<<<<<<<<<<<<<
 * 
 *     cdef void initXPathParserDict(self, xpath.xmlXPathContext* pctxt):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->initThreadDictRef(__pyx_v_self, (&__pyx_v_pctxt->dict));

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":135
 *         self.initThreadDictRef(&pctxt.dict)
 * 
 *     cdef void initXPathParserDict(self, xpath.xmlXPathContext* pctxt):             # <<<<<<<<<<<<<<
 *         u"Assure we always use the same string dictionary."
 *         self.initThreadDictRef(&pctxt.dict)
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlXPathContext *__pyx_v_pctxt) {
  __Pyx_RefNannySetupContext("initXPathParserDict");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":137
 *     cdef void initXPathParserDict(self, xpath.xmlXPathContext* pctxt):
 *         u"Assure we always use the same string dictionary."
 *         self.initThreadDictRef(&pctxt.dict)             # <<<<<<<<<<<<<<
 * 
 *     cdef void initDocDict(self, xmlDoc* result):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->initThreadDictRef(__pyx_v_self, (&__pyx_v_pctxt->dict));

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":139
 *         self.initThreadDictRef(&pctxt.dict)
 * 
 *     cdef void initDocDict(self, xmlDoc* result):             # <<<<<<<<<<<<<<
 *         u"Store dict of last object parsed if no shared dict yet"
 *         # XXX We also free the result dict here if there already was one.
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, xmlDoc *__pyx_v_result) {
  __Pyx_RefNannySetupContext("initDocDict");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":144
 *         # This case should only occur for new documents with empty dicts,
 *         # otherwise we'd free data that's in use => segfault
 *         self.initThreadDictRef(&result.dict)             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext findImpliedContext(self):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->initThreadDictRef(__pyx_v_self, (&__pyx_v_result->dict));

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":146
 *         self.initThreadDictRef(&result.dict)
 * 
 *     cdef _ParserContext findImpliedContext(self):             # <<<<<<<<<<<<<<
 *         u"""Return any current implied xml parser context for the current
 *         thread.  This is used when the resolver functions are called
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_24_ParserDictionaryContext_findImpliedContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_implied_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  __Pyx_RefNannySetupContext("findImpliedContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_implied_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":156
 * 
 *         # see if we have a current implied parser
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(context._implied_parser_contexts):
 *             implied_context = context._implied_parser_contexts[-1]
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":157
 *         # see if we have a current implied parser
 *         context = self._findThreadParserContext()
 *         if python.PyList_GET_SIZE(context._implied_parser_contexts):             # <<<<<<<<<<<<<<
 *             implied_context = context._implied_parser_contexts[-1]
 *             return implied_context
 */
  __pyx_t_2 = PyList_GET_SIZE(((PyObject *)__pyx_v_context->_implied_parser_contexts));
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":158
 *         context = self._findThreadParserContext()
 *         if python.PyList_GET_SIZE(context._implied_parser_contexts):
 *             implied_context = context._implied_parser_contexts[-1]             # <<<<<<<<<<<<<<
 *             return implied_context
 *         return None
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_context->_implied_parser_contexts), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ParserContext))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_implied_context));
    __pyx_v_implied_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":159
 *         if python.PyList_GET_SIZE(context._implied_parser_contexts):
 *             implied_context = context._implied_parser_contexts[-1]
 *             return implied_context             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_implied_context));
    __pyx_r = __pyx_v_implied_context;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":160
 *             implied_context = context._implied_parser_contexts[-1]
 *             return implied_context
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     cdef void pushImpliedContextFromParser(self, _BaseParser parser):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(Py_None);
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None);
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ParserDictionaryContext.findImpliedContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_implied_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":162
 *         return None
 * 
 *     cdef void pushImpliedContextFromParser(self, _BaseParser parser):             # <<<<<<<<<<<<<<
 *         u"Push a new implied context object taken from the parser."
 *         if parser is not None:
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFromParser(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("pushImpliedContextFromParser");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":164
 *     cdef void pushImpliedContextFromParser(self, _BaseParser parser):
 *         u"Push a new implied context object taken from the parser."
 *         if parser is not None:             # <<<<<<<<<<<<<<
 *             self.pushImpliedContext(parser._getParserContext())
 *         else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":165
 *         u"Push a new implied context object taken from the parser."
 *         if parser is not None:
 *             self.pushImpliedContext(parser._getParserContext())             # <<<<<<<<<<<<<<
 *         else:
 *             self.pushImpliedContext(None)
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_parser->__pyx_vtab)->_getParserContext(__pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->pushImpliedContext(__pyx_v_self, ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2));
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":167
 *             self.pushImpliedContext(parser._getParserContext())
 *         else:
 *             self.pushImpliedContext(None)             # <<<<<<<<<<<<<<
 * 
 *     cdef void pushImpliedContext(self, _ParserContext parser_context):
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->pushImpliedContext(__pyx_v_self, ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None));
  }
  __pyx_L3:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.pushImpliedContextFromParser");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":169
 *             self.pushImpliedContext(None)
 * 
 *     cdef void pushImpliedContext(self, _ParserContext parser_context):             # <<<<<<<<<<<<<<
 *         u"Push a new implied context object."
 *         cdef _ParserDictionaryContext context
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_parser_context) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("pushImpliedContext");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":172
 *         u"Push a new implied context object."
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         context._implied_parser_contexts.append(parser_context)
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":173
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()
 *         context._implied_parser_contexts.append(parser_context)             # <<<<<<<<<<<<<<
 * 
 *     cdef void popImpliedContext(self):
 */
  if (unlikely(__pyx_v_context->_implied_parser_contexts == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = PyList_Append(((PyObject *)__pyx_v_context->_implied_parser_contexts), ((PyObject *)__pyx_v_parser_context)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.pushImpliedContext");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":175
 *         context._implied_parser_contexts.append(parser_context)
 * 
 *     cdef void popImpliedContext(self):             # <<<<<<<<<<<<<<
 *         u"Pop the current implied context object."
 *         cdef _ParserDictionaryContext context
 */

static  void __pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *__pyx_v_context;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("popImpliedContext");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":178
 *         u"Pop the current implied context object."
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()             # <<<<<<<<<<<<<<
 *         context._implied_parser_contexts.pop()
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_self->__pyx_vtab)->_findThreadParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":179
 *         cdef _ParserDictionaryContext context
 *         context = self._findThreadParserContext()
 *         context._implied_parser_contexts.pop()             # <<<<<<<<<<<<<<
 * 
 * cdef _ParserDictionaryContext __GLOBAL_PARSER_CONTEXT
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_implied_parser_contexts), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._ParserDictionaryContext.popImpliedContext");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":185
 * __GLOBAL_PARSER_CONTEXT.initMainParserContext()
 * 
 * cdef int _checkThreadDict(tree.xmlDict* c_dict):             # <<<<<<<<<<<<<<
 *     u"""Check that c_dict is either the local thread dictionary or the global
 *     parent dictionary.
 */

static  int __pyx_f_4lxml_5etree__checkThreadDict(xmlDict *__pyx_v_c_dict) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_checkThreadDict");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":191
 *     #if __GLOBAL_PARSER_CONTEXT._c_dict is c_dict:
 *     #    return 1 # main thread
 *     if __GLOBAL_PARSER_CONTEXT._getThreadDict(NULL) is c_dict:             # <<<<<<<<<<<<<<
 *         return 1 # local thread dict
 *     return 0
 */
  __pyx_t_1 = (((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->_getThreadDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, NULL) == __pyx_v_c_dict);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":192
 *     #    return 1 # main thread
 *     if __GLOBAL_PARSER_CONTEXT._getThreadDict(NULL) is c_dict:
 *         return 1 # local thread dict             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":193
 *     if __GLOBAL_PARSER_CONTEXT._getThreadDict(NULL) is c_dict:
 *         return 1 # local thread dict
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":203
 * _UNICODE_ENCODING = NULL
 * 
 * cdef void _setupPythonUnicode():             # <<<<<<<<<<<<<<
 *     u"""Sets _UNICODE_ENCODING to the internal encoding name of Python unicode
 *     strings if libxml2 supports reading native Python unicode.  This depends
 */

static  void __pyx_f_4lxml_5etree__setupPythonUnicode(void) {
  xmlCharEncodingHandler *__pyx_v_enchandler;
  Py_ssize_t __pyx_v_l;
  char *__pyx_v_buffer;
  char *__pyx_v_enc;
  PyObject *__pyx_v_utext;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_setupPythonUnicode");
  __pyx_v_utext = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":213
 *     cdef char* buffer
 *     cdef char* enc
 *     utext = python.PyUnicode_DecodeUTF8("<test/>", 7, NULL)             # <<<<<<<<<<<<<<
 *     l = python.PyUnicode_GET_DATA_SIZE(utext)
 *     buffer = python.PyUnicode_AS_DATA(utext)
 */
  __pyx_t_1 = PyUnicode_DecodeUTF8(__pyx_k_125, 7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_utext);
  __pyx_v_utext = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":214
 *     cdef char* enc
 *     utext = python.PyUnicode_DecodeUTF8("<test/>", 7, NULL)
 *     l = python.PyUnicode_GET_DATA_SIZE(utext)             # <<<<<<<<<<<<<<
 *     buffer = python.PyUnicode_AS_DATA(utext)
 *     enc = _findEncodingName(buffer, l)
 */
  __pyx_v_l = PyUnicode_GET_DATA_SIZE(__pyx_v_utext);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":215
 *     utext = python.PyUnicode_DecodeUTF8("<test/>", 7, NULL)
 *     l = python.PyUnicode_GET_DATA_SIZE(utext)
 *     buffer = python.PyUnicode_AS_DATA(utext)             # <<<<<<<<<<<<<<
 *     enc = _findEncodingName(buffer, l)
 *     if enc == NULL:
 */
  __pyx_v_buffer = PyUnicode_AS_DATA(__pyx_v_utext);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":216
 *     l = python.PyUnicode_GET_DATA_SIZE(utext)
 *     buffer = python.PyUnicode_AS_DATA(utext)
 *     enc = _findEncodingName(buffer, l)             # <<<<<<<<<<<<<<
 *     if enc == NULL:
 *         # apparently, libxml2 can't detect UTF-16 on some systems
 */
  __pyx_v_enc = __pyx_f_4lxml_5etree__findEncodingName(__pyx_v_buffer, __pyx_v_l);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":217
 *     buffer = python.PyUnicode_AS_DATA(utext)
 *     enc = _findEncodingName(buffer, l)
 *     if enc == NULL:             # <<<<<<<<<<<<<<
 *         # apparently, libxml2 can't detect UTF-16 on some systems
 *         if l >= 4 and \
 */
  __pyx_t_2 = (__pyx_v_enc == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":219
 *     if enc == NULL:
 *         # apparently, libxml2 can't detect UTF-16 on some systems
 *         if l >= 4 and \             # <<<<<<<<<<<<<<
 *                buffer[0] == c'<' and buffer[1] == c'\0' and \
 *                buffer[2] == c't' and buffer[3] == c'\0':
 */
    __pyx_t_2 = (__pyx_v_l >= 4);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":220
 *         # apparently, libxml2 can't detect UTF-16 on some systems
 *         if l >= 4 and \
 *                buffer[0] == c'<' and buffer[1] == c'\0' and \             # <<<<<<<<<<<<<<
 *                buffer[2] == c't' and buffer[3] == c'\0':
 *             enc = "UTF-16LE"
 */
      __pyx_t_3 = ((__pyx_v_buffer[0]) == '<');
      if (__pyx_t_3) {
        __pyx_t_4 = ((__pyx_v_buffer[1]) == '\x00');
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":221
 *         if l >= 4 and \
 *                buffer[0] == c'<' and buffer[1] == c'\0' and \
 *                buffer[2] == c't' and buffer[3] == c'\0':             # <<<<<<<<<<<<<<
 *             enc = "UTF-16LE"
 *         elif l >= 4 and \
 */
          __pyx_t_5 = ((__pyx_v_buffer[2]) == 't');
          if (__pyx_t_5) {
            __pyx_t_6 = ((__pyx_v_buffer[3]) == '\x00');
            __pyx_t_7 = __pyx_t_6;
          } else {
            __pyx_t_7 = __pyx_t_5;
          }
          __pyx_t_5 = __pyx_t_7;
        } else {
          __pyx_t_5 = __pyx_t_4;
        }
        __pyx_t_4 = __pyx_t_5;
      } else {
        __pyx_t_4 = __pyx_t_3;
      }
      __pyx_t_3 = __pyx_t_4;
    } else {
      __pyx_t_3 = __pyx_t_2;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":222
 *                buffer[0] == c'<' and buffer[1] == c'\0' and \
 *                buffer[2] == c't' and buffer[3] == c'\0':
 *             enc = "UTF-16LE"             # <<<<<<<<<<<<<<
 *         elif l >= 4 and \
 *                buffer[0] == c'\0' and buffer[1] == c'<' and \
 */
      __pyx_v_enc = __pyx_k_126;
      goto __pyx_L4;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":223
 *                buffer[2] == c't' and buffer[3] == c'\0':
 *             enc = "UTF-16LE"
 *         elif l >= 4 and \             # <<<<<<<<<<<<<<
 *                buffer[0] == c'\0' and buffer[1] == c'<' and \
 *                buffer[2] == c'\0' and buffer[3] == c't':
 */
    __pyx_t_3 = (__pyx_v_l >= 4);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":224
 *             enc = "UTF-16LE"
 *         elif l >= 4 and \
 *                buffer[0] == c'\0' and buffer[1] == c'<' and \             # <<<<<<<<<<<<<<
 *                buffer[2] == c'\0' and buffer[3] == c't':
 *             enc = "UTF-16BE"
 */
      __pyx_t_2 = ((__pyx_v_buffer[0]) == '\x00');
      if (__pyx_t_2) {
        __pyx_t_4 = ((__pyx_v_buffer[1]) == '<');
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":225
 *         elif l >= 4 and \
 *                buffer[0] == c'\0' and buffer[1] == c'<' and \
 *                buffer[2] == c'\0' and buffer[3] == c't':             # <<<<<<<<<<<<<<
 *             enc = "UTF-16BE"
 *         else:
 */
          __pyx_t_5 = ((__pyx_v_buffer[2]) == '\x00');
          if (__pyx_t_5) {
            __pyx_t_7 = ((__pyx_v_buffer[3]) == 't');
            __pyx_t_6 = __pyx_t_7;
          } else {
            __pyx_t_6 = __pyx_t_5;
          }
          __pyx_t_5 = __pyx_t_6;
        } else {
          __pyx_t_5 = __pyx_t_4;
        }
        __pyx_t_4 = __pyx_t_5;
      } else {
        __pyx_t_4 = __pyx_t_2;
      }
      __pyx_t_2 = __pyx_t_4;
    } else {
      __pyx_t_2 = __pyx_t_3;
    }
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":226
 *                buffer[0] == c'\0' and buffer[1] == c'<' and \
 *                buffer[2] == c'\0' and buffer[3] == c't':
 *             enc = "UTF-16BE"             # <<<<<<<<<<<<<<
 *         else:
 *             # not my fault, it's YOUR broken system :)
 */
      __pyx_v_enc = __pyx_k_127;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":229
 *         else:
 *             # not my fault, it's YOUR broken system :)
 *             return             # <<<<<<<<<<<<<<
 *     enchandler = tree.xmlFindCharEncodingHandler(enc)
 *     if enchandler is not NULL:
 */
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":230
 *             # not my fault, it's YOUR broken system :)
 *             return
 *     enchandler = tree.xmlFindCharEncodingHandler(enc)             # <<<<<<<<<<<<<<
 *     if enchandler is not NULL:
 *         global _UNICODE_ENCODING
 */
  __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_enc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":231
 *             return
 *     enchandler = tree.xmlFindCharEncodingHandler(enc)
 *     if enchandler is not NULL:             # <<<<<<<<<<<<<<
 *         global _UNICODE_ENCODING
 *         tree.xmlCharEncCloseFunc(enchandler)
 */
  __pyx_t_2 = (__pyx_v_enchandler != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":233
 *     if enchandler is not NULL:
 *         global _UNICODE_ENCODING
 *         tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
 *         _UNICODE_ENCODING = enc
 * 
 */
    xmlCharEncCloseFunc(__pyx_v_enchandler);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":234
 *         global _UNICODE_ENCODING
 *         tree.xmlCharEncCloseFunc(enchandler)
 *         _UNICODE_ENCODING = enc             # <<<<<<<<<<<<<<
 * 
 * cdef char* _findEncodingName(char* buffer, int size):
 */
    __pyx_v_4lxml_5etree__UNICODE_ENCODING = __pyx_v_enc;
    goto __pyx_L5;
  }
  __pyx_L5:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree._setupPythonUnicode");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_utext);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":236
 *         _UNICODE_ENCODING = enc
 * 
 * cdef char* _findEncodingName(char* buffer, int size):             # <<<<<<<<<<<<<<
 *     u"Work around bug in libxml2: find iconv name of encoding on our own."
 *     cdef tree.xmlCharEncoding enc
 */

static  char *__pyx_f_4lxml_5etree__findEncodingName(char *__pyx_v_buffer, int __pyx_v_size) {
  xmlCharEncoding __pyx_v_enc;
  char *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_findEncodingName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":239
 *     u"Work around bug in libxml2: find iconv name of encoding on our own."
 *     cdef tree.xmlCharEncoding enc
 *     enc = tree.xmlDetectCharEncoding(buffer, size)             # <<<<<<<<<<<<<<
 *     if enc == tree.XML_CHAR_ENCODING_UTF16LE:
 *         return "UTF-16LE"
 */
  __pyx_v_enc = xmlDetectCharEncoding(__pyx_v_buffer, __pyx_v_size);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":240
 *     cdef tree.xmlCharEncoding enc
 *     enc = tree.xmlDetectCharEncoding(buffer, size)
 *     if enc == tree.XML_CHAR_ENCODING_UTF16LE:             # <<<<<<<<<<<<<<
 *         return "UTF-16LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:
 */
  __pyx_t_1 = (__pyx_v_enc == XML_CHAR_ENCODING_UTF16LE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":241
 *     enc = tree.xmlDetectCharEncoding(buffer, size)
 *     if enc == tree.XML_CHAR_ENCODING_UTF16LE:
 *         return "UTF-16LE"             # <<<<<<<<<<<<<<
 *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:
 *         return "UTF-16BE"
 */
    __pyx_r = __pyx_k_126;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":242
 *     if enc == tree.XML_CHAR_ENCODING_UTF16LE:
 *         return "UTF-16LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:             # <<<<<<<<<<<<<<
 *         return "UTF-16BE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
 */
  __pyx_t_1 = (__pyx_v_enc == XML_CHAR_ENCODING_UTF16BE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":243
 *         return "UTF-16LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:
 *         return "UTF-16BE"             # <<<<<<<<<<<<<<
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
 *         return "UCS-4LE"
 */
    __pyx_r = __pyx_k_127;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":244
 *     elif enc == tree.XML_CHAR_ENCODING_UTF16BE:
 *         return "UTF-16BE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:             # <<<<<<<<<<<<<<
 *         return "UCS-4LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
 */
  __pyx_t_1 = (__pyx_v_enc == XML_CHAR_ENCODING_UCS4LE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":245
 *         return "UTF-16BE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
 *         return "UCS-4LE"             # <<<<<<<<<<<<<<
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
 *         return "UCS-4BE"
 */
    __pyx_r = __pyx_k_128;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":246
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4LE:
 *         return "UCS-4LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:             # <<<<<<<<<<<<<<
 *         return "UCS-4BE"
 *     elif enc == tree.XML_CHAR_ENCODING_NONE:
 */
  __pyx_t_1 = (__pyx_v_enc == XML_CHAR_ENCODING_UCS4BE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":247
 *         return "UCS-4LE"
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
 *         return "UCS-4BE"             # <<<<<<<<<<<<<<
 *     elif enc == tree.XML_CHAR_ENCODING_NONE:
 *         return NULL
 */
    __pyx_r = __pyx_k_129;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":248
 *     elif enc == tree.XML_CHAR_ENCODING_UCS4BE:
 *         return "UCS-4BE"
 *     elif enc == tree.XML_CHAR_ENCODING_NONE:             # <<<<<<<<<<<<<<
 *         return NULL
 *     else:
 */
  __pyx_t_1 = (__pyx_v_enc == XML_CHAR_ENCODING_NONE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":249
 *         return "UCS-4BE"
 *     elif enc == tree.XML_CHAR_ENCODING_NONE:
 *         return NULL             # <<<<<<<<<<<<<<
 *     else:
 *         return tree.xmlGetCharEncodingName(enc)
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":251
 *         return NULL
 *     else:
 *         return tree.xmlGetCharEncodingName(enc)             # <<<<<<<<<<<<<<
 * 
 * _setupPythonUnicode()
 */
    __pyx_r = xmlGetCharEncodingName(__pyx_v_enc);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":267
 *     cdef Py_ssize_t _bytes_read
 *     cdef char* _c_url
 *     def __init__(self, filelike, exc_context, url, encoding):             # <<<<<<<<<<<<<<
 *         self._exc_context = exc_context
 *         self._filelike = filelike
 */

static int __pyx_pf_4lxml_5etree_18_FileReaderContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_18_FileReaderContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filelike = 0;
  PyObject *__pyx_v_exc_context = 0;
  PyObject *__pyx_v_url = 0;
  PyObject *__pyx_v_encoding = 0;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filelike,&__pyx_n_s__exc_context,&__pyx_n_s__url,&__pyx_n_s__encoding,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filelike);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_context);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__url);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_filelike = values[0];
    __pyx_v_exc_context = values[1];
    __pyx_v_url = values[2];
    __pyx_v_encoding = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_filelike = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_exc_context = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_url = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_encoding = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._FileReaderContext.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_filelike);
  __Pyx_INCREF(__pyx_v_exc_context);
  __Pyx_INCREF(__pyx_v_url);
  __Pyx_INCREF(__pyx_v_encoding);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":268
 *     cdef char* _c_url
 *     def __init__(self, filelike, exc_context, url, encoding):
 *         self._exc_context = exc_context             # <<<<<<<<<<<<<<
 *         self._filelike = filelike
 *         self._encoding = encoding
 */
  if (!(likely(((__pyx_v_exc_context) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_exc_context);
  __Pyx_GIVEREF(__pyx_v_exc_context);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_exc_context);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_exc_context));
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":269
 *     def __init__(self, filelike, exc_context, url, encoding):
 *         self._exc_context = exc_context
 *         self._filelike = filelike             # <<<<<<<<<<<<<<
 *         self._encoding = encoding
 *         if url is None:
 */
  __Pyx_INCREF(__pyx_v_filelike);
  __Pyx_GIVEREF(__pyx_v_filelike);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_filelike);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_filelike);
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_filelike = __pyx_v_filelike;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":270
 *         self._exc_context = exc_context
 *         self._filelike = filelike
 *         self._encoding = encoding             # <<<<<<<<<<<<<<
 *         if url is None:
 *             self._c_url = NULL
 */
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_GIVEREF(__pyx_v_encoding);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_encoding);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_encoding);
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_encoding = __pyx_v_encoding;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":271
 *         self._filelike = filelike
 *         self._encoding = encoding
 *         if url is None:             # <<<<<<<<<<<<<<
 *             self._c_url = NULL
 *         else:
 */
  __pyx_t_1 = (__pyx_v_url == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":272
 *         self._encoding = encoding
 *         if url is None:
 *             self._c_url = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             url = _encodeFilename(url)
 */
    ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_c_url = NULL;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":274
 *             self._c_url = NULL
 *         else:
 *             url = _encodeFilename(url)             # <<<<<<<<<<<<<<
 *             self._c_url = _cstr(url)
 *         self._url = url
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":275
 *         else:
 *             url = _encodeFilename(url)
 *             self._c_url = _cstr(url)             # <<<<<<<<<<<<<<
 *         self._url = url
 *         self._bytes  = ''
 */
    ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_c_url = PyString_AS_STRING(__pyx_v_url);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":276
 *             url = _encodeFilename(url)
 *             self._c_url = _cstr(url)
 *         self._url = url             # <<<<<<<<<<<<<<
 *         self._bytes  = ''
 *         self._bytes_read = 0
 */
  __Pyx_INCREF(__pyx_v_url);
  __Pyx_GIVEREF(__pyx_v_url);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_url);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_url);
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_url = __pyx_v_url;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":277
 *             self._c_url = _cstr(url)
 *         self._url = url
 *         self._bytes  = ''             # <<<<<<<<<<<<<<
 *         self._bytes_read = 0
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_bytes);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_bytes);
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_bytes = ((PyObject *)__pyx_kp_s_14);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":278
 *         self._url = url
 *         self._bytes  = ''
 *         self._bytes_read = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlparser.xmlParserInputBuffer* _createParserInputBuffer(self):
 */
  ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_self)->_bytes_read = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._FileReaderContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_filelike);
  __Pyx_DECREF(__pyx_v_exc_context);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":280
 *         self._bytes_read = 0
 * 
 *     cdef xmlparser.xmlParserInputBuffer* _createParserInputBuffer(self):             # <<<<<<<<<<<<<<
 *         cdef cstd.FILE* c_stream
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 */

static  xmlParserInputBuffer *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInputBuffer(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self) {
  FILE *__pyx_v_c_stream;
  xmlParserInputBuffer *__pyx_v_c_buffer;
  xmlParserInputBuffer *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_createParserInputBuffer");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":283
 *         cdef cstd.FILE* c_stream
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = xmlparser.xmlAllocParserInputBuffer(0)             # <<<<<<<<<<<<<<
 *         c_stream = python.PyFile_AsFile(self._filelike)
 *         if c_stream is NULL:
 */
  __pyx_v_c_buffer = xmlAllocParserInputBuffer(0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":284
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = xmlparser.xmlAllocParserInputBuffer(0)
 *         c_stream = python.PyFile_AsFile(self._filelike)             # <<<<<<<<<<<<<<
 *         if c_stream is NULL:
 *             c_buffer.readcallback  = _readFilelikeParser
 */
  __pyx_v_c_stream = PyFile_AsFile(__pyx_v_self->_filelike);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":285
 *         c_buffer = xmlparser.xmlAllocParserInputBuffer(0)
 *         c_stream = python.PyFile_AsFile(self._filelike)
 *         if c_stream is NULL:             # <<<<<<<<<<<<<<
 *             c_buffer.readcallback  = _readFilelikeParser
 *             c_buffer.context = <python.PyObject*>self
 */
  __pyx_t_1 = (__pyx_v_c_stream == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":286
 *         c_stream = python.PyFile_AsFile(self._filelike)
 *         if c_stream is NULL:
 *             c_buffer.readcallback  = _readFilelikeParser             # <<<<<<<<<<<<<<
 *             c_buffer.context = <python.PyObject*>self
 *         else:
 */
    __pyx_v_c_buffer->readcallback = __pyx_f_4lxml_5etree__readFilelikeParser;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":287
 *         if c_stream is NULL:
 *             c_buffer.readcallback  = _readFilelikeParser
 *             c_buffer.context = <python.PyObject*>self             # <<<<<<<<<<<<<<
 *         else:
 *             c_buffer.readcallback  = _readFileParser
 */
    __pyx_v_c_buffer->context = ((PyObject *)__pyx_v_self);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":289
 *             c_buffer.context = <python.PyObject*>self
 *         else:
 *             c_buffer.readcallback  = _readFileParser             # <<<<<<<<<<<<<<
 *             c_buffer.context = c_stream
 *         return c_buffer
 */
    __pyx_v_c_buffer->readcallback = __pyx_f_4lxml_5etree__readFileParser;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":290
 *         else:
 *             c_buffer.readcallback  = _readFileParser
 *             c_buffer.context = c_stream             # <<<<<<<<<<<<<<
 *         return c_buffer
 * 
 */
    __pyx_v_c_buffer->context = __pyx_v_c_stream;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":291
 *             c_buffer.readcallback  = _readFileParser
 *             c_buffer.context = c_stream
 *         return c_buffer             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlparser.xmlParserInput* _createParserInput(
 */
  __pyx_r = __pyx_v_c_buffer;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":293
 *         return c_buffer
 * 
 *     cdef xmlparser.xmlParserInput* _createParserInput(             # <<<<<<<<<<<<<<
 *             self, xmlparser.xmlParserCtxt* ctxt):
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 */

static  xmlParserInput *__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self, xmlParserCtxt *__pyx_v_ctxt) {
  xmlParserInputBuffer *__pyx_v_c_buffer;
  xmlParserInput *__pyx_r;
  __Pyx_RefNannySetupContext("_createParserInput");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":296
 *             self, xmlparser.xmlParserCtxt* ctxt):
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()             # <<<<<<<<<<<<<<
 *         return xmlparser.xmlNewIOInputStream(ctxt, c_buffer, 0)
 * 
 */
  __pyx_v_c_buffer = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)__pyx_v_self->__pyx_vtab)->_createParserInputBuffer(__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":297
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()
 *         return xmlparser.xmlNewIOInputStream(ctxt, c_buffer, 0)             # <<<<<<<<<<<<<<
 * 
 *     cdef tree.xmlDtd* _readDtd(self):
 */
  __pyx_r = xmlNewIOInputStream(__pyx_v_ctxt, __pyx_v_c_buffer, 0);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":299
 *         return xmlparser.xmlNewIOInputStream(ctxt, c_buffer, 0)
 * 
 *     cdef tree.xmlDtd* _readDtd(self):             # <<<<<<<<<<<<<<
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()
 */

static  xmlDtd *__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self) {
  xmlParserInputBuffer *__pyx_v_c_buffer;
  xmlDtd *__pyx_r;
  __Pyx_RefNannySetupContext("_readDtd");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":301
 *     cdef tree.xmlDtd* _readDtd(self):
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
 */
  __pyx_v_c_buffer = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)__pyx_v_self->__pyx_vtab)->_createParserInputBuffer(__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":302
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
 * 
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":303
 *         c_buffer = self._createParserInputBuffer()
 *         with nogil:
 *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _readDoc(self, xmlparser.xmlParserCtxt* ctxt, int options):
 */
      __pyx_r = xmlIOParseDTD(NULL, __pyx_v_c_buffer, 0);
      goto __pyx_L3;
    }
    /*finally:*/ {
      int __pyx_why;
      __pyx_why = 0; goto __pyx_L5;
      __pyx_L3: __pyx_why = 3; goto __pyx_L5;
      __pyx_L5:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":302
 *         cdef xmlparser.xmlParserInputBuffer* c_buffer
 *         c_buffer = self._createParserInputBuffer()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
 * 
 */
      Py_BLOCK_THREADS
      switch (__pyx_why) {
        case 3: goto __pyx_L0;
      }
    }
  }

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":305
 *             return xmlparser.xmlIOParseDTD(NULL, c_buffer, 0)
 * 
 *     cdef xmlDoc* _readDoc(self, xmlparser.xmlParserCtxt* ctxt, int options):             # <<<<<<<<<<<<<<
 *         cdef xmlDoc* result
 *         cdef char* c_encoding
 */

static  xmlDoc *__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self, xmlParserCtxt *__pyx_v_ctxt, int __pyx_v_options) {
  xmlDoc *__pyx_v_result;
  char *__pyx_v_c_encoding;
  FILE *__pyx_v_c_stream;
  xmlInputReadCallback __pyx_v_c_read_callback;
  void *__pyx_v_c_callback_context;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_readDoc");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":313
 *         cdef void* c_callback_context
 * 
 *         if self._encoding is None:             # <<<<<<<<<<<<<<
 *             c_encoding = NULL
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_encoding == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":314
 * 
 *         if self._encoding is None:
 *             c_encoding = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             c_encoding = _cstr(self._encoding)
 */
    __pyx_v_c_encoding = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":316
 *             c_encoding = NULL
 *         else:
 *             c_encoding = _cstr(self._encoding)             # <<<<<<<<<<<<<<
 * 
 *         c_stream = python.PyFile_AsFile(self._filelike)
 */
    __pyx_v_c_encoding = PyString_AS_STRING(__pyx_v_self->_encoding);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":318
 *             c_encoding = _cstr(self._encoding)
 * 
 *         c_stream = python.PyFile_AsFile(self._filelike)             # <<<<<<<<<<<<<<
 *         if c_stream is NULL:
 *             c_read_callback  = _readFilelikeParser
 */
  __pyx_v_c_stream = PyFile_AsFile(__pyx_v_self->_filelike);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":319
 * 
 *         c_stream = python.PyFile_AsFile(self._filelike)
 *         if c_stream is NULL:             # <<<<<<<<<<<<<<
 *             c_read_callback  = _readFilelikeParser
 *             c_callback_context = <python.PyObject*>self
 */
  __pyx_t_1 = (__pyx_v_c_stream == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":320
 *         c_stream = python.PyFile_AsFile(self._filelike)
 *         if c_stream is NULL:
 *             c_read_callback  = _readFilelikeParser             # <<<<<<<<<<<<<<
 *             c_callback_context = <python.PyObject*>self
 *         else:
 */
    __pyx_v_c_read_callback = __pyx_f_4lxml_5etree__readFilelikeParser;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":321
 *         if c_stream is NULL:
 *             c_read_callback  = _readFilelikeParser
 *             c_callback_context = <python.PyObject*>self             # <<<<<<<<<<<<<<
 *         else:
 *             c_read_callback  = _readFileParser
 */
    __pyx_v_c_callback_context = ((PyObject *)__pyx_v_self);
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":323
 *             c_callback_context = <python.PyObject*>self
 *         else:
 *             c_read_callback  = _readFileParser             # <<<<<<<<<<<<<<
 *             c_callback_context = c_stream
 * 
 */
    __pyx_v_c_read_callback = __pyx_f_4lxml_5etree__readFileParser;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":324
 *         else:
 *             c_read_callback  = _readFileParser
 *             c_callback_context = c_stream             # <<<<<<<<<<<<<<
 * 
 *         with nogil:
 */
    __pyx_v_c_callback_context = __pyx_v_c_stream;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":326
 *             c_callback_context = c_stream
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             if ctxt.html:
 *                 result = htmlparser.htmlCtxtReadIO(
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":327
 * 
 *         with nogil:
 *             if ctxt.html:             # <<<<<<<<<<<<<<
 *                 result = htmlparser.htmlCtxtReadIO(
 *                         ctxt, c_read_callback, NULL, c_callback_context,
 */
      __pyx_t_1 = __pyx_v_ctxt->html;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":330
 *                 result = htmlparser.htmlCtxtReadIO(
 *                         ctxt, c_read_callback, NULL, c_callback_context,
 *                         self._c_url, c_encoding, options)             # <<<<<<<<<<<<<<
 *                 if result is not NULL:
 *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:
 */
        __pyx_v_result = htmlCtxtReadIO(__pyx_v_ctxt, __pyx_v_c_read_callback, NULL, __pyx_v_c_callback_context, __pyx_v_self->_c_url, __pyx_v_c_encoding, __pyx_v_options);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":331
 *                         ctxt, c_read_callback, NULL, c_callback_context,
 *                         self._c_url, c_encoding, options)
 *                 if result is not NULL:             # <<<<<<<<<<<<<<
 *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:
 *                         tree.xmlFreeDoc(result)
 */
        __pyx_t_1 = (__pyx_v_result != NULL);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":332
 *                         self._c_url, c_encoding, options)
 *                 if result is not NULL:
 *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
 *                         tree.xmlFreeDoc(result)
 *                         result = NULL
 */
          __pyx_t_1 = (__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_ctxt->dict, __pyx_v_result) < 0);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":333
 *                 if result is not NULL:
 *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:
 *                         tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *                         result = NULL
 *             else:
 */
            xmlFreeDoc(__pyx_v_result);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":334
 *                     if _fixHtmlDictNames(ctxt.dict, result) < 0:
 *                         tree.xmlFreeDoc(result)
 *                         result = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 result = xmlparser.xmlCtxtReadIO(
 */
            __pyx_v_result = NULL;
            goto __pyx_L10;
          }
          __pyx_L10:;
          goto __pyx_L9;
        }
        __pyx_L9:;
        goto __pyx_L8;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":338
 *                 result = xmlparser.xmlCtxtReadIO(
 *                     ctxt, c_read_callback, NULL, c_callback_context,
 *                     self._c_url, c_encoding, options)             # <<<<<<<<<<<<<<
 * 
 *         return result
 */
        __pyx_v_result = xmlCtxtReadIO(__pyx_v_ctxt, __pyx_v_c_read_callback, NULL, __pyx_v_c_callback_context, __pyx_v_self->_c_url, __pyx_v_c_encoding, __pyx_v_options);
      }
      __pyx_L8:;
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":326
 *             c_callback_context = c_stream
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             if ctxt.html:
 *                 result = htmlparser.htmlCtxtReadIO(
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":340
 *                     self._c_url, c_encoding, options)
 * 
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     cdef int copyToBuffer(self, char* c_buffer, int c_requested):
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":342
 *         return result
 * 
 *     cdef int copyToBuffer(self, char* c_buffer, int c_requested):             # <<<<<<<<<<<<<<
 *         cdef int c_byte_count
 *         cdef char* c_start
 */

static  int __pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer(struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_self, char *__pyx_v_c_buffer, int __pyx_v_c_requested) {
  int __pyx_v_c_byte_count;
  char *__pyx_v_c_start;
  Py_ssize_t __pyx_v_byte_count;
  Py_ssize_t __pyx_v_remaining;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("copyToBuffer");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":346
 *         cdef char* c_start
 *         cdef Py_ssize_t byte_count, remaining
 *         if self._bytes_read < 0:             # <<<<<<<<<<<<<<
 *             return 0
 *         try:
 */
  __pyx_t_1 = (__pyx_v_self->_bytes_read < 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":347
 *         cdef Py_ssize_t byte_count, remaining
 *         if self._bytes_read < 0:
 *             return 0             # <<<<<<<<<<<<<<
 *         try:
 *             c_byte_count = 0
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":348
 *         if self._bytes_read < 0:
 *             return 0
 *         try:             # <<<<<<<<<<<<<<
 *             c_byte_count = 0
 *             byte_count = python.PyString_GET_SIZE(self._bytes)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":349
 *             return 0
 *         try:
 *             c_byte_count = 0             # <<<<<<<<<<<<<<
 *             byte_count = python.PyString_GET_SIZE(self._bytes)
 *             remaining  = byte_count - self._bytes_read
 */
      __pyx_v_c_byte_count = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":350
 *         try:
 *             c_byte_count = 0
 *             byte_count = python.PyString_GET_SIZE(self._bytes)             # <<<<<<<<<<<<<<
 *             remaining  = byte_count - self._bytes_read
 *             while c_requested > remaining:
 */
      __pyx_v_byte_count = PyString_GET_SIZE(__pyx_v_self->_bytes);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":351
 *             c_byte_count = 0
 *             byte_count = python.PyString_GET_SIZE(self._bytes)
 *             remaining  = byte_count - self._bytes_read             # <<<<<<<<<<<<<<
 *             while c_requested > remaining:
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 */
      __pyx_v_remaining = (__pyx_v_byte_count - __pyx_v_self->_bytes_read);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":352
 *             byte_count = python.PyString_GET_SIZE(self._bytes)
 *             remaining  = byte_count - self._bytes_read
 *             while c_requested > remaining:             # <<<<<<<<<<<<<<
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, remaining)
 */
      while (1) {
        __pyx_t_1 = (__pyx_v_c_requested > __pyx_v_remaining);
        if (!__pyx_t_1) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":353
 *             remaining  = byte_count - self._bytes_read
 *             while c_requested > remaining:
 *                 c_start = _cstr(self._bytes) + self._bytes_read             # <<<<<<<<<<<<<<
 *                 cstd.memcpy(c_buffer, c_start, remaining)
 *                 c_byte_count += remaining
 */
        __pyx_v_c_start = (PyString_AS_STRING(__pyx_v_self->_bytes) + __pyx_v_self->_bytes_read);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":354
 *             while c_requested > remaining:
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, remaining)             # <<<<<<<<<<<<<<
 *                 c_byte_count += remaining
 *                 c_buffer += remaining
 */
        memcpy(__pyx_v_c_buffer, __pyx_v_c_start, __pyx_v_remaining);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":355
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, remaining)
 *                 c_byte_count += remaining             # <<<<<<<<<<<<<<
 *                 c_buffer += remaining
 *                 c_requested -= remaining
 */
        __pyx_v_c_byte_count += __pyx_v_remaining;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":356
 *                 cstd.memcpy(c_buffer, c_start, remaining)
 *                 c_byte_count += remaining
 *                 c_buffer += remaining             # <<<<<<<<<<<<<<
 *                 c_requested -= remaining
 * 
 */
        __pyx_v_c_buffer += __pyx_v_remaining;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":357
 *                 c_byte_count += remaining
 *                 c_buffer += remaining
 *                 c_requested -= remaining             # <<<<<<<<<<<<<<
 * 
 *                 self._bytes = self._filelike.read(c_requested)
 */
        __pyx_v_c_requested -= __pyx_v_remaining;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":359
 *                 c_requested -= remaining
 * 
 *                 self._bytes = self._filelike.read(c_requested)             # <<<<<<<<<<<<<<
 *                 if not python.PyString_Check(self._bytes):
 *                     if python.PyUnicode_Check(self._bytes):
 */
        __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->_filelike, __pyx_n_s__read); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = PyInt_FromLong(__pyx_v_c_requested); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_v_self->_bytes);
        __Pyx_DECREF(__pyx_v_self->_bytes);
        __pyx_v_self->_bytes = __pyx_t_3;
        __pyx_t_3 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":360
 * 
 *                 self._bytes = self._filelike.read(c_requested)
 *                 if not python.PyString_Check(self._bytes):             # <<<<<<<<<<<<<<
 *                     if python.PyUnicode_Check(self._bytes):
 *                         if self._encoding is None:
 */
        __pyx_t_1 = (!PyString_Check(__pyx_v_self->_bytes));
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":361
 *                 self._bytes = self._filelike.read(c_requested)
 *                 if not python.PyString_Check(self._bytes):
 *                     if python.PyUnicode_Check(self._bytes):             # <<<<<<<<<<<<<<
 *                         if self._encoding is None:
 *                             self._bytes = python.PyUnicode_AsUTF8String(self._bytes)
 */
          __pyx_t_1 = PyUnicode_Check(__pyx_v_self->_bytes);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":362
 *                 if not python.PyString_Check(self._bytes):
 *                     if python.PyUnicode_Check(self._bytes):
 *                         if self._encoding is None:             # <<<<<<<<<<<<<<
 *                             self._bytes = python.PyUnicode_AsUTF8String(self._bytes)
 *                         else:
 */
            __pyx_t_1 = (__pyx_v_self->_encoding == Py_None);
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":363
 *                     if python.PyUnicode_Check(self._bytes):
 *                         if self._encoding is None:
 *                             self._bytes = python.PyUnicode_AsUTF8String(self._bytes)             # <<<<<<<<<<<<<<
 *                         else:
 *                             self._bytes = python.PyUnicode_AsEncodedString(
 */
              __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_self->_bytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GOTREF(__pyx_v_self->_bytes);
              __Pyx_DECREF(__pyx_v_self->_bytes);
              __pyx_v_self->_bytes = __pyx_t_3;
              __pyx_t_3 = 0;
              goto __pyx_L16;
            }
            /*else*/ {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":366
 *                         else:
 *                             self._bytes = python.PyUnicode_AsEncodedString(
 *                                 self._bytes, _cstr(self._encoding), NULL)             # <<<<<<<<<<<<<<
 *                     else:
 *                         raise TypeError, \
 */
              __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_self->_bytes, PyString_AS_STRING(__pyx_v_self->_encoding), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
              __Pyx_GOTREF(__pyx_t_3);

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":365
 *                             self._bytes = python.PyUnicode_AsUTF8String(self._bytes)
 *                         else:
 *                             self._bytes = python.PyUnicode_AsEncodedString(             # <<<<<<<<<<<<<<
 *                                 self._bytes, _cstr(self._encoding), NULL)
 *                     else:
 */
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GOTREF(__pyx_v_self->_bytes);
              __Pyx_DECREF(__pyx_v_self->_bytes);
              __pyx_v_self->_bytes = __pyx_t_3;
              __pyx_t_3 = 0;
            }
            __pyx_L16:;
            goto __pyx_L15;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":368
 *                                 self._bytes, _cstr(self._encoding), NULL)
 *                     else:
 *                         raise TypeError, \             # <<<<<<<<<<<<<<
 *                             u"reading from file-like objects must return byte strings or unicode strings"
 * 
 */
            __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_131), 0);
            {__pyx_filename = __pyx_f[3]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          __pyx_L15:;
          goto __pyx_L14;
        }
        __pyx_L14:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":371
 *                             u"reading from file-like objects must return byte strings or unicode strings"
 * 
 *                 remaining = python.PyString_GET_SIZE(self._bytes)             # <<<<<<<<<<<<<<
 *                 if remaining == 0:
 *                     self._bytes_read = -1
 */
        __pyx_v_remaining = PyString_GET_SIZE(__pyx_v_self->_bytes);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":372
 * 
 *                 remaining = python.PyString_GET_SIZE(self._bytes)
 *                 if remaining == 0:             # <<<<<<<<<<<<<<
 *                     self._bytes_read = -1
 *                     return c_byte_count
 */
        __pyx_t_1 = (__pyx_v_remaining == 0);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":373
 *                 remaining = python.PyString_GET_SIZE(self._bytes)
 *                 if remaining == 0:
 *                     self._bytes_read = -1             # <<<<<<<<<<<<<<
 *                     return c_byte_count
 *                 self._bytes_read = 0
 */
          __pyx_v_self->_bytes_read = -1;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":374
 *                 if remaining == 0:
 *                     self._bytes_read = -1
 *                     return c_byte_count             # <<<<<<<<<<<<<<
 *                 self._bytes_read = 0
 * 
 */
          __pyx_r = __pyx_v_c_byte_count;
          goto __pyx_L8_try_return;
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":375
 *                     self._bytes_read = -1
 *                     return c_byte_count
 *                 self._bytes_read = 0             # <<<<<<<<<<<<<<
 * 
 *             if c_requested > 0:
 */
        __pyx_v_self->_bytes_read = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":377
 *                 self._bytes_read = 0
 * 
 *             if c_requested > 0:             # <<<<<<<<<<<<<<
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, c_requested)
 */
      __pyx_t_1 = (__pyx_v_c_requested > 0);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":378
 * 
 *             if c_requested > 0:
 *                 c_start = _cstr(self._bytes) + self._bytes_read             # <<<<<<<<<<<<<<
 *                 cstd.memcpy(c_buffer, c_start, c_requested)
 *                 c_byte_count += c_requested
 */
        __pyx_v_c_start = (PyString_AS_STRING(__pyx_v_self->_bytes) + __pyx_v_self->_bytes_read);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":379
 *             if c_requested > 0:
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, c_requested)             # <<<<<<<<<<<<<<
 *                 c_byte_count += c_requested
 *                 self._bytes_read += c_requested
 */
        memcpy(__pyx_v_c_buffer, __pyx_v_c_start, __pyx_v_c_requested);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":380
 *                 c_start = _cstr(self._bytes) + self._bytes_read
 *                 cstd.memcpy(c_buffer, c_start, c_requested)
 *                 c_byte_count += c_requested             # <<<<<<<<<<<<<<
 *                 self._bytes_read += c_requested
 *             return c_byte_count
 */
        __pyx_v_c_byte_count += __pyx_v_c_requested;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":381
 *                 cstd.memcpy(c_buffer, c_start, c_requested)
 *                 c_byte_count += c_requested
 *                 self._bytes_read += c_requested             # <<<<<<<<<<<<<<
 *             return c_byte_count
 *         except:
 */
        __pyx_v_self->_bytes_read += __pyx_v_c_requested;
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":382
 *                 c_byte_count += c_requested
 *                 self._bytes_read += c_requested
 *             return c_byte_count             # <<<<<<<<<<<<<<
 *         except:
 *             self._exc_context._store_raised()
 */
      __pyx_r = __pyx_v_c_byte_count;
      goto __pyx_L8_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L11_try_end;
    __pyx_L8_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":383
 *                 self._bytes_read += c_requested
 *             return c_byte_count
 *         except:             # <<<<<<<<<<<<<<
 *             self._exc_context._store_raised()
 *             return -1
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._FileReaderContext.copyToBuffer");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":384
 *             return c_byte_count
 *         except:
 *             self._exc_context._store_raised()             # <<<<<<<<<<<<<<
 *             return -1
 * 
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":385
 *         except:
 *             self._exc_context._store_raised()
 *             return -1             # <<<<<<<<<<<<<<
 * 
 * cdef int _readFilelikeParser(void* ctxt, char* c_buffer, int c_size) with gil:
 */
      __pyx_r = -1;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_except_return;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L5_exception_handled;
    }
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L11_try_end:;
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._FileReaderContext.copyToBuffer");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":387
 *             return -1
 * 
 * cdef int _readFilelikeParser(void* ctxt, char* c_buffer, int c_size) with gil:             # <<<<<<<<<<<<<<
 *     return (<_FileReaderContext>ctxt).copyToBuffer(c_buffer, c_size)
 * 
 */

static  int __pyx_f_4lxml_5etree__readFilelikeParser(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_c_size) {
  int __pyx_r;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_readFilelikeParser");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":388
 * 
 * cdef int _readFilelikeParser(void* ctxt, char* c_buffer, int c_size) with gil:
 *     return (<_FileReaderContext>ctxt).copyToBuffer(c_buffer, c_size)             # <<<<<<<<<<<<<<
 * 
 * cdef int _readFileParser(void* ctxt, char* c_buffer, int c_size) nogil:
 */
  __pyx_r = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_ctxt)->__pyx_vtab)->copyToBuffer(((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_c_size);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":390
 *     return (<_FileReaderContext>ctxt).copyToBuffer(c_buffer, c_size)
 * 
 * cdef int _readFileParser(void* ctxt, char* c_buffer, int c_size) nogil:             # <<<<<<<<<<<<<<
 *     return cstd.fread(c_buffer, 1,  c_size, <cstd.FILE*>ctxt)
 * 
 */

static  int __pyx_f_4lxml_5etree__readFileParser(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_c_size) {
  int __pyx_r;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":391
 * 
 * cdef int _readFileParser(void* ctxt, char* c_buffer, int c_size) nogil:
 *     return cstd.fread(c_buffer, 1,  c_size, <cstd.FILE*>ctxt)             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __pyx_r = fread(__pyx_v_c_buffer, 1, __pyx_v_c_size, ((FILE *)__pyx_v_ctxt));
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":397
 * ############################################################
 * 
 * cdef xmlparser.xmlParserInput* _local_resolver(char* c_url, char* c_pubid,             # <<<<<<<<<<<<<<
 *                                                xmlparser.xmlParserCtxt* c_context) with gil:
 *     cdef _ResolverContext context
 */

static  xmlParserInput *__pyx_f_4lxml_5etree__local_resolver(char *__pyx_v_c_url, char *__pyx_v_c_pubid, xmlParserCtxt *__pyx_v_c_context) {
  struct __pyx_obj_4lxml_5etree__ResolverContext *__pyx_v_context;
  xmlParserInput *__pyx_v_c_input;
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_file_context;
  PyObject *__pyx_v_url;
  PyObject *__pyx_v_pubid;
  PyObject *__pyx_v_data;
  xmlParserInput *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_local_resolver");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ResolverContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_url = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_pubid = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":406
 *     # passed, check to see if the thread state object has an implied
 *     # context.
 *     if c_context._private is not NULL:             # <<<<<<<<<<<<<<
 *         context = <_ResolverContext>c_context._private
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_context->_private != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":407
 *     # context.
 *     if c_context._private is not NULL:
 *         context = <_ResolverContext>c_context._private             # <<<<<<<<<<<<<<
 *     else:
 *         context = __GLOBAL_PARSER_CONTEXT.findImpliedContext()
 */
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_c_context->_private)));
    __Pyx_DECREF(((PyObject *)__pyx_v_context));
    __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_c_context->_private);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":409
 *         context = <_ResolverContext>c_context._private
 *     else:
 *         context = __GLOBAL_PARSER_CONTEXT.findImpliedContext()             # <<<<<<<<<<<<<<
 * 
 *     if context is None:
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->findImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_context));
    __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":411
 *         context = __GLOBAL_PARSER_CONTEXT.findImpliedContext()
 * 
 *     if context is None:             # <<<<<<<<<<<<<<
 *         if __DEFAULT_ENTITY_LOADER is NULL:
 *             return NULL
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_context) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":412
 * 
 *     if context is None:
 *         if __DEFAULT_ENTITY_LOADER is NULL:             # <<<<<<<<<<<<<<
 *             return NULL
 *         return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
 */
    __pyx_t_1 = (__pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":413
 *     if context is None:
 *         if __DEFAULT_ENTITY_LOADER is NULL:
 *             return NULL             # <<<<<<<<<<<<<<
 *         return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
 * 
 */
      __pyx_r = NULL;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":414
 *         if __DEFAULT_ENTITY_LOADER is NULL:
 *             return NULL
 *         return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_r = __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER(__pyx_v_c_url, __pyx_v_c_pubid, __pyx_v_c_context);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":416
 *         return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if c_url is NULL:
 *             url = None
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":417
 * 
 *     try:
 *         if c_url is NULL:             # <<<<<<<<<<<<<<
 *             url = None
 *         else:
 */
      __pyx_t_1 = (__pyx_v_c_url == NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":418
 *     try:
 *         if c_url is NULL:
 *             url = None             # <<<<<<<<<<<<<<
 *         else:
 *             # parsing a related document (DTD etc.) => UTF-8 encoded URL?
 */
        __Pyx_INCREF(Py_None);
        __Pyx_DECREF(__pyx_v_url);
        __pyx_v_url = Py_None;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":421
 *         else:
 *             # parsing a related document (DTD etc.) => UTF-8 encoded URL?
 *             url = _decodeFilename(c_url)             # <<<<<<<<<<<<<<
 *         if c_pubid is NULL:
 *             pubid = None
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_url);
        __pyx_v_url = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":422
 *             # parsing a related document (DTD etc.) => UTF-8 encoded URL?
 *             url = _decodeFilename(c_url)
 *         if c_pubid is NULL:             # <<<<<<<<<<<<<<
 *             pubid = None
 *         else:
 */
      __pyx_t_1 = (__pyx_v_c_pubid == NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":423
 *             url = _decodeFilename(c_url)
 *         if c_pubid is NULL:
 *             pubid = None             # <<<<<<<<<<<<<<
 *         else:
 *             pubid = funicode(c_pubid) # always UTF-8
 */
        __Pyx_INCREF(Py_None);
        __Pyx_DECREF(__pyx_v_pubid);
        __pyx_v_pubid = Py_None;
        goto __pyx_L15;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":425
 *             pubid = None
 *         else:
 *             pubid = funicode(c_pubid) # always UTF-8             # <<<<<<<<<<<<<<
 * 
 *         doc_ref = context._resolvers.resolve(url, pubid, context)
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_pubid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_pubid);
        __pyx_v_pubid = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      __pyx_L15:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":427
 *             pubid = funicode(c_pubid) # always UTF-8
 * 
 *         doc_ref = context._resolvers.resolve(url, pubid, context)             # <<<<<<<<<<<<<<
 *     except:
 *         context._store_raised()
 */
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_resolvers), __pyx_n_s__resolve); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_url);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_url);
      __Pyx_GIVEREF(__pyx_v_url);
      __Pyx_INCREF(__pyx_v_pubid);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_pubid);
      __Pyx_GIVEREF(__pyx_v_pubid);
      __Pyx_INCREF(((PyObject *)__pyx_v_context));
      PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
      __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__InputDocument))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
      __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_4);
      __pyx_t_4 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":428
 * 
 *         doc_ref = context._resolvers.resolve(url, pubid, context)
 *     except:             # <<<<<<<<<<<<<<
 *         context._store_raised()
 *         return NULL
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._local_resolver");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L8_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":429
 *         doc_ref = context._resolvers.resolve(url, pubid, context)
 *     except:
 *         context._store_raised()             # <<<<<<<<<<<<<<
 *         return NULL
 * 
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ResolverContext *)__pyx_v_context->__pyx_base.__pyx_vtab)->__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":430
 *     except:
 *         context._store_raised()
 *         return NULL             # <<<<<<<<<<<<<<
 * 
 *     if doc_ref is not None:
 */
      __pyx_r = NULL;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_except_return;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L9_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":432
 *         return NULL
 * 
 *     if doc_ref is not None:             # <<<<<<<<<<<<<<
 *         if doc_ref._type == PARSER_DATA_STRING:
 *             data = doc_ref._data_bytes
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc_ref) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":433
 * 
 *     if doc_ref is not None:
 *         if doc_ref._type == PARSER_DATA_STRING:             # <<<<<<<<<<<<<<
 *             data = doc_ref._data_bytes
 *             c_input = xmlparser.xmlNewInputStream(c_context)
 */
    __pyx_t_1 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_STRING);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":434
 *     if doc_ref is not None:
 *         if doc_ref._type == PARSER_DATA_STRING:
 *             data = doc_ref._data_bytes             # <<<<<<<<<<<<<<
 *             c_input = xmlparser.xmlNewInputStream(c_context)
 *             if c_input is not NULL:
 */
      __Pyx_INCREF(__pyx_v_doc_ref->_data_bytes);
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = __pyx_v_doc_ref->_data_bytes;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":435
 *         if doc_ref._type == PARSER_DATA_STRING:
 *             data = doc_ref._data_bytes
 *             c_input = xmlparser.xmlNewInputStream(c_context)             # <<<<<<<<<<<<<<
 *             if c_input is not NULL:
 *                 c_input.base = _cstr(data)
 */
      __pyx_v_c_input = xmlNewInputStream(__pyx_v_c_context);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":436
 *             data = doc_ref._data_bytes
 *             c_input = xmlparser.xmlNewInputStream(c_context)
 *             if c_input is not NULL:             # <<<<<<<<<<<<<<
 *                 c_input.base = _cstr(data)
 *                 c_input.length = python.PyString_GET_SIZE(data)
 */
      __pyx_t_1 = (__pyx_v_c_input != NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":437
 *             c_input = xmlparser.xmlNewInputStream(c_context)
 *             if c_input is not NULL:
 *                 c_input.base = _cstr(data)             # <<<<<<<<<<<<<<
 *                 c_input.length = python.PyString_GET_SIZE(data)
 *                 c_input.cur = c_input.base
 */
        __pyx_v_c_input->base = PyString_AS_STRING(__pyx_v_data);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":438
 *             if c_input is not NULL:
 *                 c_input.base = _cstr(data)
 *                 c_input.length = python.PyString_GET_SIZE(data)             # <<<<<<<<<<<<<<
 *                 c_input.cur = c_input.base
 *                 c_input.end = &c_input.base[c_input.length]
 */
        __pyx_v_c_input->length = PyString_GET_SIZE(__pyx_v_data);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":439
 *                 c_input.base = _cstr(data)
 *                 c_input.length = python.PyString_GET_SIZE(data)
 *                 c_input.cur = c_input.base             # <<<<<<<<<<<<<<
 *                 c_input.end = &c_input.base[c_input.length]
 *         elif doc_ref._type == PARSER_DATA_FILENAME:
 */
        __pyx_v_c_input->cur = __pyx_v_c_input->base;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":440
 *                 c_input.length = python.PyString_GET_SIZE(data)
 *                 c_input.cur = c_input.base
 *                 c_input.end = &c_input.base[c_input.length]             # <<<<<<<<<<<<<<
 *         elif doc_ref._type == PARSER_DATA_FILENAME:
 *             c_input = xmlparser.xmlNewInputFromFile(
 */
        __pyx_v_c_input->end = (&(__pyx_v_c_input->base[__pyx_v_c_input->length]));
        goto __pyx_L20;
      }
      __pyx_L20:;
      goto __pyx_L19;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":441
 *                 c_input.cur = c_input.base
 *                 c_input.end = &c_input.base[c_input.length]
 *         elif doc_ref._type == PARSER_DATA_FILENAME:             # <<<<<<<<<<<<<<
 *             c_input = xmlparser.xmlNewInputFromFile(
 *                 c_context, _cstr(doc_ref._filename))
 */
    __pyx_t_1 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":443
 *         elif doc_ref._type == PARSER_DATA_FILENAME:
 *             c_input = xmlparser.xmlNewInputFromFile(
 *                 c_context, _cstr(doc_ref._filename))             # <<<<<<<<<<<<<<
 *         elif doc_ref._type == PARSER_DATA_FILE:
 *             file_context = _FileReaderContext(doc_ref._file, context, url, None)
 */
      __pyx_v_c_input = xmlNewInputFromFile(__pyx_v_c_context, PyString_AS_STRING(__pyx_v_doc_ref->_filename));
      goto __pyx_L19;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":444
 *             c_input = xmlparser.xmlNewInputFromFile(
 *                 c_context, _cstr(doc_ref._filename))
 *         elif doc_ref._type == PARSER_DATA_FILE:             # <<<<<<<<<<<<<<
 *             file_context = _FileReaderContext(doc_ref._file, context, url, None)
 *             c_input = file_context._createParserInput(c_context)
 */
    __pyx_t_1 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_FILE);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":445
 *                 c_context, _cstr(doc_ref._filename))
 *         elif doc_ref._type == PARSER_DATA_FILE:
 *             file_context = _FileReaderContext(doc_ref._file, context, url, None)             # <<<<<<<<<<<<<<
 *             c_input = file_context._createParserInput(c_context)
 *             data = file_context
 */
      __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_doc_ref->_file);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_doc_ref->_file);
      __Pyx_GIVEREF(__pyx_v_doc_ref->_file);
      __Pyx_INCREF(((PyObject *)__pyx_v_context));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
      __Pyx_INCREF(__pyx_v_url);
      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_url);
      __Pyx_GIVEREF(__pyx_v_url);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_2, 3, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FileReaderContext)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_file_context));
      __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":446
 *         elif doc_ref._type == PARSER_DATA_FILE:
 *             file_context = _FileReaderContext(doc_ref._file, context, url, None)
 *             c_input = file_context._createParserInput(c_context)             # <<<<<<<<<<<<<<
 *             data = file_context
 *         else:
 */
      __pyx_v_c_input = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)__pyx_v_file_context->__pyx_vtab)->_createParserInput(__pyx_v_file_context, __pyx_v_c_context);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":447
 *             file_context = _FileReaderContext(doc_ref._file, context, url, None)
 *             c_input = file_context._createParserInput(c_context)
 *             data = file_context             # <<<<<<<<<<<<<<
 *         else:
 *             data = None
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_file_context));
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = ((PyObject *)__pyx_v_file_context);
      goto __pyx_L19;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":449
 *             data = file_context
 *         else:
 *             data = None             # <<<<<<<<<<<<<<
 *             c_input = NULL
 * 
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = Py_None;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":450
 *         else:
 *             data = None
 *             c_input = NULL             # <<<<<<<<<<<<<<
 * 
 *         if data is not None:
 */
      __pyx_v_c_input = NULL;
    }
    __pyx_L19:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":452
 *             c_input = NULL
 * 
 *         if data is not None:             # <<<<<<<<<<<<<<
 *             context._storage.add(data)
 *         if c_input is not NULL:
 */
    __pyx_t_1 = (__pyx_v_data != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":453
 * 
 *         if data is not None:
 *             context._storage.add(data)             # <<<<<<<<<<<<<<
 *         if c_input is not NULL:
 *             return c_input
 */
      __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__TempStore *)__pyx_v_context->_storage->__pyx_vtab)->add(__pyx_v_context->_storage, __pyx_v_data); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L21;
    }
    __pyx_L21:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":454
 *         if data is not None:
 *             context._storage.add(data)
 *         if c_input is not NULL:             # <<<<<<<<<<<<<<
 *             return c_input
 * 
 */
    __pyx_t_1 = (__pyx_v_c_input != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":455
 *             context._storage.add(data)
 *         if c_input is not NULL:
 *             return c_input             # <<<<<<<<<<<<<<
 * 
 *     if __DEFAULT_ENTITY_LOADER is NULL:
 */
      __pyx_r = __pyx_v_c_input;
      goto __pyx_L0;
      goto __pyx_L22;
    }
    __pyx_L22:;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":457
 *             return c_input
 * 
 *     if __DEFAULT_ENTITY_LOADER is NULL:             # <<<<<<<<<<<<<<
 *         return NULL
 *     return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
 */
  __pyx_t_1 = (__pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":458
 * 
 *     if __DEFAULT_ENTITY_LOADER is NULL:
 *         return NULL             # <<<<<<<<<<<<<<
 *     return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)
 * 
 */
    __pyx_r = NULL;
    goto __pyx_L0;
    goto __pyx_L23;
  }
  __pyx_L23:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":459
 *     if __DEFAULT_ENTITY_LOADER is NULL:
 *         return NULL
 *     return __DEFAULT_ENTITY_LOADER(c_url, c_pubid, c_context)             # <<<<<<<<<<<<<<
 * 
 * cdef xmlparser.xmlExternalEntityLoader __DEFAULT_ENTITY_LOADER
 */
  __pyx_r = __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER(__pyx_v_c_url, __pyx_v_c_pubid, __pyx_v_c_context);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._local_resolver");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_DECREF((PyObject *)__pyx_v_file_context);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_DECREF(__pyx_v_pubid);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":476
 *     cdef python.PyThread_type_lock _lock
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._validator is not None:
 *             self._validator.disconnect()
 */

static void __pyx_pf_4lxml_5etree_14_ParserContext___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_14_ParserContext___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":477
 * 
 *     def __dealloc__(self):
 *         if self._validator is not None:             # <<<<<<<<<<<<<<
 *             self._validator.disconnect()
 *         if self._lock is not NULL:
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_validator) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":478
 *     def __dealloc__(self):
 *         if self._validator is not None:
 *             self._validator.disconnect()             # <<<<<<<<<<<<<<
 *         if self._lock is not NULL:
 *             python.PyThread_free_lock(self._lock)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_validator->__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_validator);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":479
 *         if self._validator is not None:
 *             self._validator.disconnect()
 *         if self._lock is not NULL:             # <<<<<<<<<<<<<<
 *             python.PyThread_free_lock(self._lock)
 *         if self._c_ctxt is not NULL:
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_lock != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":480
 *             self._validator.disconnect()
 *         if self._lock is not NULL:
 *             python.PyThread_free_lock(self._lock)             # <<<<<<<<<<<<<<
 *         if self._c_ctxt is not NULL:
 *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
 */
    PyThread_free_lock(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_lock);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":481
 *         if self._lock is not NULL:
 *             python.PyThread_free_lock(self._lock)
 *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_c_ctxt != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":482
 *             python.PyThread_free_lock(self._lock)
 *         if self._c_ctxt is not NULL:
 *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _copy(self):
 */
    xmlFreeParserCtxt(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self)->_c_ctxt);
    goto __pyx_L7;
  }
  __pyx_L7:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":484
 *             xmlparser.xmlFreeParserCtxt(self._c_ctxt)
 * 
 *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _ParserContext context
 *         context = self.__class__()
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_14_ParserContext__copy(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":486
 *     cdef _ParserContext _copy(self):
 *         cdef _ParserContext context
 *         context = self.__class__()             # <<<<<<<<<<<<<<
 *         context._validator = self._validator.copy()
 *         _initParserContext(context, self._resolvers._copy(), NULL)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__ParserContext))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":487
 *         cdef _ParserContext context
 *         context = self.__class__()
 *         context._validator = self._validator.copy()             # <<<<<<<<<<<<<<
 *         _initParserContext(context, self._resolvers._copy(), NULL)
 *         return context
 */
  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self->_validator->__pyx_vtab)->copy(__pyx_v_self->_validator)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_context->_validator);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_validator));
  __pyx_v_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":488
 *         context = self.__class__()
 *         context._validator = self._validator.copy()
 *         _initParserContext(context, self._resolvers._copy(), NULL)             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry *)__pyx_v_self->__pyx_base._resolvers->__pyx_vtab)->_copy(__pyx_v_self->__pyx_base._resolvers)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":489
 *         context._validator = self._validator.copy()
 *         _initParserContext(context, self._resolvers._copy(), NULL)
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = __pyx_v_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ParserContext._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":491
 *         return context
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
 *         self._c_ctxt = c_ctxt
 *         c_ctxt._private = <void*>self
 */

static  void __pyx_f_4lxml_5etree_14_ParserContext__initParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
  __Pyx_RefNannySetupContext("_initParserContext");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":492
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
 *         self._c_ctxt = c_ctxt             # <<<<<<<<<<<<<<
 *         c_ctxt._private = <void*>self
 * 
 */
  __pyx_v_self->_c_ctxt = __pyx_v_c_ctxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":493
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
 *         self._c_ctxt = c_ctxt
 *         c_ctxt._private = <void*>self             # <<<<<<<<<<<<<<
 * 
 *     cdef void _resetParserContext(self):
 */
  __pyx_v_c_ctxt->_private = ((void *)__pyx_v_self);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":495
 *         c_ctxt._private = <void*>self
 * 
 *     cdef void _resetParserContext(self):             # <<<<<<<<<<<<<<
 *         if self._c_ctxt is not NULL:
 *             if self._c_ctxt.html:
 */

static  void __pyx_f_4lxml_5etree_14_ParserContext__resetParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_resetParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":496
 * 
 *     cdef void _resetParserContext(self):
 *         if self._c_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *             if self._c_ctxt.html:
 *                 htmlparser.htmlCtxtReset(self._c_ctxt)
 */
  __pyx_t_1 = (__pyx_v_self->_c_ctxt != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":497
 *     cdef void _resetParserContext(self):
 *         if self._c_ctxt is not NULL:
 *             if self._c_ctxt.html:             # <<<<<<<<<<<<<<
 *                 htmlparser.htmlCtxtReset(self._c_ctxt)
 *             elif self._c_ctxt.spaceTab is not NULL or \
 */
    __pyx_t_1 = __pyx_v_self->_c_ctxt->html;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":498
 *         if self._c_ctxt is not NULL:
 *             if self._c_ctxt.html:
 *                 htmlparser.htmlCtxtReset(self._c_ctxt)             # <<<<<<<<<<<<<<
 *             elif self._c_ctxt.spaceTab is not NULL or \
 *                     _LIBXML_VERSION_INT >= 20629: # work around bug in libxml2
 */
      htmlCtxtReset(__pyx_v_self->_c_ctxt);
      goto __pyx_L4;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":499
 *             if self._c_ctxt.html:
 *                 htmlparser.htmlCtxtReset(self._c_ctxt)
 *             elif self._c_ctxt.spaceTab is not NULL or \             # <<<<<<<<<<<<<<
 *                     _LIBXML_VERSION_INT >= 20629: # work around bug in libxml2
 *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
 */
    __pyx_t_1 = (__pyx_v_self->_c_ctxt->spaceTab != NULL);
    if (!__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":500
 *                 htmlparser.htmlCtxtReset(self._c_ctxt)
 *             elif self._c_ctxt.spaceTab is not NULL or \
 *                     _LIBXML_VERSION_INT >= 20629: # work around bug in libxml2             # <<<<<<<<<<<<<<
 *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
 * 
 */
      __pyx_t_2 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20629);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":501
 *             elif self._c_ctxt.spaceTab is not NULL or \
 *                     _LIBXML_VERSION_INT >= 20629: # work around bug in libxml2
 *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)             # <<<<<<<<<<<<<<
 * 
 *     cdef int prepare(self) except -1:
 */
      xmlClearParserCtxt(__pyx_v_self->_c_ctxt);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":503
 *                 xmlparser.xmlClearParserCtxt(self._c_ctxt)
 * 
 *     cdef int prepare(self) except -1:             # <<<<<<<<<<<<<<
 *         cdef int result
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 */

static  int __pyx_f_4lxml_5etree_14_ParserContext_prepare(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
  int __pyx_v_result;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("prepare");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":505
 *     cdef int prepare(self) except -1:
 *         cdef int result
 *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 result = python.PyThread_acquire_lock(
 */
  if (ENABLE_THREADING) {
    __pyx_t_1 = (__pyx_v_self->_lock != NULL);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = ENABLE_THREADING;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":506
 *         cdef int result
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 result = python.PyThread_acquire_lock(
 *                     self._lock, python.WAIT_LOCK)
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":508
 *             with nogil:
 *                 result = python.PyThread_acquire_lock(
 *                     self._lock, python.WAIT_LOCK)             # <<<<<<<<<<<<<<
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"
 */
        __pyx_v_result = PyThread_acquire_lock(__pyx_v_self->_lock, WAIT_LOCK);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":506
 *         cdef int result
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 result = python.PyThread_acquire_lock(
 *                     self._lock, python.WAIT_LOCK)
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":509
 *                 result = python.PyThread_acquire_lock(
 *                     self._lock, python.WAIT_LOCK)
 *             if result == 0:             # <<<<<<<<<<<<<<
 *                 raise ParserError, u"parser locking failed"
 *         self._error_log.connect()
 */
    __pyx_t_2 = (__pyx_v_result == 0);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":510
 *                     self._lock, python.WAIT_LOCK)
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"             # <<<<<<<<<<<<<<
 *         self._error_log.connect()
 *         if self._validator is not None:
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParserError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_132), 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":511
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         if self._validator is not None:
 *             self._validator.connect(self._c_ctxt)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(__pyx_v_self->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":512
 *                 raise ParserError, u"parser locking failed"
 *         self._error_log.connect()
 *         if self._validator is not None:             # <<<<<<<<<<<<<<
 *             self._validator.connect(self._c_ctxt)
 *         return 0
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":513
 *         self._error_log.connect()
 *         if self._validator is not None:
 *             self._validator.connect(self._c_ctxt)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self->_validator->__pyx_vtab)->connect(__pyx_v_self->_validator, __pyx_v_self->_c_ctxt); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":514
 *         if self._validator is not None:
 *             self._validator.connect(self._c_ctxt)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int cleanup(self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ParserContext.prepare");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":516
 *         return 0
 * 
 *     cdef int cleanup(self) except -1:             # <<<<<<<<<<<<<<
 *         if self._validator is not None:
 *             self._validator.disconnect()
 */

static  int __pyx_f_4lxml_5etree_14_ParserContext_cleanup(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("cleanup");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":517
 * 
 *     cdef int cleanup(self) except -1:
 *         if self._validator is not None:             # <<<<<<<<<<<<<<
 *             self._validator.disconnect()
 *         self._resetParserContext()
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_validator) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":518
 *     cdef int cleanup(self) except -1:
 *         if self._validator is not None:
 *             self._validator.disconnect()             # <<<<<<<<<<<<<<
 *         self._resetParserContext()
 *         self.clear()
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self->_validator->__pyx_vtab)->disconnect(__pyx_v_self->_validator);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":519
 *         if self._validator is not None:
 *             self._validator.disconnect()
 *         self._resetParserContext()             # <<<<<<<<<<<<<<
 *         self.clear()
 *         self._error_log.disconnect()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->_resetParserContext(__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":520
 *             self._validator.disconnect()
 *         self._resetParserContext()
 *         self.clear()             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":521
 *         self._resetParserContext()
 *         self.clear()
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 *             python.PyThread_release_lock(self._lock)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(__pyx_v_self->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":522
 *         self.clear()
 *         self._error_log.disconnect()
 *         if config.ENABLE_THREADING and self._lock is not NULL:             # <<<<<<<<<<<<<<
 *             python.PyThread_release_lock(self._lock)
 *         return 0
 */
  if (ENABLE_THREADING) {
    __pyx_t_1 = (__pyx_v_self->_lock != NULL);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = ENABLE_THREADING;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":523
 *         self._error_log.disconnect()
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 *             python.PyThread_release_lock(self._lock)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    PyThread_release_lock(__pyx_v_self->_lock);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":524
 *         if config.ENABLE_THREADING and self._lock is not NULL:
 *             python.PyThread_release_lock(self._lock)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef object _handleParseResult(self, _BaseParser parser,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":526
 *         return 0
 * 
 *     cdef object _handleParseResult(self, _BaseParser parser,             # <<<<<<<<<<<<<<
 *                                    xmlDoc* result, filename):
 *         cdef xmlDoc* c_doc
 */

static  PyObject *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
  xmlDoc *__pyx_v_c_doc;
  int __pyx_v_recover;
  PyObject *__pyx_r = NULL;
  xmlDoc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleParseResult");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":530
 *         cdef xmlDoc* c_doc
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         c_doc = _handleParseResult(self, self._c_ctxt, result,
 *                                    filename, recover)
 */
  __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":532
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
 *         c_doc = _handleParseResult(self, self._c_ctxt, result,
 *                                    filename, recover)             # <<<<<<<<<<<<<<
 *         return _documentFactory(c_doc, parser)
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":533
 *         c_doc = _handleParseResult(self, self._c_ctxt, result,
 *                                    filename, recover)
 *         return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ParserContext._handleParseResult");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":535
 *         return _documentFactory(c_doc, parser)
 * 
 *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
 *                                        xmlDoc* result, filename) except NULL:
 *         cdef bint recover
 */

static  xmlDoc *__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
  int __pyx_v_recover;
  xmlDoc *__pyx_r;
  xmlDoc *__pyx_t_1;
  __Pyx_RefNannySetupContext("_handleParseResultDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":538
 *                                        xmlDoc* result, filename) except NULL:
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         return _handleParseResult(self, self._c_ctxt, result,
 *                                    filename, recover)
 */
  __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":540
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
 *         return _handleParseResult(self, self._c_ctxt, result,
 *                                    filename, recover)             # <<<<<<<<<<<<<<
 * 
 * cdef _initParserContext(_ParserContext context,
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__handleParseResult(__pyx_v_self, __pyx_v_self->_c_ctxt, __pyx_v_result, __pyx_v_filename, __pyx_v_recover); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._ParserContext._handleParseResultDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":542
 *                                    filename, recover)
 * 
 * cdef _initParserContext(_ParserContext context,             # <<<<<<<<<<<<<<
 *                         _ResolverRegistry resolvers,
 *                         xmlparser.xmlParserCtxt* c_ctxt):
 */

static  PyObject *__pyx_f_4lxml_5etree__initParserContext(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_resolvers, xmlParserCtxt *__pyx_v_c_ctxt) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_initParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF((PyObject *)__pyx_v_resolvers);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":545
 *                         _ResolverRegistry resolvers,
 *                         xmlparser.xmlParserCtxt* c_ctxt):
 *     _initResolverContext(context, resolvers)             # <<<<<<<<<<<<<<
 *     if not config.ENABLE_THREADING:
 *         context._lock = NULL
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), __pyx_v_resolvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":546
 *                         xmlparser.xmlParserCtxt* c_ctxt):
 *     _initResolverContext(context, resolvers)
 *     if not config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
 *         context._lock = NULL
 *     else:
 */
  __pyx_t_2 = (!ENABLE_THREADING);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":547
 *     _initResolverContext(context, resolvers)
 *     if not config.ENABLE_THREADING:
 *         context._lock = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         context._lock = python.PyThread_allocate_lock()
 */
    __pyx_v_context->_lock = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":549
 *         context._lock = NULL
 *     else:
 *         context._lock = python.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
 *     if c_ctxt is not NULL:
 *         context._initParserContext(c_ctxt)
 */
    __pyx_v_context->_lock = PyThread_allocate_lock();
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":550
 *     else:
 *         context._lock = python.PyThread_allocate_lock()
 *     if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *         context._initParserContext(c_ctxt)
 *     context._error_log = _ErrorLog()
 */
  __pyx_t_2 = (__pyx_v_c_ctxt != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":551
 *         context._lock = python.PyThread_allocate_lock()
 *     if c_ctxt is not NULL:
 *         context._initParserContext(c_ctxt)             # <<<<<<<<<<<<<<
 *     context._error_log = _ErrorLog()
 * 
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_initParserContext(__pyx_v_context, __pyx_v_c_ctxt);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":552
 *     if c_ctxt is not NULL:
 *         context._initParserContext(c_ctxt)
 *     context._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 * 
 * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_context->_error_log);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_error_log));
  __pyx_v_context->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._initParserContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_resolvers);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":554
 *     context._error_log = _ErrorLog()
 * 
 * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
 *                           _ErrorLog error_log) except 0:
 *     if filename is not None and \
 */

static  int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, PyObject *__pyx_v_filename, struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_error_log) {
  PyObject *__pyx_v_message;
  PyObject *__pyx_v_code;
  PyObject *__pyx_v_line;
  PyObject *__pyx_v_column;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_raiseParseError");
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF((PyObject *)__pyx_v_error_log);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_code = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_line = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_column = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":556
 * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
 *                           _ErrorLog error_log) except 0:
 *     if filename is not None and \             # <<<<<<<<<<<<<<
 *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
 *         if ctxt.lastError.message is not NULL:
 */
  __pyx_t_1 = (__pyx_v_filename != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":557
 *                           _ErrorLog error_log) except 0:
 *     if filename is not None and \
 *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:             # <<<<<<<<<<<<<<
 *         if ctxt.lastError.message is not NULL:
 *             message = u"Error reading file '%s': %s" % (
 */
    __pyx_t_2 = (__pyx_v_ctxt->lastError.domain == XML_FROM_IO);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":558
 *     if filename is not None and \
 *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
 *         if ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
 *             message = u"Error reading file '%s': %s" % (
 *                 filename, (ctxt.lastError.message).strip())
 */
    __pyx_t_3 = (__pyx_v_ctxt->lastError.message != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":560
 *         if ctxt.lastError.message is not NULL:
 *             message = u"Error reading file '%s': %s" % (
 *                 filename, (ctxt.lastError.message).strip())             # <<<<<<<<<<<<<<
 *         else:
 *             message = u"Error reading '%s'" % filename
 */
      __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_t_4), __pyx_n_s__strip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_filename);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_filename);
      __Pyx_GIVEREF(__pyx_v_filename);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_133), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":562
 *                 filename, (ctxt.lastError.message).strip())
 *         else:
 *             message = u"Error reading '%s'" % filename             # <<<<<<<<<<<<<<
 *         raise IOError, message
 *     elif error_log:
 */
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_134), __pyx_v_filename); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":563
 *         else:
 *             message = u"Error reading '%s'" % filename
 *         raise IOError, message             # <<<<<<<<<<<<<<
 *     elif error_log:
 *         raise error_log._buildParseException(
 */
    __Pyx_Raise(__pyx_builtin_IOError, __pyx_v_message, 0);
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":564
 *             message = u"Error reading '%s'" % filename
 *         raise IOError, message
 *     elif error_log:             # <<<<<<<<<<<<<<
 *         raise error_log._buildParseException(
 *             XMLSyntaxError, u"Document is not well formed")
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_error_log)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":566
 *     elif error_log:
 *         raise error_log._buildParseException(
 *             XMLSyntaxError, u"Document is not well formed")             # <<<<<<<<<<<<<<
 *     elif ctxt.lastError.message is not NULL:
 *         message = (ctxt.lastError.message).strip()
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSyntaxError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildParseException(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_error_log), __pyx_t_4, ((PyObject *)__pyx_kp_u_136)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":567
 *         raise error_log._buildParseException(
 *             XMLSyntaxError, u"Document is not well formed")
 *     elif ctxt.lastError.message is not NULL:             # <<<<<<<<<<<<<<
 *         message = (ctxt.lastError.message).strip()
 *         code = ctxt.lastError.code
 */
  __pyx_t_3 = (__pyx_v_ctxt->lastError.message != NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":568
 *             XMLSyntaxError, u"Document is not well formed")
 *     elif ctxt.lastError.message is not NULL:
 *         message = (ctxt.lastError.message).strip()             # <<<<<<<<<<<<<<
 *         code = ctxt.lastError.code
 *         line = ctxt.lastError.line
 */
    __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_ctxt->lastError.message); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_t_5), __pyx_n_s__strip); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":569
 *     elif ctxt.lastError.message is not NULL:
 *         message = (ctxt.lastError.message).strip()
 *         code = ctxt.lastError.code             # <<<<<<<<<<<<<<
 *         line = ctxt.lastError.line
 *         column = ctxt.lastError.int2
 */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_ctxt->lastError.code); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_v_code);
    __pyx_v_code = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":570
 *         message = (ctxt.lastError.message).strip()
 *         code = ctxt.lastError.code
 *         line = ctxt.lastError.line             # <<<<<<<<<<<<<<
 *         column = ctxt.lastError.int2
 *         if ctxt.lastError.line > 0:
 */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_ctxt->lastError.line); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_v_line);
    __pyx_v_line = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":571
 *         code = ctxt.lastError.code
 *         line = ctxt.lastError.line
 *         column = ctxt.lastError.int2             # <<<<<<<<<<<<<<
 *         if ctxt.lastError.line > 0:
 *             message = u"line %d: %s" % (line, message)
 */
    __pyx_t_5 = PyInt_FromLong(__pyx_v_ctxt->lastError.int2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_v_column);
    __pyx_v_column = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":572
 *         line = ctxt.lastError.line
 *         column = ctxt.lastError.int2
 *         if ctxt.lastError.line > 0:             # <<<<<<<<<<<<<<
 *             message = u"line %d: %s" % (line, message)
 *         raise XMLSyntaxError(message, code, line, column)
 */
    __pyx_t_3 = (__pyx_v_ctxt->lastError.line > 0);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":573
 *         column = ctxt.lastError.int2
 *         if ctxt.lastError.line > 0:
 *             message = u"line %d: %s" % (line, message)             # <<<<<<<<<<<<<<
 *         raise XMLSyntaxError(message, code, line, column)
 *     else:
 */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_line);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_line);
      __Pyx_GIVEREF(__pyx_v_line);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_137), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":574
 *         if ctxt.lastError.line > 0:
 *             message = u"line %d: %s" % (line, message)
 *         raise XMLSyntaxError(message, code, line, column)             # <<<<<<<<<<<<<<
 *     else:
 *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSyntaxError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __Pyx_INCREF(__pyx_v_code);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_code);
    __Pyx_GIVEREF(__pyx_v_code);
    __Pyx_INCREF(__pyx_v_line);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_line);
    __Pyx_GIVEREF(__pyx_v_line);
    __Pyx_INCREF(__pyx_v_column);
    PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_column);
    __Pyx_GIVEREF(__pyx_v_column);
    __pyx_t_6 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_6, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":576
 *         raise XMLSyntaxError(message, code, line, column)
 *     else:
 *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _handleParseResult(_ParserContext context,
 */
    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSyntaxError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = PyInt_FromLong(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_4, 0, Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._raiseParseError");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_code);
  __Pyx_DECREF(__pyx_v_line);
  __Pyx_DECREF(__pyx_v_column);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_error_log);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":578
 *         raise XMLSyntaxError(None, xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
 * 
 * cdef xmlDoc* _handleParseResult(_ParserContext context,             # <<<<<<<<<<<<<<
 *                                 xmlparser.xmlParserCtxt* c_ctxt,
 *                                 xmlDoc* result, filename,
 */

static  xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context, xmlParserCtxt *__pyx_v_c_ctxt, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename, int __pyx_v_recover) {
  int __pyx_v_well_formed;
  PyObject *__pyx_v_error;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("_handleParseResult");
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF(__pyx_v_filename);
  __pyx_v_error = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":583
 *                                 bint recover) except NULL:
 *     cdef bint well_formed
 *     if result is not NULL:             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 * 
 */
  __pyx_t_1 = (__pyx_v_result != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":584
 *     cdef bint well_formed
 *     if result is not NULL:
 *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
 * 
 *     if c_ctxt.myDoc is not NULL:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":586
 *         __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 * 
 *     if c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
 *         if c_ctxt.myDoc is not result:
 *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->myDoc != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":587
 * 
 *     if c_ctxt.myDoc is not NULL:
 *         if c_ctxt.myDoc is not result:             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
 *             tree.xmlFreeDoc(c_ctxt.myDoc)
 */
    __pyx_t_1 = (__pyx_v_c_ctxt->myDoc != __pyx_v_result);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":588
 *     if c_ctxt.myDoc is not NULL:
 *         if c_ctxt.myDoc is not result:
 *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(c_ctxt.myDoc)
 *         c_ctxt.myDoc = NULL
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_c_ctxt->myDoc);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":589
 *         if c_ctxt.myDoc is not result:
 *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
 *             tree.xmlFreeDoc(c_ctxt.myDoc)             # <<<<<<<<<<<<<<
 *         c_ctxt.myDoc = NULL
 * 
 */
      xmlFreeDoc(__pyx_v_c_ctxt->myDoc);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":590
 *             __GLOBAL_PARSER_CONTEXT.initDocDict(c_ctxt.myDoc)
 *             tree.xmlFreeDoc(c_ctxt.myDoc)
 *         c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
 * 
 *     if result is not NULL:
 */
    __pyx_v_c_ctxt->myDoc = NULL;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":592
 *         c_ctxt.myDoc = NULL
 * 
 *     if result is not NULL:             # <<<<<<<<<<<<<<
 *         if context._validator is not None and \
 *                 not context._validator.isvalid():
 */
  __pyx_t_1 = (__pyx_v_result != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":593
 * 
 *     if result is not NULL:
 *         if context._validator is not None and \             # <<<<<<<<<<<<<<
 *                 not context._validator.isvalid():
 *             well_formed = 0 # actually not 'valid', but anyway ...
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_context->_validator) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":594
 *     if result is not NULL:
 *         if context._validator is not None and \
 *                 not context._validator.isvalid():             # <<<<<<<<<<<<<<
 *             well_formed = 0 # actually not 'valid', but anyway ...
 *         elif recover or (c_ctxt.wellFormed and \
 */
      __pyx_t_2 = (!((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_context->_validator->__pyx_vtab)->isvalid(__pyx_v_context->_validator));
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":595
 *         if context._validator is not None and \
 *                 not context._validator.isvalid():
 *             well_formed = 0 # actually not 'valid', but anyway ...             # <<<<<<<<<<<<<<
 *         elif recover or (c_ctxt.wellFormed and \
 *                              c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
 */
      __pyx_v_well_formed = 0;
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":596
 *                 not context._validator.isvalid():
 *             well_formed = 0 # actually not 'valid', but anyway ...
 *         elif recover or (c_ctxt.wellFormed and \             # <<<<<<<<<<<<<<
 *                              c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
 *             well_formed = 1
 */
    if (!__pyx_v_recover) {
      if (__pyx_v_c_ctxt->wellFormed) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":597
 *             well_formed = 0 # actually not 'valid', but anyway ...
 *         elif recover or (c_ctxt.wellFormed and \
 *                              c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):             # <<<<<<<<<<<<<<
 *             well_formed = 1
 *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
 */
        __pyx_t_3 = (__pyx_v_c_ctxt->lastError.level < XML_ERR_ERROR);
        __pyx_t_1 = __pyx_t_3;
      } else {
        __pyx_t_1 = __pyx_v_c_ctxt->wellFormed;
      }
      __pyx_t_3 = __pyx_t_1;
    } else {
      __pyx_t_3 = __pyx_v_recover;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":598
 *         elif recover or (c_ctxt.wellFormed and \
 *                              c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
 *             well_formed = 1             # <<<<<<<<<<<<<<
 *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
 *                  and context is not None:
 */
      __pyx_v_well_formed = 1;
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":599
 *                              c_ctxt.lastError.level < xmlerror.XML_ERR_ERROR):
 *             well_formed = 1
 *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \             # <<<<<<<<<<<<<<
 *                  and context is not None:
 *             # in this mode, we ignore errors about undefined entities
 */
    __pyx_t_3 = (!__pyx_v_c_ctxt->replaceEntities);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":600
 *             well_formed = 1
 *         elif not c_ctxt.replaceEntities and not c_ctxt.validate \
 *                  and context is not None:             # <<<<<<<<<<<<<<
 *             # in this mode, we ignore errors about undefined entities
 *             for error in context._error_log.filter_from_errors():
 */
      __pyx_t_1 = (!__pyx_v_c_ctxt->validate);
      if (__pyx_t_1) {
        __pyx_t_2 = (((PyObject *)__pyx_v_context) != Py_None);
        __pyx_t_4 = __pyx_t_2;
      } else {
        __pyx_t_4 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":602
 *                  and context is not None:
 *             # in this mode, we ignore errors about undefined entities
 *             for error in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
 *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 */
      __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s__filter_from_errors); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PyList_CheckExact(__pyx_t_7) || PyTuple_CheckExact(__pyx_t_7)) {
        __pyx_t_5 = 0; __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6);
      } else {
        __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_6))) {
          if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
          if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
        } else {
          __pyx_t_7 = PyIter_Next(__pyx_t_6);
          if (!__pyx_t_7) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_v_error);
        __pyx_v_error = __pyx_t_7;
        __pyx_t_7 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":603
 *             # in this mode, we ignore errors about undefined entities
 *             for error in context._error_log.filter_from_errors():
 *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
 *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 *                     well_formed = 0
 */
        __pyx_t_7 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__type); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s_138); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_9, Py_NE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":604
 *             for error in context._error_log.filter_from_errors():
 *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
 *                     well_formed = 0
 *                     break
 */
          __pyx_t_8 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__type); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_7 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s_139); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_NE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_4 = __pyx_t_3;
        } else {
          __pyx_t_4 = __pyx_t_1;
        }
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":605
 *                 if error.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 *                     well_formed = 0             # <<<<<<<<<<<<<<
 *                     break
 *             else:
 */
          __pyx_v_well_formed = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":606
 *                        error.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 *                     well_formed = 0
 *                     break             # <<<<<<<<<<<<<<
 *             else:
 *                 well_formed = 1
 */
          goto __pyx_L9_break;
          goto __pyx_L10;
        }
        __pyx_L10:;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":608
 *                     break
 *             else:
 *                 well_formed = 1             # <<<<<<<<<<<<<<
 *         else:
 *             well_formed = 0
 */
        __pyx_v_well_formed = 1;
      }
      __pyx_L9_break:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":610
 *                 well_formed = 1
 *         else:
 *             well_formed = 0             # <<<<<<<<<<<<<<
 * 
 *         if not well_formed:
 */
      __pyx_v_well_formed = 0;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":612
 *             well_formed = 0
 * 
 *         if not well_formed:             # <<<<<<<<<<<<<<
 *             # free broken document
 *             tree.xmlFreeDoc(result)
 */
    __pyx_t_4 = (!__pyx_v_well_formed);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":614
 *         if not well_formed:
 *             # free broken document
 *             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *             result = NULL
 * 
 */
      xmlFreeDoc(__pyx_v_result);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":615
 *             # free broken document
 *             tree.xmlFreeDoc(result)
 *             result = NULL             # <<<<<<<<<<<<<<
 * 
 *     if context is not None and context._has_raised():
 */
      __pyx_v_result = NULL;
      goto __pyx_L11;
    }
    __pyx_L11:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":617
 *             result = NULL
 * 
 *     if context is not None and context._has_raised():             # <<<<<<<<<<<<<<
 *         if result is not NULL:
 *             tree.xmlFreeDoc(result)
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_context) != Py_None);
  if (__pyx_t_4) {
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_4;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":618
 * 
 *     if context is not None and context._has_raised():
 *         if result is not NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(result)
 *             result = NULL
 */
    __pyx_t_3 = (__pyx_v_result != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":619
 *     if context is not None and context._has_raised():
 *         if result is not NULL:
 *             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *             result = NULL
 *         context._raise_if_stored()
 */
      xmlFreeDoc(__pyx_v_result);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":620
 *         if result is not NULL:
 *             tree.xmlFreeDoc(result)
 *             result = NULL             # <<<<<<<<<<<<<<
 *         context._raise_if_stored()
 * 
 */
      __pyx_v_result = NULL;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":621
 *             tree.xmlFreeDoc(result)
 *             result = NULL
 *         context._raise_if_stored()             # <<<<<<<<<<<<<<
 * 
 *     if result is NULL:
 */
    __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":623
 *         context._raise_if_stored()
 * 
 *     if result is NULL:             # <<<<<<<<<<<<<<
 *         if context is not None:
 *             _raiseParseError(c_ctxt, filename, context._error_log)
 */
  __pyx_t_3 = (__pyx_v_result == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":624
 * 
 *     if result is NULL:
 *         if context is not None:             # <<<<<<<<<<<<<<
 *             _raiseParseError(c_ctxt, filename, context._error_log)
 *         else:
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_context) != Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":625
 *     if result is NULL:
 *         if context is not None:
 *             _raiseParseError(c_ctxt, filename, context._error_log)             # <<<<<<<<<<<<<<
 *         else:
 *             _raiseParseError(c_ctxt, filename, None)
 */
      __pyx_t_10 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, __pyx_v_context->_error_log); if (unlikely(__pyx_t_10 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L15;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":627
 *             _raiseParseError(c_ctxt, filename, context._error_log)
 *         else:
 *             _raiseParseError(c_ctxt, filename, None)             # <<<<<<<<<<<<<<
 *     else:
 *         if result.URL is NULL and filename is not None:
 */
      __pyx_t_10 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_c_ctxt, __pyx_v_filename, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None)); if (unlikely(__pyx_t_10 == 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L15:;
    goto __pyx_L14;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":629
 *             _raiseParseError(c_ctxt, filename, None)
 *     else:
 *         if result.URL is NULL and filename is not None:             # <<<<<<<<<<<<<<
 *             result.URL = tree.xmlStrdup(_cstr(filename))
 *         if result.encoding is NULL:
 */
    __pyx_t_3 = (__pyx_v_result->URL == NULL);
    if (__pyx_t_3) {
      __pyx_t_4 = (__pyx_v_filename != Py_None);
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":630
 *     else:
 *         if result.URL is NULL and filename is not None:
 *             result.URL = tree.xmlStrdup(_cstr(filename))             # <<<<<<<<<<<<<<
 *         if result.encoding is NULL:
 *             result.encoding = tree.xmlStrdup("UTF-8")
 */
      __pyx_v_result->URL = xmlStrdup(PyString_AS_STRING(__pyx_v_filename));
      goto __pyx_L16;
    }
    __pyx_L16:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":631
 *         if result.URL is NULL and filename is not None:
 *             result.URL = tree.xmlStrdup(_cstr(filename))
 *         if result.encoding is NULL:             # <<<<<<<<<<<<<<
 *             result.encoding = tree.xmlStrdup("UTF-8")
 * 
 */
    __pyx_t_1 = (__pyx_v_result->encoding == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":632
 *             result.URL = tree.xmlStrdup(_cstr(filename))
 *         if result.encoding is NULL:
 *             result.encoding = tree.xmlStrdup("UTF-8")             # <<<<<<<<<<<<<<
 * 
 *     if context._validator is not None and \
 */
      __pyx_v_result->encoding = xmlStrdup(__pyx_k_20);
      goto __pyx_L17;
    }
    __pyx_L17:;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":634
 *             result.encoding = tree.xmlStrdup("UTF-8")
 * 
 *     if context._validator is not None and \             # <<<<<<<<<<<<<<
 *            context._validator._add_default_attributes:
 *         # we currently need to do this here as libxml2 does not
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_context->_validator) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":635
 * 
 *     if context._validator is not None and \
 *            context._validator._add_default_attributes:             # <<<<<<<<<<<<<<
 *         # we currently need to do this here as libxml2 does not
 *         # support inserting default attributes during parse-time
 */
    __pyx_t_3 = __pyx_v_context->_validator->_add_default_attributes;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":639
 *         # support inserting default attributes during parse-time
 *         # validation
 *         context._validator.inject_default_attributes(result)             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_context->_validator->__pyx_vtab)->inject_default_attributes(__pyx_v_context->_validator, __pyx_v_result);
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":641
 *         context._validator.inject_default_attributes(result)
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree._handleParseResult");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_error);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":643
 *     return result
 * 
 * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     if c_doc is NULL:
 */

static  int __pyx_f_4lxml_5etree__fixHtmlDictNames(xmlDict *__pyx_v_c_dict, xmlDoc *__pyx_v_c_doc) {
  xmlNode *__pyx_v_c_node;
  int __pyx_r;
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":645
 * cdef int _fixHtmlDictNames(tree.xmlDict* c_dict, xmlDoc* c_doc) nogil:
 *     cdef xmlNode* c_node
 *     if c_doc is NULL:             # <<<<<<<<<<<<<<
 *         return 0
 *     c_node = c_doc.children
 */
  __pyx_t_1 = (__pyx_v_c_doc == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":646
 *     cdef xmlNode* c_node
 *     if c_doc is NULL:
 *         return 0             # <<<<<<<<<<<<<<
 *     c_node = c_doc.children
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 0)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":647
 *     if c_doc is NULL:
 *         return 0
 *     c_node = c_doc.children             # <<<<<<<<<<<<<<
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 0)
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 */
  __pyx_v_c_node = __pyx_v_c_doc->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":648
 *         return 0
 *     c_node = c_doc.children
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 0)             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":649
 *     c_node = c_doc.children
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 0)
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
 *             return -1
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":650
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(<xmlNode*>c_doc, c_node, 0)
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:             # <<<<<<<<<<<<<<
 *             return -1
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
    __pyx_t_1 = (__pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_c_dict, __pyx_v_c_node) < 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":651
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
 *             return -1             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *     return 0
 */
      __pyx_r = -1;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":652
 *         if _fixHtmlDictNodeNames(c_dict, c_node) < 0:
 *             return -1
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":653
 *             return -1
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":655
 *     return 0
 * 
 * cdef inline int _fixHtmlDictNodeNames(tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
 *                                       xmlNode* c_node) nogil:
 *     cdef xmlNode* c_attr
 */

static CYTHON_INLINE int __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(xmlDict *__pyx_v_c_dict, xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_v_c_attr;
  char *__pyx_v_c_name;
  int __pyx_r;
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":659
 *     cdef xmlNode* c_attr
 *     cdef char* c_name
 *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)             # <<<<<<<<<<<<<<
 *     if c_name is NULL:
 *         return -1
 */
  __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->name, -1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":660
 *     cdef char* c_name
 *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
 *     if c_name is NULL:             # <<<<<<<<<<<<<<
 *         return -1
 *     if c_name is not c_node.name:
 */
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":661
 *     c_name = tree.xmlDictLookup(c_dict, c_node.name, -1)
 *     if c_name is NULL:
 *         return -1             # <<<<<<<<<<<<<<
 *     if c_name is not c_node.name:
 *         tree.xmlFree(c_node.name)
 */
    __pyx_r = -1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":662
 *     if c_name is NULL:
 *         return -1
 *     if c_name is not c_node.name:             # <<<<<<<<<<<<<<
 *         tree.xmlFree(c_node.name)
 *         c_node.name = c_name
 */
  __pyx_t_1 = (__pyx_v_c_name != __pyx_v_c_node->name);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":663
 *         return -1
 *     if c_name is not c_node.name:
 *         tree.xmlFree(c_node.name)             # <<<<<<<<<<<<<<
 *         c_node.name = c_name
 *     c_attr = <xmlNode*>c_node.properties
 */
    xmlFree(__pyx_v_c_node->name);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":664
 *     if c_name is not c_node.name:
 *         tree.xmlFree(c_node.name)
 *         c_node.name = c_name             # <<<<<<<<<<<<<<
 *     c_attr = <xmlNode*>c_node.properties
 *     while c_attr is not NULL:
 */
    __pyx_v_c_node->name = __pyx_v_c_name;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":665
 *         tree.xmlFree(c_node.name)
 *         c_node.name = c_name
 *     c_attr = <xmlNode*>c_node.properties             # <<<<<<<<<<<<<<
 *     while c_attr is not NULL:
 *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
 */
  __pyx_v_c_attr = ((xmlNode *)__pyx_v_c_node->properties);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":666
 *         c_node.name = c_name
 *     c_attr = <xmlNode*>c_node.properties
 *     while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
 *         if c_name is NULL:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_attr != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":667
 *     c_attr = <xmlNode*>c_node.properties
 *     while c_attr is not NULL:
 *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)             # <<<<<<<<<<<<<<
 *         if c_name is NULL:
 *             return -1
 */
    __pyx_v_c_name = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_attr->name, -1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":668
 *     while c_attr is not NULL:
 *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
 *         if c_name is NULL:             # <<<<<<<<<<<<<<
 *             return -1
 *         if c_name is not c_attr.name:
 */
    __pyx_t_1 = (__pyx_v_c_name == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":669
 *         c_name = tree.xmlDictLookup(c_dict, c_attr.name, -1)
 *         if c_name is NULL:
 *             return -1             # <<<<<<<<<<<<<<
 *         if c_name is not c_attr.name:
 *             tree.xmlFree(c_attr.name)
 */
      __pyx_r = -1;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":670
 *         if c_name is NULL:
 *             return -1
 *         if c_name is not c_attr.name:             # <<<<<<<<<<<<<<
 *             tree.xmlFree(c_attr.name)
 *             c_attr.name = c_name
 */
    __pyx_t_1 = (__pyx_v_c_name != __pyx_v_c_attr->name);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":671
 *             return -1
 *         if c_name is not c_attr.name:
 *             tree.xmlFree(c_attr.name)             # <<<<<<<<<<<<<<
 *             c_attr.name = c_name
 *         c_attr = c_attr.next
 */
      xmlFree(__pyx_v_c_attr->name);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":672
 *         if c_name is not c_attr.name:
 *             tree.xmlFree(c_attr.name)
 *             c_attr.name = c_name             # <<<<<<<<<<<<<<
 *         c_attr = c_attr.next
 *     return 0
 */
      __pyx_v_c_attr->name = __pyx_v_c_name;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":673
 *             tree.xmlFree(c_attr.name)
 *             c_attr.name = c_name
 *         c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_c_attr = __pyx_v_c_attr->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":674
 *             c_attr.name = c_name
 *         c_attr = c_attr.next
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef class _BaseParser:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":691
 *     cdef object _default_encoding
 * 
 *     def __init__(self, int parse_options, bint for_html, XMLSchema schema,             # <<<<<<<<<<<<<<
 *                  remove_comments, remove_pis, strip_cdata, target,
 *                  filename, encoding):
 */

static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_11_BaseParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_parse_options;
  int __pyx_v_for_html;
  struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema = 0;
  PyObject *__pyx_v_remove_comments = 0;
  PyObject *__pyx_v_remove_pis = 0;
  PyObject *__pyx_v_strip_cdata = 0;
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_encoding = 0;
  xmlCharEncodingHandler *__pyx_v_enchandler;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__parse_options,&__pyx_n_s__for_html,&__pyx_n_s__schema,&__pyx_n_s__remove_comments,&__pyx_n_s__remove_pis,&__pyx_n_s__strip_cdata,&__pyx_n_s__target,&__pyx_n_s__filename,&__pyx_n_s__encoding,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
      case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parse_options);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__for_html);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__schema);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_comments);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  4:
      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_pis);
      if (likely(values[4])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  5:
      values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strip_cdata);
      if (likely(values[5])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  6:
      values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (likely(values[6])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  7:
      values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename);
      if (likely(values[7])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  8:
      values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (likely(values[8])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_parse_options = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_for_html = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_for_html == (int)-1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[2]);
    __pyx_v_remove_comments = values[3];
    __pyx_v_remove_pis = values[4];
    __pyx_v_strip_cdata = values[5];
    __pyx_v_target = values[6];
    __pyx_v_filename = values[7];
    __pyx_v_encoding = values[8];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_parse_options = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_parse_options == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_for_html = __Pyx_PyObject_IsTrue(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_for_html == (int)-1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)PyTuple_GET_ITEM(__pyx_args, 2));
    __pyx_v_remove_comments = PyTuple_GET_ITEM(__pyx_args, 3);
    __pyx_v_remove_pis = PyTuple_GET_ITEM(__pyx_args, 4);
    __pyx_v_strip_cdata = PyTuple_GET_ITEM(__pyx_args, 5);
    __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 6);
    __pyx_v_filename = PyTuple_GET_ITEM(__pyx_args, 7);
    __pyx_v_encoding = PyTuple_GET_ITEM(__pyx_args, 8);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._BaseParser.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_schema);
  __Pyx_INCREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF(__pyx_v_encoding);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":696
 *         cdef tree.xmlCharEncodingHandler* enchandler
 *         cdef int c_encoding
 *         if not isinstance(self, HTMLParser) and \             # <<<<<<<<<<<<<<
 *                 not isinstance(self, XMLParser) and \
 *                 not isinstance(self, iterparse):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_HTMLParser))); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":697
 *         cdef int c_encoding
 *         if not isinstance(self, HTMLParser) and \
 *                 not isinstance(self, XMLParser) and \             # <<<<<<<<<<<<<<
 *                 not isinstance(self, iterparse):
 *             raise TypeError, u"This class cannot be instantiated"
 */
    __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XMLParser))); 
    __pyx_t_3 = (!__pyx_t_1);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":698
 *         if not isinstance(self, HTMLParser) and \
 *                 not isinstance(self, XMLParser) and \
 *                 not isinstance(self, iterparse):             # <<<<<<<<<<<<<<
 *             raise TypeError, u"This class cannot be instantiated"
 * 
 */
      __pyx_t_1 = PyObject_TypeCheck(__pyx_v_self, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_iterparse))); 
      __pyx_t_4 = (!__pyx_t_1);
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":699
 *                 not isinstance(self, XMLParser) and \
 *                 not isinstance(self, iterparse):
 *             raise TypeError, u"This class cannot be instantiated"             # <<<<<<<<<<<<<<
 * 
 *         self._parse_options = parse_options
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_142), 0);
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":701
 *             raise TypeError, u"This class cannot be instantiated"
 * 
 *         self._parse_options = parse_options             # <<<<<<<<<<<<<<
 *         self._filename = filename
 *         self._target = target
 */
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_parse_options = __pyx_v_parse_options;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":702
 * 
 *         self._parse_options = parse_options
 *         self._filename = filename             # <<<<<<<<<<<<<<
 *         self._target = target
 *         self._for_html = for_html
 */
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_GIVEREF(__pyx_v_filename);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_filename);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_filename);
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_filename = __pyx_v_filename;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":703
 *         self._parse_options = parse_options
 *         self._filename = filename
 *         self._target = target             # <<<<<<<<<<<<<<
 *         self._for_html = for_html
 *         self._remove_comments = remove_comments
 */
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_target);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_target);
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_target = __pyx_v_target;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":704
 *         self._filename = filename
 *         self._target = target
 *         self._for_html = for_html             # <<<<<<<<<<<<<<
 *         self._remove_comments = remove_comments
 *         self._remove_pis = remove_pis
 */
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_for_html = __pyx_v_for_html;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":705
 *         self._target = target
 *         self._for_html = for_html
 *         self._remove_comments = remove_comments             # <<<<<<<<<<<<<<
 *         self._remove_pis = remove_pis
 *         self._strip_cdata = strip_cdata
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_remove_comments); if (unlikely((__pyx_t_3 == (int)-1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_remove_comments = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":706
 *         self._for_html = for_html
 *         self._remove_comments = remove_comments
 *         self._remove_pis = remove_pis             # <<<<<<<<<<<<<<
 *         self._strip_cdata = strip_cdata
 *         self._schema = schema
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_remove_pis); if (unlikely((__pyx_t_3 == (int)-1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_remove_pis = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":707
 *         self._remove_comments = remove_comments
 *         self._remove_pis = remove_pis
 *         self._strip_cdata = strip_cdata             # <<<<<<<<<<<<<<
 *         self._schema = schema
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely((__pyx_t_3 == (int)-1))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_strip_cdata = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":708
 *         self._remove_pis = remove_pis
 *         self._strip_cdata = strip_cdata
 *         self._schema = schema             # <<<<<<<<<<<<<<
 * 
 *         self._resolvers = _ResolverRegistry()
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_schema));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_schema));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_schema);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_schema));
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_schema = __pyx_v_schema;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":710
 *         self._schema = schema
 * 
 *         self._resolvers = _ResolverRegistry()             # <<<<<<<<<<<<<<
 * 
 *         if encoding is None:
 */
  __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ResolverRegistry)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_resolvers);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_resolvers));
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":712
 *         self._resolvers = _ResolverRegistry()
 * 
 *         if encoding is None:             # <<<<<<<<<<<<<<
 *             self._default_encoding = None
 *         else:
 */
  __pyx_t_3 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":713
 * 
 *         if encoding is None:
 *             self._default_encoding = None             # <<<<<<<<<<<<<<
 *         else:
 *             encoding = _utf8(encoding)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding);
    ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding = Py_None;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":715
 *             self._default_encoding = None
 *         else:
 *             encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
 *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
 *             if enchandler is NULL:
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":716
 *         else:
 *             encoding = _utf8(encoding)
 *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))             # <<<<<<<<<<<<<<
 *             if enchandler is NULL:
 *                 raise LookupError, u"unknown encoding: '%s'" % encoding
 */
    __pyx_v_enchandler = xmlFindCharEncodingHandler(PyString_AS_STRING(__pyx_v_encoding));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":717
 *             encoding = _utf8(encoding)
 *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
 *             if enchandler is NULL:             # <<<<<<<<<<<<<<
 *                 raise LookupError, u"unknown encoding: '%s'" % encoding
 *             tree.xmlCharEncCloseFunc(enchandler)
 */
    __pyx_t_3 = (__pyx_v_enchandler == NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":718
 *             enchandler = tree.xmlFindCharEncodingHandler(_cstr(encoding))
 *             if enchandler is NULL:
 *                 raise LookupError, u"unknown encoding: '%s'" % encoding             # <<<<<<<<<<<<<<
 *             tree.xmlCharEncCloseFunc(enchandler)
 *             self._default_encoding = encoding
 */
      __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_143), __pyx_v_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_5, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":719
 *             if enchandler is NULL:
 *                 raise LookupError, u"unknown encoding: '%s'" % encoding
 *             tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
 *             self._default_encoding = encoding
 * 
 */
    xmlCharEncCloseFunc(__pyx_v_enchandler);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":720
 *                 raise LookupError, u"unknown encoding: '%s'" % encoding
 *             tree.xmlCharEncCloseFunc(enchandler)
 *             self._default_encoding = encoding             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _getParserContext(self):
 */
    __Pyx_INCREF(__pyx_v_encoding);
    __Pyx_GIVEREF(__pyx_v_encoding);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding);
    ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_default_encoding = __pyx_v_encoding;
  }
  __pyx_L7:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._BaseParser.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_schema);
  __Pyx_DECREF(__pyx_v_remove_comments);
  __Pyx_DECREF(__pyx_v_remove_pis);
  __Pyx_DECREF(__pyx_v_strip_cdata);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":722
 *             self._default_encoding = encoding
 * 
 *     cdef _ParserContext _getParserContext(self):             # <<<<<<<<<<<<<<
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._parser_context is None:
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_BaseParser__getParserContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
  xmlParserCtxt *__pyx_v_pctxt;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_getParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":724
 *     cdef _ParserContext _getParserContext(self):
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._parser_context is None:             # <<<<<<<<<<<<<<
 *             self._parser_context = self._createContext(self._target)
 *             if self._schema is not None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_parser_context) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":725
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._parser_context is None:
 *             self._parser_context = self._createContext(self._target)             # <<<<<<<<<<<<<<
 *             if self._schema is not None:
 *                 self._parser_context._validator = \
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_v_self->_target)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_parser_context);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_parser_context));
    __pyx_v_self->_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":726
 *         if self._parser_context is None:
 *             self._parser_context = self._createContext(self._target)
 *             if self._schema is not None:             # <<<<<<<<<<<<<<
 *                 self._parser_context._validator = \
 *                     self._schema._newSaxValidator(
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_self->_schema) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":729
 *                 self._parser_context._validator = \
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)             # <<<<<<<<<<<<<<
 *             pctxt = self._newParserCtxt()
 *             if pctxt is NULL:
 */
      __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":727
 *             self._parser_context = self._createContext(self._target)
 *             if self._schema is not None:
 *                 self._parser_context._validator = \             # <<<<<<<<<<<<<<
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_self->_parser_context->_validator);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_parser_context->_validator));
      __pyx_v_self->_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":730
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 *             pctxt = self._newParserCtxt()             # <<<<<<<<<<<<<<
 *             if pctxt is NULL:
 *                 python.PyErr_NoMemory()
 */
    __pyx_v_pctxt = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newParserCtxt(__pyx_v_self);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":731
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 *             pctxt = self._newParserCtxt()
 *             if pctxt is NULL:             # <<<<<<<<<<<<<<
 *                 python.PyErr_NoMemory()
 *             _initParserContext(self._parser_context, self._resolvers, pctxt)
 */
    __pyx_t_1 = (__pyx_v_pctxt == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":732
 *             pctxt = self._newParserCtxt()
 *             if pctxt is NULL:
 *                 python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             _initParserContext(self._parser_context, self._resolvers, pctxt)
 *             if self._remove_comments:
 */
      __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":733
 *             if pctxt is NULL:
 *                 python.PyErr_NoMemory()
 *             _initParserContext(self._parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_self->_parser_context, __pyx_v_self->_resolvers, __pyx_v_pctxt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":734
 *                 python.PyErr_NoMemory()
 *             _initParserContext(self._parser_context, self._resolvers, pctxt)
 *             if self._remove_comments:             # <<<<<<<<<<<<<<
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:
 */
    __pyx_t_1 = __pyx_v_self->_remove_comments;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":735
 *             _initParserContext(self._parser_context, self._resolvers, pctxt)
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL             # <<<<<<<<<<<<<<
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL
 */
      __pyx_v_pctxt->sax->comment = NULL;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":736
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:             # <<<<<<<<<<<<<<
 *                 pctxt.sax.processingInstruction = NULL
 *             if self._strip_cdata:
 */
    __pyx_t_1 = __pyx_v_self->_remove_pis;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":737
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
 *             if self._strip_cdata:
 *                 # hard switch-off for CDATA nodes => makes them plain text
 */
      __pyx_v_pctxt->sax->processingInstruction = NULL;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":738
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL
 *             if self._strip_cdata:             # <<<<<<<<<<<<<<
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL
 */
    __pyx_t_1 = __pyx_v_self->_strip_cdata;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":740
 *             if self._strip_cdata:
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
 *         return self._parser_context
 * 
 */
      __pyx_v_pctxt->sax->cdataBlock = NULL;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":741
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL
 *         return self._parser_context             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _getPushParserContext(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_parser_context));
  __pyx_r = __pyx_v_self->_parser_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser._getParserContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":743
 *         return self._parser_context
 * 
 *     cdef _ParserContext _getPushParserContext(self):             # <<<<<<<<<<<<<<
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._push_parser_context is None:
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_BaseParser__getPushParserContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
  xmlParserCtxt *__pyx_v_pctxt;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_getPushParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":745
 *     cdef _ParserContext _getPushParserContext(self):
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._push_parser_context is None:             # <<<<<<<<<<<<<<
 *             self._push_parser_context = self._createContext(self._target)
 *             if self._schema is not None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_push_parser_context) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":746
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         if self._push_parser_context is None:
 *             self._push_parser_context = self._createContext(self._target)             # <<<<<<<<<<<<<<
 *             if self._schema is not None:
 *                 self._push_parser_context._validator = \
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_createContext(__pyx_v_self, __pyx_v_self->_target)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_push_parser_context);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_push_parser_context));
    __pyx_v_self->_push_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":747
 *         if self._push_parser_context is None:
 *             self._push_parser_context = self._createContext(self._target)
 *             if self._schema is not None:             # <<<<<<<<<<<<<<
 *                 self._push_parser_context._validator = \
 *                     self._schema._newSaxValidator(
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_self->_schema) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":750
 *                 self._push_parser_context._validator = \
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)             # <<<<<<<<<<<<<<
 *             pctxt = self._newPushParserCtxt()
 *             if pctxt is NULL:
 */
      __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, (__pyx_v_self->_parse_options & XML_PARSE_DTDATTR))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":748
 *             self._push_parser_context = self._createContext(self._target)
 *             if self._schema is not None:
 *                 self._push_parser_context._validator = \             # <<<<<<<<<<<<<<
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_self->_push_parser_context->_validator);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_push_parser_context->_validator));
      __pyx_v_self->_push_parser_context->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":751
 *                     self._schema._newSaxValidator(
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 *             pctxt = self._newPushParserCtxt()             # <<<<<<<<<<<<<<
 *             if pctxt is NULL:
 *                 python.PyErr_NoMemory()
 */
    __pyx_v_pctxt = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_newPushParserCtxt(__pyx_v_self);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":752
 *                         self._parse_options & xmlparser.XML_PARSE_DTDATTR)
 *             pctxt = self._newPushParserCtxt()
 *             if pctxt is NULL:             # <<<<<<<<<<<<<<
 *                 python.PyErr_NoMemory()
 *             _initParserContext(
 */
    __pyx_t_1 = (__pyx_v_pctxt == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":753
 *             pctxt = self._newPushParserCtxt()
 *             if pctxt is NULL:
 *                 python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             _initParserContext(
 *                 self._push_parser_context, self._resolvers, pctxt)
 */
      __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":755
 *                 python.PyErr_NoMemory()
 *             _initParserContext(
 *                 self._push_parser_context, self._resolvers, pctxt)             # <<<<<<<<<<<<<<
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__initParserContext(__pyx_v_self->_push_parser_context, __pyx_v_self->_resolvers, __pyx_v_pctxt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":756
 *             _initParserContext(
 *                 self._push_parser_context, self._resolvers, pctxt)
 *             if self._remove_comments:             # <<<<<<<<<<<<<<
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:
 */
    __pyx_t_1 = __pyx_v_self->_remove_comments;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":757
 *                 self._push_parser_context, self._resolvers, pctxt)
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL             # <<<<<<<<<<<<<<
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL
 */
      __pyx_v_pctxt->sax->comment = NULL;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":758
 *             if self._remove_comments:
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:             # <<<<<<<<<<<<<<
 *                 pctxt.sax.processingInstruction = NULL
 *             if self._strip_cdata:
 */
    __pyx_t_1 = __pyx_v_self->_remove_pis;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":759
 *                 pctxt.sax.comment = NULL
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
 *             if self._strip_cdata:
 *                 # hard switch-off for CDATA nodes => makes them plain text
 */
      __pyx_v_pctxt->sax->processingInstruction = NULL;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":760
 *             if self._remove_pis:
 *                 pctxt.sax.processingInstruction = NULL
 *             if self._strip_cdata:             # <<<<<<<<<<<<<<
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL
 */
    __pyx_t_1 = __pyx_v_self->_strip_cdata;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":762
 *             if self._strip_cdata:
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
 *         return self._push_parser_context
 * 
 */
      __pyx_v_pctxt->sax->cdataBlock = NULL;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":763
 *                 # hard switch-off for CDATA nodes => makes them plain text
 *                 pctxt.sax.cdataBlock = NULL
 *         return self._push_parser_context             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _createContext(self, target):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_push_parser_context));
  __pyx_r = __pyx_v_self->_push_parser_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser._getPushParserContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":765
 *         return self._push_parser_context
 * 
 *     cdef _ParserContext _createContext(self, target):             # <<<<<<<<<<<<<<
 *         cdef _TargetParserContext context
 *         if target is None:
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_11_BaseParser__createContext(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v_target) {
  struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_createContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_target);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":767
 *     cdef _ParserContext _createContext(self, target):
 *         cdef _TargetParserContext context
 *         if target is None:             # <<<<<<<<<<<<<<
 *             return _ParserContext()
 *         context = _TargetParserContext()
 */
  __pyx_t_1 = (__pyx_v_target == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":768
 *         cdef _TargetParserContext context
 *         if target is None:
 *             return _ParserContext()             # <<<<<<<<<<<<<<
 *         context = _TargetParserContext()
 *         context._setTarget(target)
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ParserContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":769
 *         if target is None:
 *             return _ParserContext()
 *         context = _TargetParserContext()             # <<<<<<<<<<<<<<
 *         context._setTarget(target)
 *         return context
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__TargetParserContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":770
 *             return _ParserContext()
 *         context = _TargetParserContext()
 *         context._setTarget(target)             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setTarget(__pyx_v_context, __pyx_v_target); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":771
 *         context = _TargetParserContext()
 *         context._setTarget(target)
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_context);
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser._createContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":773
 *         return context
 * 
 *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self):             # <<<<<<<<<<<<<<
 *         if self._for_html:
 *             return htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
 */

static  xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
  xmlParserCtxt *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_newParserCtxt");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":774
 * 
 *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self):
 *         if self._for_html:             # <<<<<<<<<<<<<<
 *             return htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
 *         else:
 */
  __pyx_t_1 = __pyx_v_self->_for_html;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":775
 *     cdef xmlparser.xmlParserCtxt* _newParserCtxt(self):
 *         if self._for_html:
 *             return htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)             # <<<<<<<<<<<<<<
 *         else:
 *             return xmlparser.xmlNewParserCtxt()
 */
    __pyx_r = htmlCreateMemoryParserCtxt(__pyx_k__dummy, 5);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":777
 *             return htmlparser.htmlCreateMemoryParserCtxt('dummy', 5)
 *         else:
 *             return xmlparser.xmlNewParserCtxt()             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self):
 */
    __pyx_r = xmlNewParserCtxt();
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":779
 *             return xmlparser.xmlNewParserCtxt()
 * 
 *     cdef xmlparser.xmlParserCtxt* _newPushParserCtxt(self):             # <<<<<<<<<<<<<<
 *         cdef xmlparser.xmlParserCtxt* c_ctxt
 *         cdef char* c_filename
 */

static  xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
  xmlParserCtxt *__pyx_v_c_ctxt;
  char *__pyx_v_c_filename;
  xmlParserCtxt *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_newPushParserCtxt");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":782
 *         cdef xmlparser.xmlParserCtxt* c_ctxt
 *         cdef char* c_filename
 *         if self._filename is not None:             # <<<<<<<<<<<<<<
 *             c_filename = _cstr(self._filename)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_filename != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":783
 *         cdef char* c_filename
 *         if self._filename is not None:
 *             c_filename = _cstr(self._filename)             # <<<<<<<<<<<<<<
 *         else:
 *             c_filename = NULL
 */
    __pyx_v_c_filename = PyString_AS_STRING(__pyx_v_self->_filename);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":785
 *             c_filename = _cstr(self._filename)
 *         else:
 *             c_filename = NULL             # <<<<<<<<<<<<<<
 *         if self._for_html:
 *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
 */
    __pyx_v_c_filename = NULL;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":786
 *         else:
 *             c_filename = NULL
 *         if self._for_html:             # <<<<<<<<<<<<<<
 *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
 *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
 */
  __pyx_t_1 = __pyx_v_self->_for_html;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":788
 *         if self._for_html:
 *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
 *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)             # <<<<<<<<<<<<<<
 *             if c_ctxt is not NULL:
 *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
 */
    __pyx_v_c_ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename, XML_CHAR_ENCODING_NONE);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":789
 *             c_ctxt = htmlparser.htmlCreatePushParserCtxt(
 *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
 *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)
 *         else:
 */
    __pyx_t_1 = (__pyx_v_c_ctxt != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":790
 *                 NULL, NULL, NULL, 0, c_filename, tree.XML_CHAR_ENCODING_NONE)
 *             if c_ctxt is not NULL:
 *                 htmlparser.htmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
 *         else:
 *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
 */
      htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options);
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":793
 *         else:
 *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
 *                 NULL, NULL, NULL, 0, c_filename)             # <<<<<<<<<<<<<<
 *             if c_ctxt is not NULL:
 *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
 */
    __pyx_v_c_ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, __pyx_v_c_filename);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":794
 *             c_ctxt = xmlparser.xmlCreatePushParserCtxt(
 *                 NULL, NULL, NULL, 0, c_filename)
 *             if c_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
 *         return c_ctxt
 */
    __pyx_t_1 = (__pyx_v_c_ctxt != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":795
 *                 NULL, NULL, NULL, 0, c_filename)
 *             if c_ctxt is not NULL:
 *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
 *         return c_ctxt
 * 
 */
      xmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_self->_parse_options);
      goto __pyx_L6;
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":796
 *             if c_ctxt is not NULL:
 *                 xmlparser.xmlCtxtUseOptions(c_ctxt, self._parse_options)
 *         return c_ctxt             # <<<<<<<<<<<<<<
 * 
 *     property error_log:
 */
  __pyx_r = __pyx_v_c_ctxt;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":801
 *         u"""The error log of the last parser run.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef _ParserContext context
 *             context = self._getParserContext()
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(PyObject *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":803
 *         def __get__(self):
 *             cdef _ParserContext context
 *             context = self._getParserContext()             # <<<<<<<<<<<<<<
 *             return context._error_log.copy()
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->__pyx_vtab)->_getParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":804
 *             cdef _ParserContext context
 *             context = self._getParserContext()
 *             return context._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     property resolvers:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":808
 *     property resolvers:
 *         u"The custom resolver registry of this parser."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._resolvers
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":809
 *         u"The custom resolver registry of this parser."
 *         def __get__(self):
 *             return self._resolvers             # <<<<<<<<<<<<<<
 * 
 *     property version:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_resolvers));
  __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_resolvers);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":813
 *     property version:
 *         u"The version of the underlying XML parser."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":814
 *         u"The version of the underlying XML parser."
 *         def __get__(self):
 *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION             # <<<<<<<<<<<<<<
 * 
 *     def setElementClassLookup(self, ElementClassLookup lookup = None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__LIBXML_VERSION); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_146), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser.version.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":816
 *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
 * 
 *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
 *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
 *         self.set_element_class_lookup(lookup)
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_setElementClassLookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11_BaseParser_setElementClassLookup[] = ":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead.";
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_setElementClassLookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementClassLookup *__pyx_v_lookup = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lookup,0};
  __Pyx_RefNannySetupContext("setElementClassLookup");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lookup);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "setElementClassLookup") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)values[0]);
  } else {
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_lookup = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setElementClassLookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._BaseParser.setElementClassLookup");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":818
 *     def setElementClassLookup(self, ElementClassLookup lookup = None):
 *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
 *         self.set_element_class_lookup(lookup)             # <<<<<<<<<<<<<<
 * 
 *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s_147); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_lookup));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._BaseParser.setElementClassLookup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":820
 *         self.set_element_class_lookup(lookup)
 * 
 *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
 *         u"""set_element_class_lookup(self, lookup = None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_set_element_class_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11_BaseParser_set_element_class_lookup[] = "set_element_class_lookup(self, lookup = None)\n\n        Set a lookup scheme for element classes generated from this parser.\n\n        Reset it by passing None or nothing.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_set_element_class_lookup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementClassLookup *__pyx_v_lookup = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lookup,0};
  __Pyx_RefNannySetupContext("set_element_class_lookup");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lookup);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set_element_class_lookup") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)values[0]);
  } else {
    __pyx_v_lookup = ((struct LxmlElementClassLookup *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_lookup = ((struct LxmlElementClassLookup *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._BaseParser.set_element_class_lookup");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":827
 *         Reset it by passing None or nothing.
 *         """
 *         self._class_lookup = lookup             # <<<<<<<<<<<<<<
 * 
 *     cdef _BaseParser _copy(self):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_lookup));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lookup));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_class_lookup);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_class_lookup));
  ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->_class_lookup = __pyx_v_lookup;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._BaseParser.set_element_class_lookup");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":829
 *         self._class_lookup = lookup
 * 
 *     cdef _BaseParser _copy(self):             # <<<<<<<<<<<<<<
 *         u"Create a new parser with the same configuration."
 *         cdef _BaseParser parser
 */

static  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_f_4lxml_5etree_11_BaseParser__copy(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser;
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":832
 *         u"Create a new parser with the same configuration."
 *         cdef _BaseParser parser
 *         parser = self.__class__()             # <<<<<<<<<<<<<<
 *         parser._parse_options = self._parse_options
 *         parser._for_html = self._for_html
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_parser));
  __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":833
 *         cdef _BaseParser parser
 *         parser = self.__class__()
 *         parser._parse_options = self._parse_options             # <<<<<<<<<<<<<<
 *         parser._for_html = self._for_html
 *         parser._remove_comments = self._remove_comments
 */
  __pyx_v_parser->_parse_options = __pyx_v_self->_parse_options;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":834
 *         parser = self.__class__()
 *         parser._parse_options = self._parse_options
 *         parser._for_html = self._for_html             # <<<<<<<<<<<<<<
 *         parser._remove_comments = self._remove_comments
 *         parser._remove_pis = self._remove_pis
 */
  __pyx_v_parser->_for_html = __pyx_v_self->_for_html;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":835
 *         parser._parse_options = self._parse_options
 *         parser._for_html = self._for_html
 *         parser._remove_comments = self._remove_comments             # <<<<<<<<<<<<<<
 *         parser._remove_pis = self._remove_pis
 *         parser._strip_cdata = self._strip_cdata
 */
  __pyx_v_parser->_remove_comments = __pyx_v_self->_remove_comments;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":836
 *         parser._for_html = self._for_html
 *         parser._remove_comments = self._remove_comments
 *         parser._remove_pis = self._remove_pis             # <<<<<<<<<<<<<<
 *         parser._strip_cdata = self._strip_cdata
 *         parser._filename = self._filename
 */
  __pyx_v_parser->_remove_pis = __pyx_v_self->_remove_pis;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":837
 *         parser._remove_comments = self._remove_comments
 *         parser._remove_pis = self._remove_pis
 *         parser._strip_cdata = self._strip_cdata             # <<<<<<<<<<<<<<
 *         parser._filename = self._filename
 *         parser._resolvers = self._resolvers
 */
  __pyx_v_parser->_strip_cdata = __pyx_v_self->_strip_cdata;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":838
 *         parser._remove_pis = self._remove_pis
 *         parser._strip_cdata = self._strip_cdata
 *         parser._filename = self._filename             # <<<<<<<<<<<<<<
 *         parser._resolvers = self._resolvers
 *         parser._target = self._target
 */
  __Pyx_INCREF(__pyx_v_self->_filename);
  __Pyx_GIVEREF(__pyx_v_self->_filename);
  __Pyx_GOTREF(__pyx_v_parser->_filename);
  __Pyx_DECREF(__pyx_v_parser->_filename);
  __pyx_v_parser->_filename = __pyx_v_self->_filename;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":839
 *         parser._strip_cdata = self._strip_cdata
 *         parser._filename = self._filename
 *         parser._resolvers = self._resolvers             # <<<<<<<<<<<<<<
 *         parser._target = self._target
 *         parser._class_lookup  = self._class_lookup
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_resolvers));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_resolvers));
  __Pyx_GOTREF(__pyx_v_parser->_resolvers);
  __Pyx_DECREF(((PyObject *)__pyx_v_parser->_resolvers));
  __pyx_v_parser->_resolvers = __pyx_v_self->_resolvers;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":840
 *         parser._filename = self._filename
 *         parser._resolvers = self._resolvers
 *         parser._target = self._target             # <<<<<<<<<<<<<<
 *         parser._class_lookup  = self._class_lookup
 *         return parser
 */
  __Pyx_INCREF(__pyx_v_self->_target);
  __Pyx_GIVEREF(__pyx_v_self->_target);
  __Pyx_GOTREF(__pyx_v_parser->_target);
  __Pyx_DECREF(__pyx_v_parser->_target);
  __pyx_v_parser->_target = __pyx_v_self->_target;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":841
 *         parser._resolvers = self._resolvers
 *         parser._target = self._target
 *         parser._class_lookup  = self._class_lookup             # <<<<<<<<<<<<<<
 *         return parser
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_class_lookup));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_class_lookup));
  __Pyx_GOTREF(__pyx_v_parser->_class_lookup);
  __Pyx_DECREF(((PyObject *)__pyx_v_parser->_class_lookup));
  __pyx_v_parser->_class_lookup = __pyx_v_self->_class_lookup;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":842
 *         parser._target = self._target
 *         parser._class_lookup  = self._class_lookup
 *         return parser             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_parser));
  __pyx_r = __pyx_v_parser;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":844
 *         return parser
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         u"""copy(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_11_BaseParser_copy[] = "copy(self)\n\n        Create a new parser with the same configuration.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":849
 *         Create a new parser with the same configuration.
 *         """
 *         return self._copy()             # <<<<<<<<<<<<<<
 * 
 *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self)->__pyx_vtab)->_copy(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._BaseParser.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":851
 *         return self._copy()
 * 
 *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
 *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_makeelement(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11_BaseParser_makeelement[] = "makeelement(self, _tag, attrib=None, nsmap=None, **_extra)\n\n        Creates a new element associated with this parser.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_makeelement(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__tag = 0;
  PyObject *__pyx_v_attrib = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_v__extra = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("makeelement");
  __pyx_v__extra = PyDict_New(); if (unlikely(!__pyx_v__extra)) return NULL;
  __Pyx_GOTREF(__pyx_v__extra);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___tag);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrib);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nsmap);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, PyTuple_GET_SIZE(__pyx_args), "makeelement") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__tag = values[0];
    __pyx_v_attrib = values[1];
    __pyx_v_nsmap = values[2];
  } else {
    __pyx_v_attrib = ((PyObject *)Py_None);
    __pyx_v_nsmap = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_nsmap = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_attrib = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v__tag = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_AddTraceback("lxml.etree._BaseParser.makeelement");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":856
 *         Creates a new element associated with this parser.
 *         """
 *         return _makeElement(_tag, NULL, None, self, None, None,             # <<<<<<<<<<<<<<
 *                             attrib, nsmap, _extra)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":857
 *         """
 *         return _makeElement(_tag, NULL, None, self, None, None,
 *                             attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
 * 
 *     # internal parser methods
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._BaseParser.makeelement");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__extra);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":861
 *     # internal parser methods
 * 
 *     cdef xmlDoc* _parseUnicodeDoc(self, utext, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
 *         u"""Parse unicode document, share dictionary if possible.
 *         """
 */

static  xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v_utext, char *__pyx_v_c_filename) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  xmlDoc *__pyx_v_result;
  xmlParserCtxt *__pyx_v_pctxt;
  Py_ssize_t __pyx_v_py_buffer_len;
  int __pyx_v_buffer_len;
  char *__pyx_v_c_text;
  PyObject *__pyx_v_text_utf;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  xmlDoc *__pyx_t_5;
  int __pyx_t_6;
  xmlDoc *__pyx_t_7;
  __Pyx_RefNannySetupContext("_parseUnicodeDoc");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_utext);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_text_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":870
 *         cdef int buffer_len
 *         cdef char* c_text
 *         py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)             # <<<<<<<<<<<<<<
 *         if py_buffer_len > python.INT_MAX or _UNICODE_ENCODING is NULL:
 *             text_utf = python.PyUnicode_AsUTF8String(utext)
 */
  __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_utext);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":871
 *         cdef char* c_text
 *         py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
 *         if py_buffer_len > python.INT_MAX or _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
 *             text_utf = python.PyUnicode_AsUTF8String(utext)
 *             py_buffer_len = python.PyString_GET_SIZE(text_utf)
 */
  __pyx_t_1 = (__pyx_v_py_buffer_len > INT_MAX);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":872
 *         py_buffer_len = python.PyUnicode_GET_DATA_SIZE(utext)
 *         if py_buffer_len > python.INT_MAX or _UNICODE_ENCODING is NULL:
 *             text_utf = python.PyUnicode_AsUTF8String(utext)             # <<<<<<<<<<<<<<
 *             py_buffer_len = python.PyString_GET_SIZE(text_utf)
 *             return self._parseDoc(_cstr(text_utf), py_buffer_len, c_filename)
 */
    __pyx_t_4 = PyUnicode_AsUTF8String(__pyx_v_utext); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_text_utf);
    __pyx_v_text_utf = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":873
 *         if py_buffer_len > python.INT_MAX or _UNICODE_ENCODING is NULL:
 *             text_utf = python.PyUnicode_AsUTF8String(utext)
 *             py_buffer_len = python.PyString_GET_SIZE(text_utf)             # <<<<<<<<<<<<<<
 *             return self._parseDoc(_cstr(text_utf), py_buffer_len, c_filename)
 *         buffer_len = py_buffer_len
 */
    __pyx_v_py_buffer_len = PyString_GET_SIZE(__pyx_v_text_utf);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":874
 *             text_utf = python.PyUnicode_AsUTF8String(utext)
 *             py_buffer_len = python.PyString_GET_SIZE(text_utf)
 *             return self._parseDoc(_cstr(text_utf), py_buffer_len, c_filename)             # <<<<<<<<<<<<<<
 *         buffer_len = py_buffer_len
 * 
 */
    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_parseDoc(__pyx_v_self, PyString_AS_STRING(__pyx_v_text_utf), __pyx_v_py_buffer_len, __pyx_v_c_filename); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = __pyx_t_5;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":875
 *             py_buffer_len = python.PyString_GET_SIZE(text_utf)
 *             return self._parseDoc(_cstr(text_utf), py_buffer_len, c_filename)
 *         buffer_len = py_buffer_len             # <<<<<<<<<<<<<<
 * 
 *         context = self._getParserContext()
 */
  __pyx_v_buffer_len = __pyx_v_py_buffer_len;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":877
 *         buffer_len = py_buffer_len
 * 
 *         context = self._getParserContext()             # <<<<<<<<<<<<<<
 *         context.prepare()
 *         try:
 */
  __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":878
 * 
 *         context = self._getParserContext()
 *         context.prepare()             # <<<<<<<<<<<<<<
 *         try:
 *             pctxt = context._c_ctxt
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":879
 *         context = self._getParserContext()
 *         context.prepare()
 *         try:             # <<<<<<<<<<<<<<
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":880
 *         context.prepare()
 *         try:
 *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 */
    __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":881
 *         try:
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
 * 
 *             c_text = python.PyUnicode_AS_DATA(utext)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":883
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 *             c_text = python.PyUnicode_AS_DATA(utext)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 if self._for_html:
 */
    __pyx_v_c_text = PyUnicode_AS_DATA(__pyx_v_utext);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":884
 * 
 *             c_text = python.PyUnicode_AS_DATA(utext)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadMemory(
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":885
 *             c_text = python.PyUnicode_AS_DATA(utext)
 *             with nogil:
 *                 if self._for_html:             # <<<<<<<<<<<<<<
 *                     result = htmlparser.htmlCtxtReadMemory(
 *                         pctxt, c_text, buffer_len, c_filename, _UNICODE_ENCODING,
 */
        __pyx_t_3 = __pyx_v_self->_for_html;
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":888
 *                     result = htmlparser.htmlCtxtReadMemory(
 *                         pctxt, c_text, buffer_len, c_filename, _UNICODE_ENCODING,
 *                         self._parse_options)             # <<<<<<<<<<<<<<
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 */
          __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_4lxml_5etree__UNICODE_ENCODING, __pyx_v_self->_parse_options);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":889
 *                         pctxt, c_text, buffer_len, c_filename, _UNICODE_ENCODING,
 *                         self._parse_options)
 *                     if result is not NULL:             # <<<<<<<<<<<<<<
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 */
          __pyx_t_3 = (__pyx_v_result != NULL);
          if (__pyx_t_3) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":890
 *                         self._parse_options)
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL
 */
            __pyx_t_3 = (__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0);
            if (__pyx_t_3) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":891
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *                             result = NULL
 *                 else:
 */
              xmlFreeDoc(__pyx_v_result);

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":892
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL             # <<<<<<<<<<<<<<
 *                 else:
 *                     result = xmlparser.xmlCtxtReadMemory(
 */
              __pyx_v_result = NULL;
              goto __pyx_L12;
            }
            __pyx_L12:;
            goto __pyx_L11;
          }
          __pyx_L11:;
          goto __pyx_L10;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":896
 *                     result = xmlparser.xmlCtxtReadMemory(
 *                         pctxt, c_text, buffer_len, c_filename, _UNICODE_ENCODING,
 *                         self._parse_options)             # <<<<<<<<<<<<<<
 * 
 *             return context._handleParseResultDoc(self, result, None)
 */
          __pyx_v_result = xmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_buffer_len, __pyx_v_c_filename, __pyx_v_4lxml_5etree__UNICODE_ENCODING, __pyx_v_self->_parse_options);
        }
        __pyx_L10:;
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":884
 * 
 *             c_text = python.PyUnicode_AS_DATA(utext)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadMemory(
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":898
 *                         self._parse_options)
 * 
 *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
 *         finally:
 *             context.cleanup()
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __pyx_r = __pyx_t_7;
    goto __pyx_L4;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L6;
    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 3; goto __pyx_L6;
    __pyx_L5: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":900
 *             return context._handleParseResultDoc(self, result, None)
 *         finally:
 *             context.cleanup()             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _parseDoc(self, char* c_text, Py_ssize_t c_len,
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 3: goto __pyx_L0;
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._BaseParser._parseUnicodeDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_text_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_utext);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":902
 *             context.cleanup()
 * 
 *     cdef xmlDoc* _parseDoc(self, char* c_text, Py_ssize_t c_len,             # <<<<<<<<<<<<<<
 *                            char* c_filename) except NULL:
 *         u"""Parse document, share dictionary if possible.
 */

static  xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDoc(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, char *__pyx_v_c_text, Py_ssize_t __pyx_v_c_len, char *__pyx_v_c_filename) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  xmlDoc *__pyx_v_result;
  xmlParserCtxt *__pyx_v_pctxt;
  char *__pyx_v_c_encoding;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  xmlDoc *__pyx_t_4;
  __Pyx_RefNannySetupContext("_parseDoc");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":910
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         cdef char* c_encoding
 *         if c_len > python.INT_MAX:             # <<<<<<<<<<<<<<
 *             raise ParserError, u"string is too long to parse it with libxml2"
 * 
 */
  __pyx_t_1 = (__pyx_v_c_len > INT_MAX);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":911
 *         cdef char* c_encoding
 *         if c_len > python.INT_MAX:
 *             raise ParserError, u"string is too long to parse it with libxml2"             # <<<<<<<<<<<<<<
 * 
 *         context = self._getParserContext()
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParserError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_149), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":913
 *             raise ParserError, u"string is too long to parse it with libxml2"
 * 
 *         context = self._getParserContext()             # <<<<<<<<<<<<<<
 *         context.prepare()
 *         try:
 */
  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":914
 * 
 *         context = self._getParserContext()
 *         context.prepare()             # <<<<<<<<<<<<<<
 *         try:
 *             pctxt = context._c_ctxt
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":915
 *         context = self._getParserContext()
 *         context.prepare()
 *         try:             # <<<<<<<<<<<<<<
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":916
 *         context.prepare()
 *         try:
 *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 */
    __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":917
 *         try:
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
 * 
 *             if self._default_encoding is None:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":919
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
 *                 c_encoding = NULL
 *             else:
 */
    __pyx_t_1 = (__pyx_v_self->_default_encoding == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":920
 * 
 *             if self._default_encoding is None:
 *                 c_encoding = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 c_encoding = _cstr(self._default_encoding)
 */
      __pyx_v_c_encoding = NULL;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":922
 *                 c_encoding = NULL
 *             else:
 *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
 * 
 *             with nogil:
 */
      __pyx_v_c_encoding = PyString_AS_STRING(__pyx_v_self->_default_encoding);
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":924
 *                 c_encoding = _cstr(self._default_encoding)
 * 
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadMemory(
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":925
 * 
 *             with nogil:
 *                 if self._for_html:             # <<<<<<<<<<<<<<
 *                     result = htmlparser.htmlCtxtReadMemory(
 *                         pctxt, c_text, c_len, c_filename,
 */
        __pyx_t_1 = __pyx_v_self->_for_html;
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":928
 *                     result = htmlparser.htmlCtxtReadMemory(
 *                         pctxt, c_text, c_len, c_filename,
 *                         c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 */
          __pyx_v_result = htmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":929
 *                         pctxt, c_text, c_len, c_filename,
 *                         c_encoding, self._parse_options)
 *                     if result is not NULL:             # <<<<<<<<<<<<<<
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 */
          __pyx_t_1 = (__pyx_v_result != NULL);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":930
 *                         c_encoding, self._parse_options)
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL
 */
            __pyx_t_1 = (__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0);
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":931
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *                             result = NULL
 *                 else:
 */
              xmlFreeDoc(__pyx_v_result);

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":932
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL             # <<<<<<<<<<<<<<
 *                 else:
 *                     result = xmlparser.xmlCtxtReadMemory(
 */
              __pyx_v_result = NULL;
              goto __pyx_L13;
            }
            __pyx_L13:;
            goto __pyx_L12;
          }
          __pyx_L12:;
          goto __pyx_L11;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":936
 *                     result = xmlparser.xmlCtxtReadMemory(
 *                         pctxt, c_text, c_len, c_filename,
 *                         c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
 * 
 *             return context._handleParseResultDoc(self, result, None)
 */
          __pyx_v_result = xmlCtxtReadMemory(__pyx_v_pctxt, __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
        }
        __pyx_L11:;
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":924
 *                 c_encoding = _cstr(self._default_encoding)
 * 
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadMemory(
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":938
 *                         c_encoding, self._parse_options)
 * 
 *             return context._handleParseResultDoc(self, result, None)             # <<<<<<<<<<<<<<
 *         finally:
 *             context.cleanup()
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, Py_None); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __pyx_r = __pyx_t_4;
    goto __pyx_L4;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L6;
    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 3; goto __pyx_L6;
    __pyx_L5: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":940
 *             return context._handleParseResultDoc(self, result, None)
 *         finally:
 *             context.cleanup()             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L14_error;}
    goto __pyx_L15;
    __pyx_L14_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L15:;
    switch (__pyx_why) {
      case 3: goto __pyx_L0;
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseParser._parseDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":942
 *             context.cleanup()
 * 
 *     cdef xmlDoc* _parseDocFromFile(self, char* c_filename) except NULL:             # <<<<<<<<<<<<<<
 *         cdef _ParserContext context
 *         cdef xmlDoc* result
 */

static  xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, char *__pyx_v_c_filename) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  xmlDoc *__pyx_v_result;
  xmlParserCtxt *__pyx_v_pctxt;
  int __pyx_v_orig_options;
  char *__pyx_v_c_encoding;
  xmlDoc *__pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  xmlDoc *__pyx_t_4;
  __Pyx_RefNannySetupContext("_parseDocFromFile");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":948
 *         cdef int orig_options
 *         cdef char* c_encoding
 *         result = NULL             # <<<<<<<<<<<<<<
 * 
 *         context = self._getParserContext()
 */
  __pyx_v_result = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":950
 *         result = NULL
 * 
 *         context = self._getParserContext()             # <<<<<<<<<<<<<<
 *         context.prepare()
 *         try:
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":951
 * 
 *         context = self._getParserContext()
 *         context.prepare()             # <<<<<<<<<<<<<<
 *         try:
 *             pctxt = context._c_ctxt
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":952
 *         context = self._getParserContext()
 *         context.prepare()
 *         try:             # <<<<<<<<<<<<<<
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":953
 *         context.prepare()
 *         try:
 *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 */
    __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":954
 *         try:
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
 * 
 *             if self._default_encoding is None:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":956
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
 *                 c_encoding = NULL
 *             else:
 */
    __pyx_t_3 = (__pyx_v_self->_default_encoding == Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":957
 * 
 *             if self._default_encoding is None:
 *                 c_encoding = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 c_encoding = _cstr(self._default_encoding)
 */
      __pyx_v_c_encoding = NULL;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":959
 *                 c_encoding = NULL
 *             else:
 *                 c_encoding = _cstr(self._default_encoding)             # <<<<<<<<<<<<<<
 * 
 *             orig_options = pctxt.options
 */
      __pyx_v_c_encoding = PyString_AS_STRING(__pyx_v_self->_default_encoding);
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":961
 *                 c_encoding = _cstr(self._default_encoding)
 * 
 *             orig_options = pctxt.options             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 if self._for_html:
 */
    __pyx_v_orig_options = __pyx_v_pctxt->options;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":962
 * 
 *             orig_options = pctxt.options
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadFile(
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":963
 *             orig_options = pctxt.options
 *             with nogil:
 *                 if self._for_html:             # <<<<<<<<<<<<<<
 *                     result = htmlparser.htmlCtxtReadFile(
 *                         pctxt, c_filename, c_encoding, self._parse_options)
 */
        __pyx_t_3 = __pyx_v_self->_for_html;
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":965
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadFile(
 *                         pctxt, c_filename, c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 */
          __pyx_v_result = htmlCtxtReadFile(__pyx_v_pctxt, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":966
 *                     result = htmlparser.htmlCtxtReadFile(
 *                         pctxt, c_filename, c_encoding, self._parse_options)
 *                     if result is not NULL:             # <<<<<<<<<<<<<<
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 */
          __pyx_t_3 = (__pyx_v_result != NULL);
          if (__pyx_t_3) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":967
 *                         pctxt, c_filename, c_encoding, self._parse_options)
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:             # <<<<<<<<<<<<<<
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL
 */
            __pyx_t_3 = (__pyx_f_4lxml_5etree__fixHtmlDictNames(__pyx_v_pctxt->dict, __pyx_v_result) < 0);
            if (__pyx_t_3) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":968
 *                     if result is not NULL:
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *                             result = NULL
 *                 else:
 */
              xmlFreeDoc(__pyx_v_result);

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":969
 *                         if _fixHtmlDictNames(pctxt.dict, result) < 0:
 *                             tree.xmlFreeDoc(result)
 *                             result = NULL             # <<<<<<<<<<<<<<
 *                 else:
 *                     result = xmlparser.xmlCtxtReadFile(
 */
              __pyx_v_result = NULL;
              goto __pyx_L12;
            }
            __pyx_L12:;
            goto __pyx_L11;
          }
          __pyx_L11:;
          goto __pyx_L10;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":972
 *                 else:
 *                     result = xmlparser.xmlCtxtReadFile(
 *                         pctxt, c_filename, c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
 *             pctxt.options = orig_options # work around libxml2 problem
 * 
 */
          __pyx_v_result = xmlCtxtReadFile(__pyx_v_pctxt, __pyx_v_c_filename, __pyx_v_c_encoding, __pyx_v_self->_parse_options);
        }
        __pyx_L10:;
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":962
 * 
 *             orig_options = pctxt.options
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if self._for_html:
 *                     result = htmlparser.htmlCtxtReadFile(
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":973
 *                     result = xmlparser.xmlCtxtReadFile(
 *                         pctxt, c_filename, c_encoding, self._parse_options)
 *             pctxt.options = orig_options # work around libxml2 problem             # <<<<<<<<<<<<<<
 * 
 *             return context._handleParseResultDoc(self, result, c_filename)
 */
    __pyx_v_pctxt->options = __pyx_v_orig_options;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":975
 *             pctxt.options = orig_options # work around libxml2 problem
 * 
 *             return context._handleParseResultDoc(self, result, c_filename)             # <<<<<<<<<<<<<<
 *         finally:
 *             context.cleanup()
 */
    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_filename); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L4;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L4;}
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    goto __pyx_L3;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 3; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":977
 *             return context._handleParseResultDoc(self, result, c_filename)
 *         finally:
 *             context.cleanup()             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename) except NULL:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
    goto __pyx_L14;
    __pyx_L13_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L14:;
    switch (__pyx_why) {
      case 3: goto __pyx_L0;
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._BaseParser._parseDocFromFile");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":979
 *             context.cleanup()
 * 
 *     cdef xmlDoc* _parseDocFromFilelike(self, filelike, filename) except NULL:             # <<<<<<<<<<<<<<
 *         cdef _ParserContext context
 *         cdef _FileReaderContext file_context
 */

static  xmlDoc *__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike(struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_self, PyObject *__pyx_v_filelike, PyObject *__pyx_v_filename) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_file_context;
  xmlDoc *__pyx_v_result;
  xmlParserCtxt *__pyx_v_pctxt;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  xmlDoc *__pyx_t_6;
  __Pyx_RefNannySetupContext("_parseDocFromFilelike");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_filelike);
  __Pyx_INCREF(__pyx_v_filename);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":985
 *         cdef xmlparser.xmlParserCtxt* pctxt
 *         cdef char* c_filename
 *         if not filename:             # <<<<<<<<<<<<<<
 *             filename = None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":986
 *         cdef char* c_filename
 *         if not filename:
 *             filename = None             # <<<<<<<<<<<<<<
 * 
 *         context = self._getParserContext()
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF(__pyx_v_filename);
    __pyx_v_filename = Py_None;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":988
 *             filename = None
 * 
 *         context = self._getParserContext()             # <<<<<<<<<<<<<<
 *         context.prepare()
 *         try:
 */
  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)__pyx_v_self->__pyx_vtab)->_getParserContext(__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":989
 * 
 *         context = self._getParserContext()
 *         context.prepare()             # <<<<<<<<<<<<<<
 *         try:
 *             pctxt = context._c_ctxt
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":990
 *         context = self._getParserContext()
 *         context.prepare()
 *         try:             # <<<<<<<<<<<<<<
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":991
 *         context.prepare()
 *         try:
 *             pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 *             file_context = _FileReaderContext(
 */
    __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":992
 *         try:
 *             pctxt = context._c_ctxt
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
 *             file_context = _FileReaderContext(
 *                 filelike, context, filename, self._default_encoding)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":994
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 *             file_context = _FileReaderContext(
 *                 filelike, context, filename, self._default_encoding)             # <<<<<<<<<<<<<<
 *             result = file_context._readDoc(pctxt, self._parse_options)
 * 
 */
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_filelike);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_filelike);
    __Pyx_GIVEREF(__pyx_v_filelike);
    __Pyx_INCREF(((PyObject *)__pyx_v_context));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_context));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
    __Pyx_INCREF(__pyx_v_filename);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_filename);
    __Pyx_GIVEREF(__pyx_v_filename);
    __Pyx_INCREF(__pyx_v_self->_default_encoding);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_self->_default_encoding);
    __Pyx_GIVEREF(__pyx_v_self->_default_encoding);
    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FileReaderContext)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_file_context));
    __pyx_v_file_context = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":995
 *             file_context = _FileReaderContext(
 *                 filelike, context, filename, self._default_encoding)
 *             result = file_context._readDoc(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
 * 
 *             return context._handleParseResultDoc(
 */
    __pyx_v_result = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)__pyx_v_file_context->__pyx_vtab)->_readDoc(__pyx_v_file_context, __pyx_v_pctxt, __pyx_v_self->_parse_options);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":998
 * 
 *             return context._handleParseResultDoc(
 *                 self, result, filename)             # <<<<<<<<<<<<<<
 *         finally:
 *             context.cleanup()
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResultDoc(__pyx_v_context, __pyx_v_self, __pyx_v_result, __pyx_v_filename); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L5;}
    __pyx_r = __pyx_t_6;
    goto __pyx_L4;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L6;
    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 3; goto __pyx_L6;
    __pyx_L5: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1000
 *                 self, result, filename)
 *         finally:
 *             context.cleanup()             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
    goto __pyx_L8;
    __pyx_L7_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L8:;
    switch (__pyx_why) {
      case 3: goto __pyx_L0;
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._BaseParser._parseDocFromFilelike");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_file_context);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_filelike);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1015
 *         different from what the ``error_log`` property returns.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()
 */

static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(PyObject *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1017
 *         def __get__(self):
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()             # <<<<<<<<<<<<<<
 *             return context._error_log.copy()
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1018
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()
 *             return context._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     def feed(self, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._FeedParser.feed_error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1020
 *             return context._error_log.copy()
 * 
 *     def feed(self, data):             # <<<<<<<<<<<<<<
 *         u"""feed(self, data)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static char __pyx_doc_4lxml_5etree_11_FeedParser_feed[] = "feed(self, data)\n\n        Feeds data to the parser.  The argument should be an 8-bit string\n        buffer containing encoded data, although Unicode is supported as long\n        as both string types are not mixed.\n\n        This is the main entry point to the consumer interface of a\n        parser.  The parser will parse as much of the XML stream as it\n        can on each call.  To finish parsing or to reset the parser,\n        call the ``close()`` method.  Both methods may raise\n        ParseError if errors occur in the input data.  If an error is\n        raised, there is no longer a need to call ``close()``.\n\n        The feed parser interface is independent of the normal parser\n        usage.  You can use the same parser as a feed parser and in\n        the ``parse()`` function concurrently.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_feed(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_pctxt;
  Py_ssize_t __pyx_v_py_buffer_len;
  char *__pyx_v_c_data;
  char *__pyx_v_c_encoding;
  int __pyx_v_buffer_len;
  int __pyx_v_error;
  int __pyx_v_recover;
  PyObject *__pyx_v_entry;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  char *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  __Pyx_RefNannySetupContext("feed");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_entry = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1045
 *         cdef int buffer_len
 *         cdef int error
 *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         if python.PyString_Check(data):
 *             if self._default_encoding is None:
 */
  __pyx_v_recover = (((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._parse_options & XML_PARSE_RECOVER);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1046
 *         cdef int error
 *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
 *         if python.PyString_Check(data):             # <<<<<<<<<<<<<<
 *             if self._default_encoding is None:
 *                 c_encoding = NULL
 */
  __pyx_t_1 = PyString_Check(__pyx_v_data);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1047
 *         cdef bint recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
 *         if python.PyString_Check(data):
 *             if self._default_encoding is None:             # <<<<<<<<<<<<<<
 *                 c_encoding = NULL
 *             else:
 */
    __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._default_encoding == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1048
 *         if python.PyString_Check(data):
 *             if self._default_encoding is None:
 *                 c_encoding = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 c_encoding = self._default_encoding
 */
      __pyx_v_c_encoding = NULL;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1050
 *                 c_encoding = NULL
 *             else:
 *                 c_encoding = self._default_encoding             # <<<<<<<<<<<<<<
 *             c_data = _cstr(data)
 *             py_buffer_len = python.PyString_GET_SIZE(data)
 */
      __pyx_t_2 = __Pyx_PyBytes_AsString(((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._default_encoding); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_c_encoding = __pyx_t_2;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1051
 *             else:
 *                 c_encoding = self._default_encoding
 *             c_data = _cstr(data)             # <<<<<<<<<<<<<<
 *             py_buffer_len = python.PyString_GET_SIZE(data)
 *         elif python.PyUnicode_Check(data):
 */
    __pyx_v_c_data = PyString_AS_STRING(__pyx_v_data);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1052
 *                 c_encoding = self._default_encoding
 *             c_data = _cstr(data)
 *             py_buffer_len = python.PyString_GET_SIZE(data)             # <<<<<<<<<<<<<<
 *         elif python.PyUnicode_Check(data):
 *             if _UNICODE_ENCODING is NULL:
 */
    __pyx_v_py_buffer_len = PyString_GET_SIZE(__pyx_v_data);
    goto __pyx_L5;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1053
 *             c_data = _cstr(data)
 *             py_buffer_len = python.PyString_GET_SIZE(data)
 *         elif python.PyUnicode_Check(data):             # <<<<<<<<<<<<<<
 *             if _UNICODE_ENCODING is NULL:
 *                 raise ParserError, \
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_data);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1054
 *             py_buffer_len = python.PyString_GET_SIZE(data)
 *         elif python.PyUnicode_Check(data):
 *             if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
 *                 raise ParserError, \
 *                     u"Unicode parsing is not supported on this platform"
 */
    __pyx_t_1 = (__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1055
 *         elif python.PyUnicode_Check(data):
 *             if _UNICODE_ENCODING is NULL:
 *                 raise ParserError, \             # <<<<<<<<<<<<<<
 *                     u"Unicode parsing is not supported on this platform"
 *             c_encoding = _UNICODE_ENCODING
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParserError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_151), 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1057
 *                 raise ParserError, \
 *                     u"Unicode parsing is not supported on this platform"
 *             c_encoding = _UNICODE_ENCODING             # <<<<<<<<<<<<<<
 *             c_data = python.PyUnicode_AS_DATA(data)
 *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
 */
    __pyx_v_c_encoding = __pyx_v_4lxml_5etree__UNICODE_ENCODING;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1058
 *                     u"Unicode parsing is not supported on this platform"
 *             c_encoding = _UNICODE_ENCODING
 *             c_data = python.PyUnicode_AS_DATA(data)             # <<<<<<<<<<<<<<
 *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
 *         else:
 */
    __pyx_v_c_data = PyUnicode_AS_DATA(__pyx_v_data);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1059
 *             c_encoding = _UNICODE_ENCODING
 *             c_data = python.PyUnicode_AS_DATA(data)
 *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, u"Parsing requires string data"
 */
    __pyx_v_py_buffer_len = PyUnicode_GET_DATA_SIZE(__pyx_v_data);
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1061
 *             py_buffer_len = python.PyUnicode_GET_DATA_SIZE(data)
 *         else:
 *             raise TypeError, u"Parsing requires string data"             # <<<<<<<<<<<<<<
 * 
 *         context = self._getPushParserContext()
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_152), 0);
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1063
 *             raise TypeError, u"Parsing requires string data"
 * 
 *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
 *         pctxt = context._c_ctxt
 *         error = 0
 */
  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1064
 * 
 *         context = self._getPushParserContext()
 *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *         error = 0
 *         if not self._feed_parser_running:
 */
  __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1065
 *         context = self._getPushParserContext()
 *         pctxt = context._c_ctxt
 *         error = 0             # <<<<<<<<<<<<<<
 *         if not self._feed_parser_running:
 *             context.prepare()
 */
  __pyx_v_error = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1066
 *         pctxt = context._c_ctxt
 *         error = 0
 *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
 *             context.prepare()
 *             self._feed_parser_running = 1
 */
  __pyx_t_1 = (!((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->_feed_parser_running);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1067
 *         error = 0
 *         if not self._feed_parser_running:
 *             context.prepare()             # <<<<<<<<<<<<<<
 *             self._feed_parser_running = 1
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->prepare(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1068
 *         if not self._feed_parser_running:
 *             context.prepare()
 *             self._feed_parser_running = 1             # <<<<<<<<<<<<<<
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 */
    ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->_feed_parser_running = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1069
 *             context.prepare()
 *             self._feed_parser_running = 1
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)             # <<<<<<<<<<<<<<
 * 
 *             if py_buffer_len > python.INT_MAX:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_pctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1071
 *             __GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
 * 
 *             if py_buffer_len > python.INT_MAX:             # <<<<<<<<<<<<<<
 *                 buffer_len = python.INT_MAX
 *             else:
 */
    __pyx_t_1 = (__pyx_v_py_buffer_len > INT_MAX);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1072
 * 
 *             if py_buffer_len > python.INT_MAX:
 *                 buffer_len = python.INT_MAX             # <<<<<<<<<<<<<<
 *             else:
 *                 buffer_len = <int>py_buffer_len
 */
      __pyx_v_buffer_len = INT_MAX;
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1074
 *                 buffer_len = python.INT_MAX
 *             else:
 *                 buffer_len = <int>py_buffer_len             # <<<<<<<<<<<<<<
 *             if self._for_html:
 *                 error = _htmlCtxtResetPush(pctxt, c_data, buffer_len,
 */
      __pyx_v_buffer_len = ((int)__pyx_v_py_buffer_len);
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1075
 *             else:
 *                 buffer_len = <int>py_buffer_len
 *             if self._for_html:             # <<<<<<<<<<<<<<
 *                 error = _htmlCtxtResetPush(pctxt, c_data, buffer_len,
 *                                            c_encoding, self._parse_options)
 */
    __pyx_t_1 = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._for_html;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1077
 *             if self._for_html:
 *                 error = _htmlCtxtResetPush(pctxt, c_data, buffer_len,
 *                                            c_encoding, self._parse_options)             # <<<<<<<<<<<<<<
 *             else:
 *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, __pyx_v_c_encoding, ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._parse_options); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_error = __pyx_t_4;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1079
 *                                            c_encoding, self._parse_options)
 *             else:
 *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)             # <<<<<<<<<<<<<<
 *                 error = xmlparser.xmlCtxtResetPush(
 *                     pctxt, c_data, buffer_len, NULL, c_encoding)
 */
      xmlCtxtUseOptions(__pyx_v_pctxt, ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._parse_options);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1081
 *                 xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)
 *                 error = xmlparser.xmlCtxtResetPush(
 *                     pctxt, c_data, buffer_len, NULL, c_encoding)             # <<<<<<<<<<<<<<
 *             py_buffer_len -= buffer_len
 *             c_data += buffer_len
 */
      __pyx_v_error = xmlCtxtResetPush(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, NULL, __pyx_v_c_encoding);
    }
    __pyx_L10:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1082
 *                 error = xmlparser.xmlCtxtResetPush(
 *                     pctxt, c_data, buffer_len, NULL, c_encoding)
 *             py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
 *             c_data += buffer_len
 * 
 */
    __pyx_v_py_buffer_len -= __pyx_v_buffer_len;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1083
 *                     pctxt, c_data, buffer_len, NULL, c_encoding)
 *             py_buffer_len -= buffer_len
 *             c_data += buffer_len             # <<<<<<<<<<<<<<
 * 
 *         while (recover or error == 0) and py_buffer_len > 0:
 */
    __pyx_v_c_data += __pyx_v_buffer_len;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1085
 *             c_data += buffer_len
 * 
 *         while (recover or error == 0) and py_buffer_len > 0:             # <<<<<<<<<<<<<<
 *             if py_buffer_len > python.INT_MAX:
 *                 buffer_len = python.INT_MAX
 */
  while (1) {
    if (!__pyx_v_recover) {
      __pyx_t_1 = (__pyx_v_error == 0);
      __pyx_t_5 = __pyx_t_1;
    } else {
      __pyx_t_5 = __pyx_v_recover;
    }
    if (__pyx_t_5) {
      __pyx_t_1 = (__pyx_v_py_buffer_len > 0);
      __pyx_t_6 = __pyx_t_1;
    } else {
      __pyx_t_6 = __pyx_t_5;
    }
    if (!__pyx_t_6) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1086
 * 
 *         while (recover or error == 0) and py_buffer_len > 0:
 *             if py_buffer_len > python.INT_MAX:             # <<<<<<<<<<<<<<
 *                 buffer_len = python.INT_MAX
 *             else:
 */
    __pyx_t_6 = (__pyx_v_py_buffer_len > INT_MAX);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1087
 *         while (recover or error == 0) and py_buffer_len > 0:
 *             if py_buffer_len > python.INT_MAX:
 *                 buffer_len = python.INT_MAX             # <<<<<<<<<<<<<<
 *             else:
 *                 buffer_len = <int>py_buffer_len
 */
      __pyx_v_buffer_len = INT_MAX;
      goto __pyx_L13;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1089
 *                 buffer_len = python.INT_MAX
 *             else:
 *                 buffer_len = <int>py_buffer_len             # <<<<<<<<<<<<<<
 *             if self._for_html:
 *                 error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
 */
      __pyx_v_buffer_len = ((int)__pyx_v_py_buffer_len);
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1090
 *             else:
 *                 buffer_len = <int>py_buffer_len
 *             if self._for_html:             # <<<<<<<<<<<<<<
 *                 error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
 *             else:
 */
    __pyx_t_6 = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._for_html;
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1091
 *                 buffer_len = <int>py_buffer_len
 *             if self._for_html:
 *                 error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
 */
      __pyx_v_error = htmlParseChunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
      goto __pyx_L14;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1093
 *                 error = htmlparser.htmlParseChunk(pctxt, c_data, buffer_len, 0)
 *             else:
 *                 error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
 *             py_buffer_len -= buffer_len
 *             c_data += buffer_len
 */
      __pyx_v_error = xmlParseChunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1094
 *             else:
 *                 error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
 *             py_buffer_len -= buffer_len             # <<<<<<<<<<<<<<
 *             c_data += buffer_len
 * 
 */
    __pyx_v_py_buffer_len -= __pyx_v_buffer_len;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1095
 *                 error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
 *             py_buffer_len -= buffer_len
 *             c_data += buffer_len             # <<<<<<<<<<<<<<
 * 
 *             if error and not pctxt.replaceEntities and not pctxt.validate:
 */
    __pyx_v_c_data += __pyx_v_buffer_len;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1097
 *             c_data += buffer_len
 * 
 *             if error and not pctxt.replaceEntities and not pctxt.validate:             # <<<<<<<<<<<<<<
 *                 # in this mode, we ignore errors about undefined entities
 *                 for entry in context._error_log.filter_from_errors():
 */
    if (__pyx_v_error) {
      __pyx_t_6 = (!__pyx_v_pctxt->replaceEntities);
      if (__pyx_t_6) {
        __pyx_t_5 = (!__pyx_v_pctxt->validate);
        __pyx_t_1 = __pyx_t_5;
      } else {
        __pyx_t_1 = __pyx_t_6;
      }
      __pyx_t_6 = __pyx_t_1;
    } else {
      __pyx_t_6 = __pyx_v_error;
    }
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1099
 *             if error and not pctxt.replaceEntities and not pctxt.validate:
 *                 # in this mode, we ignore errors about undefined entities
 *                 for entry in context._error_log.filter_from_errors():             # <<<<<<<<<<<<<<
 *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 */
      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s__filter_from_errors); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {
        __pyx_t_7 = 0; __pyx_t_3 = __pyx_t_8; __Pyx_INCREF(__pyx_t_3);
      } else {
        __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          __pyx_t_8 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++;
        } else {
          __pyx_t_8 = PyIter_Next(__pyx_t_3);
          if (!__pyx_t_8) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_8);
        }
        __Pyx_DECREF(__pyx_v_entry);
        __pyx_v_entry = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1100
 *                 # in this mode, we ignore errors about undefined entities
 *                 for entry in context._error_log.filter_from_errors():
 *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \             # <<<<<<<<<<<<<<
 *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 *                         break
 */
        __pyx_t_8 = PyObject_GetAttr(__pyx_v_entry, __pyx_n_s__type); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s_138); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_10, Py_NE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (__pyx_t_6) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1101
 *                 for entry in context._error_log.filter_from_errors():
 *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:             # <<<<<<<<<<<<<<
 *                         break
 *                 else:
 */
          __pyx_t_9 = PyObject_GetAttr(__pyx_v_entry, __pyx_n_s__type); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s_139); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_8, Py_NE); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_5 = __pyx_t_1;
        } else {
          __pyx_t_5 = __pyx_t_6;
        }
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1102
 *                     if entry.type != ErrorTypes.WAR_UNDECLARED_ENTITY and \
 *                            entry.type != ErrorTypes.ERR_UNDECLARED_ENTITY:
 *                         break             # <<<<<<<<<<<<<<
 *                 else:
 *                     error = 0
 */
          goto __pyx_L17_break;
          goto __pyx_L18;
        }
        __pyx_L18:;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1104
 *                         break
 *                 else:
 *                     error = 0             # <<<<<<<<<<<<<<
 * 
 *         if not recover and (error or not pctxt.wellFormed):
 */
        __pyx_v_error = 0;
      }
      __pyx_L17_break:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L15;
    }
    __pyx_L15:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1106
 *                     error = 0
 * 
 *         if not recover and (error or not pctxt.wellFormed):             # <<<<<<<<<<<<<<
 *             self._feed_parser_running = 0
 *             try:
 */
  __pyx_t_5 = (!__pyx_v_recover);
  if (__pyx_t_5) {
    if (!__pyx_v_error) {
      __pyx_t_6 = (!__pyx_v_pctxt->wellFormed);
      __pyx_t_1 = __pyx_t_6;
    } else {
      __pyx_t_1 = __pyx_v_error;
    }
    __pyx_t_6 = __pyx_t_1;
  } else {
    __pyx_t_6 = __pyx_t_5;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1107
 * 
 *         if not recover and (error or not pctxt.wellFormed):
 *             self._feed_parser_running = 0             # <<<<<<<<<<<<<<
 *             try:
 *                 context._handleParseResult(self, NULL, None)
 */
    ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->_feed_parser_running = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1108
 *         if not recover and (error or not pctxt.wellFormed):
 *             self._feed_parser_running = 0
 *             try:             # <<<<<<<<<<<<<<
 *                 context._handleParseResult(self, NULL, None)
 *             finally:
 */
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1109
 *             self._feed_parser_running = 0
 *             try:
 *                 context._handleParseResult(self, NULL, None)             # <<<<<<<<<<<<<<
 *             finally:
 *                 context.cleanup()
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), NULL, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L21;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    /*finally:*/ {
      int __pyx_why;
      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
      int __pyx_exc_lineno;
      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
      __pyx_why = 0; goto __pyx_L22;
      __pyx_L21: {
        __pyx_why = 4;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
        __pyx_exc_lineno = __pyx_lineno;
        goto __pyx_L22;
      }
      __pyx_L22:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1111
 *                 context._handleParseResult(self, NULL, None)
 *             finally:
 *                 context.cleanup()             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L23_error;}
      goto __pyx_L24;
      __pyx_L23_error:;
      if (__pyx_why == 4) {
        Py_XDECREF(__pyx_exc_type);
        Py_XDECREF(__pyx_exc_value);
        Py_XDECREF(__pyx_exc_tb);
      }
      goto __pyx_L1_error;
      __pyx_L24:;
      switch (__pyx_why) {
        case 4: {
          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
          __pyx_lineno = __pyx_exc_lineno;
          __pyx_exc_type = 0;
          __pyx_exc_value = 0;
          __pyx_exc_tb = 0;
          goto __pyx_L1_error;
        }
      }
    }
    goto __pyx_L19;
  }
  __pyx_L19:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("lxml.etree._FeedParser.feed");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_entry);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1113
 *                 context.cleanup()
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         u"""close(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_close(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_11_FeedParser_close[] = "close(self)\n\n        Terminates feeding data to this parser.  This tells the parser to\n        process any remaining data in the feed buffer, and then returns the\n        root Element of the tree that was parsed.\n\n        This method must be called after passing the last chunk of data into\n        the ``feed()`` method.  It should only be called when using the feed\n        parser interface, all other usage is undefined.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_close(PyObject *__pyx_v_self, PyObject *unused) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_pctxt;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("close");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1128
 *         cdef xmlDoc* c_doc
 *         cdef _Document doc
 *         if not self._feed_parser_running:             # <<<<<<<<<<<<<<
 *             raise XMLSyntaxError(u"no element found",
 *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
 */
  __pyx_t_1 = (!((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->_feed_parser_running);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1129
 *         cdef _Document doc
 *         if not self._feed_parser_running:
 *             raise XMLSyntaxError(u"no element found",             # <<<<<<<<<<<<<<
 *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1130
 *         if not self._feed_parser_running:
 *             raise XMLSyntaxError(u"no element found",
 *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)             # <<<<<<<<<<<<<<
 * 
 *         context = self._getPushParserContext()
 */
    __pyx_t_3 = PyInt_FromLong(XML_ERR_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_154));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_154));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_154));
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1132
 *                                  xmlerror.XML_ERR_INTERNAL_ERROR, 0, 0)
 * 
 *         context = self._getPushParserContext()             # <<<<<<<<<<<<<<
 *         pctxt = context._c_ctxt
 * 
 */
  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1133
 * 
 *         context = self._getPushParserContext()
 *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 * 
 *         self._feed_parser_running = 0
 */
  __pyx_v_pctxt = __pyx_v_context->_c_ctxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1135
 *         pctxt = context._c_ctxt
 * 
 *         self._feed_parser_running = 0             # <<<<<<<<<<<<<<
 *         if self._for_html:
 *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
 */
  ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->_feed_parser_running = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1136
 * 
 *         self._feed_parser_running = 0
 *         if self._for_html:             # <<<<<<<<<<<<<<
 *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
 *         else:
 */
  __pyx_t_1 = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_v_self)->__pyx_base._for_html;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1137
 *         self._feed_parser_running = 0
 *         if self._for_html:
 *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
 *         else:
 *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
 */
    htmlParseChunk(__pyx_v_pctxt, NULL, 0, 1);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1139
 *             htmlparser.htmlParseChunk(pctxt, NULL, 0, 1)
 *         else:
 *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)             # <<<<<<<<<<<<<<
 *         try:
 *             result = context._handleParseResult(self, pctxt.myDoc, None)
 */
    xmlParseChunk(__pyx_v_pctxt, NULL, 0, 1);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1140
 *         else:
 *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
 *         try:             # <<<<<<<<<<<<<<
 *             result = context._handleParseResult(self, pctxt.myDoc, None)
 *         finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1141
 *             xmlparser.xmlParseChunk(pctxt, NULL, 0, 1)
 *         try:
 *             result = context._handleParseResult(self, pctxt.myDoc, None)             # <<<<<<<<<<<<<<
 *         finally:
 *             context.cleanup()
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->_handleParseResult(__pyx_v_context, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self), __pyx_v_pctxt->myDoc, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L8;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L9;
    __pyx_L8: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1143
 *             result = context._handleParseResult(self, pctxt.myDoc, None)
 *         finally:
 *             context.cleanup()             # <<<<<<<<<<<<<<
 * 
 *         if isinstance(result, _Document):
 */
    __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__ParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->cleanup(__pyx_v_context); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
    goto __pyx_L11;
    __pyx_L10_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L11:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1145
 *             context.cleanup()
 * 
 *         if isinstance(result, _Document):             # <<<<<<<<<<<<<<
 *             return (<_Document>result).getroot()
 *         else:
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_result, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Document))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1146
 * 
 *         if isinstance(result, _Document):
 *             return (<_Document>result).getroot()             # <<<<<<<<<<<<<<
 *         else:
 *             return result
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct LxmlDocument *)__pyx_v_result)->__pyx_vtab)->getroot(((struct LxmlDocument *)__pyx_v_result)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L12;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1148
 *             return (<_Document>result).getroot()
 *         else:
 *             return result             # <<<<<<<<<<<<<<
 * 
 * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_result);
    __pyx_r = __pyx_v_result;
    goto __pyx_L0;
  }
  __pyx_L12:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._FeedParser.close");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1150
 *             return result
 * 
 * cdef int _htmlCtxtResetPush(xmlparser.xmlParserCtxt* c_ctxt,             # <<<<<<<<<<<<<<
 *                              char* c_data, int buffer_len,
 *                              char* c_encoding, int parse_options) except -1:
 */

static  int __pyx_f_4lxml_5etree__htmlCtxtResetPush(xmlParserCtxt *__pyx_v_c_ctxt, char *__pyx_v_c_data, int __pyx_v_buffer_len, char *__pyx_v_c_encoding, int __pyx_v_parse_options) {
  PyObject *__pyx_v_error;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_htmlCtxtResetPush");
  __pyx_v_error = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1155
 *     cdef xmlparser.xmlParserInput* c_input_stream
 *     # libxml2 crashes if spaceTab is not initialised
 *     if _LIBXML_VERSION_INT < 20629 and c_ctxt.spaceTab is NULL:             # <<<<<<<<<<<<<<
 *         c_ctxt.spaceTab = <int*>tree.xmlMalloc(10 * sizeof(int))
 *         c_ctxt.spaceMax = 10
 */
  __pyx_t_1 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT < 20629);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_ctxt->spaceTab == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1156
 *     # libxml2 crashes if spaceTab is not initialised
 *     if _LIBXML_VERSION_INT < 20629 and c_ctxt.spaceTab is NULL:
 *         c_ctxt.spaceTab = <int*>tree.xmlMalloc(10 * sizeof(int))             # <<<<<<<<<<<<<<
 *         c_ctxt.spaceMax = 10
 * 
 */
    __pyx_v_c_ctxt->spaceTab = ((int *)xmlMalloc((10 * (sizeof(int)))));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1157
 *     if _LIBXML_VERSION_INT < 20629 and c_ctxt.spaceTab is NULL:
 *         c_ctxt.spaceTab = <int*>tree.xmlMalloc(10 * sizeof(int))
 *         c_ctxt.spaceMax = 10             # <<<<<<<<<<<<<<
 * 
 *     # libxml2 lacks an HTML push parser setup function
 */
    __pyx_v_c_ctxt->spaceMax = 10;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1160
 * 
 *     # libxml2 lacks an HTML push parser setup function
 *     error = xmlparser.xmlCtxtResetPush(c_ctxt, NULL, 0, NULL, c_encoding)             # <<<<<<<<<<<<<<
 *     if error:
 *         return error
 */
  __pyx_t_4 = PyInt_FromLong(xmlCtxtResetPush(__pyx_v_c_ctxt, NULL, 0, NULL, __pyx_v_c_encoding)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_error);
  __pyx_v_error = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1161
 *     # libxml2 lacks an HTML push parser setup function
 *     error = xmlparser.xmlCtxtResetPush(c_ctxt, NULL, 0, NULL, c_encoding)
 *     if error:             # <<<<<<<<<<<<<<
 *         return error
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_error); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1162
 *     error = xmlparser.xmlCtxtResetPush(c_ctxt, NULL, 0, NULL, c_encoding)
 *     if error:
 *         return error             # <<<<<<<<<<<<<<
 * 
 *     # fix libxml2 setup for HTML
 */
    __pyx_t_5 = __Pyx_PyInt_AsInt(__pyx_v_error); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = __pyx_t_5;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1165
 * 
 *     # fix libxml2 setup for HTML
 *     c_ctxt.progressive = 1             # <<<<<<<<<<<<<<
 *     c_ctxt.html = 1
 *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
 */
  __pyx_v_c_ctxt->progressive = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1166
 *     # fix libxml2 setup for HTML
 *     c_ctxt.progressive = 1
 *     c_ctxt.html = 1             # <<<<<<<<<<<<<<
 *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
 * 
 */
  __pyx_v_c_ctxt->html = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1167
 *     c_ctxt.progressive = 1
 *     c_ctxt.html = 1
 *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)             # <<<<<<<<<<<<<<
 * 
 *     if c_data is not NULL and buffer_len > 0:
 */
  htmlCtxtUseOptions(__pyx_v_c_ctxt, __pyx_v_parse_options);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1169
 *     htmlparser.htmlCtxtUseOptions(c_ctxt, parse_options)
 * 
 *     if c_data is not NULL and buffer_len > 0:             # <<<<<<<<<<<<<<
 *         return htmlparser.htmlParseChunk(c_ctxt, c_data, buffer_len, 0)
 *     return 0
 */
  __pyx_t_3 = (__pyx_v_c_data != NULL);
  if (__pyx_t_3) {
    __pyx_t_1 = (__pyx_v_buffer_len > 0);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1170
 * 
 *     if c_data is not NULL and buffer_len > 0:
 *         return htmlparser.htmlParseChunk(c_ctxt, c_data, buffer_len, 0)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = htmlParseChunk(__pyx_v_c_ctxt, __pyx_v_c_data, __pyx_v_buffer_len, 0);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1171
 *     if c_data is not NULL and buffer_len > 0:
 *         return htmlparser.htmlParseChunk(c_ctxt, c_data, buffer_len, 0)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._htmlCtxtResetPush");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_error);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1229
 *     apply to the default parser.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 */

static int __pyx_pf_4lxml_5etree_9XMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_9XMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_attribute_defaults = 0;
  PyObject *__pyx_v_dtd_validation = 0;
  PyObject *__pyx_v_load_dtd = 0;
  PyObject *__pyx_v_no_network = 0;
  PyObject *__pyx_v_ns_clean = 0;
  PyObject *__pyx_v_recover = 0;
  struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema = 0;
  PyObject *__pyx_v_huge_tree = 0;
  PyObject *__pyx_v_remove_blank_text = 0;
  PyObject *__pyx_v_resolve_entities = 0;
  PyObject *__pyx_v_remove_comments = 0;
  PyObject *__pyx_v_remove_pis = 0;
  PyObject *__pyx_v_strip_cdata = 0;
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_compact = 0;
  int __pyx_v_parse_options;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__encoding,&__pyx_n_s__attribute_defaults,&__pyx_n_s__dtd_validation,&__pyx_n_s__load_dtd,&__pyx_n_s__no_network,&__pyx_n_s__ns_clean,&__pyx_n_s__recover,&__pyx_n_s__schema,&__pyx_n_s__huge_tree,&__pyx_n_s__remove_blank_text,&__pyx_n_s__resolve_entities,&__pyx_n_s__remove_comments,&__pyx_n_s__remove_pis,&__pyx_n_s__strip_cdata,&__pyx_n_s__target,&__pyx_n_s__compact,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1234
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         cdef int parse_options
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_155;
    values[2] = __pyx_k_156;
    values[3] = __pyx_k_157;
    values[4] = __pyx_k_158;
    values[5] = __pyx_k_159;
    values[6] = __pyx_k_160;
    values[7] = (PyObject*)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    values[8] = __pyx_k_161;
    values[9] = __pyx_k_162;
    values[10] = __pyx_k_163;
    values[11] = __pyx_k_164;
    values[12] = __pyx_k_165;
    values[13] = __pyx_k_166;
    values[14] = ((PyObject *)Py_None);
    values[15] = __pyx_k_167;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[0] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attribute_defaults);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dtd_validation);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__load_dtd);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__no_network);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ns_clean);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recover);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__schema);
      if (value) { values[7] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__huge_tree);
      if (value) { values[8] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_blank_text);
      if (value) { values[9] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__resolve_entities);
      if (value) { values[10] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_comments);
      if (value) { values[11] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_pis);
      if (value) { values[12] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strip_cdata);
      if (value) { values[13] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (value) { values[14] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compact);
      if (value) { values[15] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_encoding = values[0];
    __pyx_v_attribute_defaults = values[1];
    __pyx_v_dtd_validation = values[2];
    __pyx_v_load_dtd = values[3];
    __pyx_v_no_network = values[4];
    __pyx_v_ns_clean = values[5];
    __pyx_v_recover = values[6];
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[7]);
    __pyx_v_huge_tree = values[8];
    __pyx_v_remove_blank_text = values[9];
    __pyx_v_resolve_entities = values[10];
    __pyx_v_remove_comments = values[11];
    __pyx_v_remove_pis = values[12];
    __pyx_v_strip_cdata = values[13];
    __pyx_v_target = values[14];
    __pyx_v_compact = values[15];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
    goto __pyx_L5_argtuple_error;
  } else {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1229
 *     apply to the default parser.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_attribute_defaults = __pyx_k_155;
    __pyx_v_dtd_validation = __pyx_k_156;
    __pyx_v_load_dtd = __pyx_k_157;
    __pyx_v_no_network = __pyx_k_158;
    __pyx_v_ns_clean = __pyx_k_159;
    __pyx_v_recover = __pyx_k_160;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1231
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,             # <<<<<<<<<<<<<<
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 */
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    __pyx_v_huge_tree = __pyx_k_161;
    __pyx_v_remove_blank_text = __pyx_k_162;
    __pyx_v_resolve_entities = __pyx_k_163;
    __pyx_v_remove_comments = __pyx_k_164;
    __pyx_v_remove_pis = __pyx_k_165;
    __pyx_v_strip_cdata = __pyx_k_166;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1234
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         cdef int parse_options
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 */
    __pyx_v_target = ((PyObject *)Py_None);
    __pyx_v_compact = __pyx_k_167;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XMLParser.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_attribute_defaults);
  __Pyx_INCREF(__pyx_v_dtd_validation);
  __Pyx_INCREF(__pyx_v_load_dtd);
  __Pyx_INCREF(__pyx_v_no_network);
  __Pyx_INCREF(__pyx_v_ns_clean);
  __Pyx_INCREF(__pyx_v_recover);
  __Pyx_INCREF((PyObject *)__pyx_v_schema);
  __Pyx_INCREF(__pyx_v_huge_tree);
  __Pyx_INCREF(__pyx_v_remove_blank_text);
  __Pyx_INCREF(__pyx_v_resolve_entities);
  __Pyx_INCREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_compact);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1236
 *                  target=None, compact=True):
 *         cdef int parse_options
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 */
  __pyx_v_parse_options = __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1237
 *         cdef int parse_options
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 *         if load_dtd:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if dtd_validation:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1238
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if dtd_validation:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1239
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if dtd_validation:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1241
 *         if dtd_validation:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if attribute_defaults:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
 */
    __pyx_v_parse_options = ((__pyx_v_parse_options | XML_PARSE_DTDVALID) | XML_PARSE_DTDLOAD);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1242
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 *         if attribute_defaults:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
 *             if schema is None:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1243
 *                             xmlparser.XML_PARSE_DTDLOAD
 *         if attribute_defaults:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR             # <<<<<<<<<<<<<<
 *             if schema is None:
 *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDATTR);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1244
 *         if attribute_defaults:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
 *             if schema is None:             # <<<<<<<<<<<<<<
 *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if ns_clean:
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_schema) == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1245
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR
 *             if schema is None:
 *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if ns_clean:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
 */
      __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1246
 *             if schema is None:
 *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if ns_clean:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
 *         if recover:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ns_clean); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1247
 *                 parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if ns_clean:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN             # <<<<<<<<<<<<<<
 *         if recover:
 *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NSCLEAN);
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1248
 *         if ns_clean:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
 *         if recover:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
 *         if remove_blank_text:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1249
 *             parse_options = parse_options | xmlparser.XML_PARSE_NSCLEAN
 *         if recover:
 *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_RECOVER);
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1250
 *         if recover:
 *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
 *         if remove_blank_text:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1251
 *             parse_options = parse_options | xmlparser.XML_PARSE_RECOVER
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NOBLANKS);
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1252
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1253
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE             # <<<<<<<<<<<<<<
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_HUGE);
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1254
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1255
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET             # <<<<<<<<<<<<<<
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NONET);
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1256
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (!__pyx_t_2);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1257
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT             # <<<<<<<<<<<<<<
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_COMPACT);
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1258
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1259
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT             # <<<<<<<<<<<<<<
 *         if not strip_cdata:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOENT);
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1260
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (!__pyx_t_2);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1261
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA             # <<<<<<<<<<<<<<
 * 
 *         _BaseParser.__init__(self, parse_options, 0, schema,
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOCDATA);
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1263
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 * 
 *         _BaseParser.__init__(self, parse_options, 0, schema,             # <<<<<<<<<<<<<<
 *                              remove_comments, remove_pis, strip_cdata,
 *                              target, None, encoding)
 */
  __pyx_t_3 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseParser)), __pyx_n_s____init__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyInt_FromLong(__pyx_v_parse_options); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1265
 *         _BaseParser.__init__(self, parse_options, 0, schema,
 *                              remove_comments, remove_pis, strip_cdata,
 *                              target, None, encoding)             # <<<<<<<<<<<<<<
 * 
 * cdef class ETCompatXMLParser(XMLParser):
 */
  __pyx_t_5 = PyTuple_New(10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_INCREF(((PyObject *)__pyx_v_schema));
  PyTuple_SET_ITEM(__pyx_t_5, 3, ((PyObject *)__pyx_v_schema));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_schema));
  __Pyx_INCREF(__pyx_v_remove_comments);
  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_remove_comments);
  __Pyx_GIVEREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_remove_pis);
  __Pyx_GIVEREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_strip_cdata);
  __Pyx_GIVEREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_5, 8, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_v_encoding);
  PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_encoding);
  __Pyx_GIVEREF(__pyx_v_encoding);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.XMLParser.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_attribute_defaults);
  __Pyx_DECREF(__pyx_v_dtd_validation);
  __Pyx_DECREF(__pyx_v_load_dtd);
  __Pyx_DECREF(__pyx_v_no_network);
  __Pyx_DECREF(__pyx_v_ns_clean);
  __Pyx_DECREF(__pyx_v_recover);
  __Pyx_DECREF((PyObject *)__pyx_v_schema);
  __Pyx_DECREF(__pyx_v_huge_tree);
  __Pyx_DECREF(__pyx_v_remove_blank_text);
  __Pyx_DECREF(__pyx_v_resolve_entities);
  __Pyx_DECREF(__pyx_v_remove_comments);
  __Pyx_DECREF(__pyx_v_remove_pis);
  __Pyx_DECREF(__pyx_v_strip_cdata);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_DECREF(__pyx_v_compact);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1282
 *     and thus ignores comments and processing instructions.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,
 */

static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_attribute_defaults = 0;
  PyObject *__pyx_v_dtd_validation = 0;
  PyObject *__pyx_v_load_dtd = 0;
  PyObject *__pyx_v_no_network = 0;
  PyObject *__pyx_v_ns_clean = 0;
  PyObject *__pyx_v_recover = 0;
  PyObject *__pyx_v_schema = 0;
  PyObject *__pyx_v_huge_tree = 0;
  PyObject *__pyx_v_remove_blank_text = 0;
  PyObject *__pyx_v_resolve_entities = 0;
  PyObject *__pyx_v_remove_comments = 0;
  PyObject *__pyx_v_remove_pis = 0;
  PyObject *__pyx_v_strip_cdata = 0;
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_compact = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__encoding,&__pyx_n_s__attribute_defaults,&__pyx_n_s__dtd_validation,&__pyx_n_s__load_dtd,&__pyx_n_s__no_network,&__pyx_n_s__ns_clean,&__pyx_n_s__recover,&__pyx_n_s__schema,&__pyx_n_s__huge_tree,&__pyx_n_s__remove_blank_text,&__pyx_n_s__resolve_entities,&__pyx_n_s__remove_comments,&__pyx_n_s__remove_pis,&__pyx_n_s__strip_cdata,&__pyx_n_s__target,&__pyx_n_s__compact,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1287
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         XMLParser.__init__(self,
 *                            attribute_defaults=attribute_defaults,
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_168;
    values[2] = __pyx_k_169;
    values[3] = __pyx_k_170;
    values[4] = __pyx_k_171;
    values[5] = __pyx_k_172;
    values[6] = __pyx_k_173;
    values[7] = ((PyObject *)Py_None);
    values[8] = __pyx_k_174;
    values[9] = __pyx_k_175;
    values[10] = __pyx_k_176;
    values[11] = __pyx_k_177;
    values[12] = __pyx_k_178;
    values[13] = __pyx_k_179;
    values[14] = ((PyObject *)Py_None);
    values[15] = __pyx_k_180;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[0] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attribute_defaults);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dtd_validation);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__load_dtd);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__no_network);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ns_clean);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recover);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__schema);
      if (value) { values[7] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__huge_tree);
      if (value) { values[8] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_blank_text);
      if (value) { values[9] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__resolve_entities);
      if (value) { values[10] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_comments);
      if (value) { values[11] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_pis);
      if (value) { values[12] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strip_cdata);
      if (value) { values[13] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (value) { values[14] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compact);
      if (value) { values[15] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_encoding = values[0];
    __pyx_v_attribute_defaults = values[1];
    __pyx_v_dtd_validation = values[2];
    __pyx_v_load_dtd = values[3];
    __pyx_v_no_network = values[4];
    __pyx_v_ns_clean = values[5];
    __pyx_v_recover = values[6];
    __pyx_v_schema = values[7];
    __pyx_v_huge_tree = values[8];
    __pyx_v_remove_blank_text = values[9];
    __pyx_v_resolve_entities = values[10];
    __pyx_v_remove_comments = values[11];
    __pyx_v_remove_pis = values[12];
    __pyx_v_strip_cdata = values[13];
    __pyx_v_target = values[14];
    __pyx_v_compact = values[15];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
    goto __pyx_L5_argtuple_error;
  } else {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1282
 *     and thus ignores comments and processing instructions.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_attribute_defaults = __pyx_k_168;
    __pyx_v_dtd_validation = __pyx_k_169;
    __pyx_v_load_dtd = __pyx_k_170;
    __pyx_v_no_network = __pyx_k_171;
    __pyx_v_ns_clean = __pyx_k_172;
    __pyx_v_recover = __pyx_k_173;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1284
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,             # <<<<<<<<<<<<<<
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 */
    __pyx_v_schema = ((PyObject *)Py_None);
    __pyx_v_huge_tree = __pyx_k_174;
    __pyx_v_remove_blank_text = __pyx_k_175;
    __pyx_v_resolve_entities = __pyx_k_176;
    __pyx_v_remove_comments = __pyx_k_177;
    __pyx_v_remove_pis = __pyx_k_178;
    __pyx_v_strip_cdata = __pyx_k_179;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1287
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         XMLParser.__init__(self,
 *                            attribute_defaults=attribute_defaults,
 */
    __pyx_v_target = ((PyObject *)Py_None);
    __pyx_v_compact = __pyx_k_180;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ETCompatXMLParser.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1288
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 *                  target=None, compact=True):
 *         XMLParser.__init__(self,             # <<<<<<<<<<<<<<
 *                            attribute_defaults=attribute_defaults,
 *                            dtd_validation=dtd_validation,
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XMLParser)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1289
 *                  target=None, compact=True):
 *         XMLParser.__init__(self,
 *                            attribute_defaults=attribute_defaults,             # <<<<<<<<<<<<<<
 *                            dtd_validation=dtd_validation,
 *                            load_dtd=load_dtd,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__attribute_defaults), __pyx_v_attribute_defaults) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1290
 *         XMLParser.__init__(self,
 *                            attribute_defaults=attribute_defaults,
 *                            dtd_validation=dtd_validation,             # <<<<<<<<<<<<<<
 *                            load_dtd=load_dtd,
 *                            no_network=no_network,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtd_validation), __pyx_v_dtd_validation) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1291
 *                            attribute_defaults=attribute_defaults,
 *                            dtd_validation=dtd_validation,
 *                            load_dtd=load_dtd,             # <<<<<<<<<<<<<<
 *                            no_network=no_network,
 *                            ns_clean=ns_clean,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__load_dtd), __pyx_v_load_dtd) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1292
 *                            dtd_validation=dtd_validation,
 *                            load_dtd=load_dtd,
 *                            no_network=no_network,             # <<<<<<<<<<<<<<
 *                            ns_clean=ns_clean,
 *                            recover=recover,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__no_network), __pyx_v_no_network) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1293
 *                            load_dtd=load_dtd,
 *                            no_network=no_network,
 *                            ns_clean=ns_clean,             # <<<<<<<<<<<<<<
 *                            recover=recover,
 *                            remove_blank_text=remove_blank_text,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__ns_clean), __pyx_v_ns_clean) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1294
 *                            no_network=no_network,
 *                            ns_clean=ns_clean,
 *                            recover=recover,             # <<<<<<<<<<<<<<
 *                            remove_blank_text=remove_blank_text,
 *                            huge_tree=huge_tree,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__recover), __pyx_v_recover) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1295
 *                            ns_clean=ns_clean,
 *                            recover=recover,
 *                            remove_blank_text=remove_blank_text,             # <<<<<<<<<<<<<<
 *                            huge_tree=huge_tree,
 *                            compact=compact,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__remove_blank_text), __pyx_v_remove_blank_text) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1296
 *                            recover=recover,
 *                            remove_blank_text=remove_blank_text,
 *                            huge_tree=huge_tree,             # <<<<<<<<<<<<<<
 *                            compact=compact,
 *                            resolve_entities=resolve_entities,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__huge_tree), __pyx_v_huge_tree) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1297
 *                            remove_blank_text=remove_blank_text,
 *                            huge_tree=huge_tree,
 *                            compact=compact,             # <<<<<<<<<<<<<<
 *                            resolve_entities=resolve_entities,
 *                            remove_comments=remove_comments,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__compact), __pyx_v_compact) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1298
 *                            huge_tree=huge_tree,
 *                            compact=compact,
 *                            resolve_entities=resolve_entities,             # <<<<<<<<<<<<<<
 *                            remove_comments=remove_comments,
 *                            remove_pis=remove_pis,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__resolve_entities), __pyx_v_resolve_entities) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1299
 *                            compact=compact,
 *                            resolve_entities=resolve_entities,
 *                            remove_comments=remove_comments,             # <<<<<<<<<<<<<<
 *                            remove_pis=remove_pis,
 *                            strip_cdata=strip_cdata,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__remove_comments), __pyx_v_remove_comments) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1300
 *                            resolve_entities=resolve_entities,
 *                            remove_comments=remove_comments,
 *                            remove_pis=remove_pis,             # <<<<<<<<<<<<<<
 *                            strip_cdata=strip_cdata,
 *                            target=target,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__remove_pis), __pyx_v_remove_pis) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1301
 *                            remove_comments=remove_comments,
 *                            remove_pis=remove_pis,
 *                            strip_cdata=strip_cdata,             # <<<<<<<<<<<<<<
 *                            target=target,
 *                            encoding=encoding,
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__strip_cdata), __pyx_v_strip_cdata) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1302
 *                            remove_pis=remove_pis,
 *                            strip_cdata=strip_cdata,
 *                            target=target,             # <<<<<<<<<<<<<<
 *                            encoding=encoding,
 *                            schema=schema)
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__target), __pyx_v_target) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1303
 *                            strip_cdata=strip_cdata,
 *                            target=target,
 *                            encoding=encoding,             # <<<<<<<<<<<<<<
 *                            schema=schema)
 * 
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__encoding), __pyx_v_encoding) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1304
 *                            target=target,
 *                            encoding=encoding,
 *                            schema=schema)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__schema), __pyx_v_schema) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.ETCompatXMLParser.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1312
 * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
 * 
 * def set_default_parser(_BaseParser parser=None):             # <<<<<<<<<<<<<<
 *     u"""set_default_parser(parser=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_set_default_parser(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_set_default_parser[] = "set_default_parser(parser=None)\n\n    Set a default parser for the current thread.  This parser is used\n    globally whenever no parser is supplied to the various parse functions of\n    the lxml API.  If this function is called without a parser (or if it is\n    None), the default parser is reset to the original configuration.\n\n    Note that the pre-installed default parser is not thread-safe.  Avoid the\n    default parser in multi-threaded environments.  You can create a separate\n    parser for each thread explicitly or use a parser pool.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_set_default_parser(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__parser,0};
  __Pyx_RefNannySetupContext("set_default_parser");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = (PyObject*)((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set_default_parser") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)values[0]);
  } else {
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)PyTuple_GET_ITEM(__pyx_args, 0));
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.set_default_parser");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1324
 *     parser for each thread explicitly or use a parser pool.
 *     """
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __DEFAULT_XML_PARSER
 *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1325
 *     """
 *     if parser is None:
 *         parser = __DEFAULT_XML_PARSER             # <<<<<<<<<<<<<<
 *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
 * 
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1326
 *     if parser is None:
 *         parser = __DEFAULT_XML_PARSER
 *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)             # <<<<<<<<<<<<<<
 * 
 * def get_default_parser():
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_parser);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.set_default_parser");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1328
 *     __GLOBAL_PARSER_CONTEXT.setDefaultParser(parser)
 * 
 * def get_default_parser():             # <<<<<<<<<<<<<<
 *     u"get_default_parser()"
 *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 */

static PyObject *__pyx_pf_4lxml_5etree_get_default_parser(PyObject *__pyx_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_get_default_parser[] = "get_default_parser()";
static PyObject *__pyx_pf_4lxml_5etree_get_default_parser(PyObject *__pyx_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_default_parser");
  __pyx_self = __pyx_self;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1330
 * def get_default_parser():
 *     u"get_default_parser()"
 *     return __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.get_default_parser");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1375
 *     reasons.
 *     """
 *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,
 */

static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_10HTMLParser___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_remove_blank_text = 0;
  PyObject *__pyx_v_remove_comments = 0;
  PyObject *__pyx_v_remove_pis = 0;
  PyObject *__pyx_v_strip_cdata = 0;
  PyObject *__pyx_v_no_network = 0;
  PyObject *__pyx_v_target = 0;
  struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema = 0;
  PyObject *__pyx_v_recover = 0;
  PyObject *__pyx_v_compact = 0;
  int __pyx_v_parse_options;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__encoding,&__pyx_n_s__remove_blank_text,&__pyx_n_s__remove_comments,&__pyx_n_s__remove_pis,&__pyx_n_s__strip_cdata,&__pyx_n_s__no_network,&__pyx_n_s__target,&__pyx_n_s__schema,&__pyx_n_s__recover,&__pyx_n_s__compact,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1377
 *     def __init__(self, *, encoding=None, remove_blank_text=False,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,             # <<<<<<<<<<<<<<
 *                  recover=True, compact=True):
 *         cdef int parse_options
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = __pyx_k_181;
    values[2] = __pyx_k_182;
    values[3] = __pyx_k_183;
    values[4] = __pyx_k_184;
    values[5] = __pyx_k_185;
    values[6] = ((PyObject *)Py_None);
    values[7] = (PyObject*)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    values[8] = __pyx_k_186;
    values[9] = __pyx_k_187;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[0] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_blank_text);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_comments);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_pis);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strip_cdata);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__no_network);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__schema);
      if (value) { values[7] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__recover);
      if (value) { values[8] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compact);
      if (value) { values[9] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_encoding = values[0];
    __pyx_v_remove_blank_text = values[1];
    __pyx_v_remove_comments = values[2];
    __pyx_v_remove_pis = values[3];
    __pyx_v_strip_cdata = values[4];
    __pyx_v_no_network = values[5];
    __pyx_v_target = values[6];
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[7]);
    __pyx_v_recover = values[8];
    __pyx_v_compact = values[9];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
    goto __pyx_L5_argtuple_error;
  } else {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1375
 *     reasons.
 *     """
 *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_remove_blank_text = __pyx_k_181;
    __pyx_v_remove_comments = __pyx_k_182;
    __pyx_v_remove_pis = __pyx_k_183;
    __pyx_v_strip_cdata = __pyx_k_184;
    __pyx_v_no_network = __pyx_k_185;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1377
 *     def __init__(self, *, encoding=None, remove_blank_text=False,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,             # <<<<<<<<<<<<<<
 *                  recover=True, compact=True):
 *         cdef int parse_options
 */
    __pyx_v_target = ((PyObject *)Py_None);
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    __pyx_v_recover = __pyx_k_186;
    __pyx_v_compact = __pyx_k_187;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.HTMLParser.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_remove_blank_text);
  __Pyx_INCREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_no_network);
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_INCREF((PyObject *)__pyx_v_schema);
  __Pyx_INCREF(__pyx_v_recover);
  __Pyx_INCREF(__pyx_v_compact);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1380
 *                  recover=True, compact=True):
 *         cdef int parse_options
 *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
 *         if remove_blank_text:
 *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
 */
  __pyx_v_parse_options = __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1381
 *         cdef int parse_options
 *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
 *         if remove_blank_text:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
 *         if not recover:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1382
 *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
 *         if remove_blank_text:
 *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
 *         if not recover:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | HTML_PARSE_NOBLANKS);
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1383
 *         if remove_blank_text:
 *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
 *         if not recover:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
 *         if not no_network:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recover); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1384
 *             parse_options = parse_options | htmlparser.HTML_PARSE_NOBLANKS
 *         if not recover:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         if not no_network:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_RECOVER);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1385
 *         if not recover:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
 *         if not no_network:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
 *         if not compact:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (!__pyx_t_2);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1386
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_RECOVER
 *         if not no_network:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET             # <<<<<<<<<<<<<<
 *         if not compact:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_NONET);
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1387
 *         if not no_network:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
 *         if not compact:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1388
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_NONET
 *         if not compact:
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT             # <<<<<<<<<<<<<<
 * 
 *         _BaseParser.__init__(self, parse_options, 1, schema,
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ HTML_PARSE_COMPACT);
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1390
 *             parse_options = parse_options ^ htmlparser.HTML_PARSE_COMPACT
 * 
 *         _BaseParser.__init__(self, parse_options, 1, schema,             # <<<<<<<<<<<<<<
 *                              remove_comments, remove_pis, strip_cdata,
 *                              target, None, encoding)
 */
  __pyx_t_3 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseParser)), __pyx_n_s____init__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyInt_FromLong(__pyx_v_parse_options); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1392
 *         _BaseParser.__init__(self, parse_options, 1, schema,
 *                              remove_comments, remove_pis, strip_cdata,
 *                              target, None, encoding)             # <<<<<<<<<<<<<<
 * 
 * cdef HTMLParser __DEFAULT_HTML_PARSER
 */
  __pyx_t_5 = PyTuple_New(10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_1);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_schema));
  PyTuple_SET_ITEM(__pyx_t_5, 3, ((PyObject *)__pyx_v_schema));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_schema));
  __Pyx_INCREF(__pyx_v_remove_comments);
  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_remove_comments);
  __Pyx_GIVEREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_remove_pis);
  __Pyx_GIVEREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_strip_cdata);
  __Pyx_GIVEREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_5, 8, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_v_encoding);
  PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_encoding);
  __Pyx_GIVEREF(__pyx_v_encoding);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.HTMLParser.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_remove_blank_text);
  __Pyx_DECREF(__pyx_v_remove_comments);
  __Pyx_DECREF(__pyx_v_remove_pis);
  __Pyx_DECREF(__pyx_v_strip_cdata);
  __Pyx_DECREF(__pyx_v_no_network);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_DECREF((PyObject *)__pyx_v_schema);
  __Pyx_DECREF(__pyx_v_recover);
  __Pyx_DECREF(__pyx_v_compact);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1401
 * ############################################################
 * 
 * cdef xmlDoc* _parseDoc(text, filename, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
 *     cdef char* c_filename
 *     cdef char* c_text
 */

static  xmlDoc *__pyx_f_4lxml_5etree__parseDoc(PyObject *__pyx_v_text, PyObject *__pyx_v_filename, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  char *__pyx_v_c_filename;
  char *__pyx_v_c_text;
  Py_ssize_t __pyx_v_c_len;
  PyObject *__pyx_v_filename_utf;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  xmlDoc *__pyx_t_5;
  xmlDoc *__pyx_t_6;
  xmlDoc *__pyx_t_7;
  __Pyx_RefNannySetupContext("_parseDoc");
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __pyx_v_filename_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1405
 *     cdef char* c_text
 *     cdef Py_ssize_t c_len
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     if not filename:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1406
 *     cdef Py_ssize_t c_len
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *     if not filename:
 *         c_filename = NULL
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1407
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     if not filename:             # <<<<<<<<<<<<<<
 *         c_filename = NULL
 *     else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_1);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1408
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     if not filename:
 *         c_filename = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         filename_utf = _encodeFilenameUTF8(filename)
 */
    __pyx_v_c_filename = NULL;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1410
 *         c_filename = NULL
 *     else:
 *         filename_utf = _encodeFilenameUTF8(filename)             # <<<<<<<<<<<<<<
 *         c_filename = _cstr(filename_utf)
 *     if python.PyUnicode_Check(text):
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_filename); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_filename_utf);
    __pyx_v_filename_utf = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1411
 *     else:
 *         filename_utf = _encodeFilenameUTF8(filename)
 *         c_filename = _cstr(filename_utf)             # <<<<<<<<<<<<<<
 *     if python.PyUnicode_Check(text):
 *         c_len = python.PyUnicode_GET_DATA_SIZE(text)
 */
    __pyx_v_c_filename = PyString_AS_STRING(__pyx_v_filename_utf);
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1412
 *         filename_utf = _encodeFilenameUTF8(filename)
 *         c_filename = _cstr(filename_utf)
 *     if python.PyUnicode_Check(text):             # <<<<<<<<<<<<<<
 *         c_len = python.PyUnicode_GET_DATA_SIZE(text)
 *         if c_len > python.INT_MAX:
 */
  __pyx_t_3 = PyUnicode_Check(__pyx_v_text);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1413
 *         c_filename = _cstr(filename_utf)
 *     if python.PyUnicode_Check(text):
 *         c_len = python.PyUnicode_GET_DATA_SIZE(text)             # <<<<<<<<<<<<<<
 *         if c_len > python.INT_MAX:
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 */
    __pyx_v_c_len = PyUnicode_GET_DATA_SIZE(__pyx_v_text);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1414
 *     if python.PyUnicode_Check(text):
 *         c_len = python.PyUnicode_GET_DATA_SIZE(text)
 *         if c_len > python.INT_MAX:             # <<<<<<<<<<<<<<
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 StringIO(text), filename)
 */
    __pyx_t_3 = (__pyx_v_c_len > INT_MAX);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1416
 *         if c_len > python.INT_MAX:
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 StringIO(text), filename)             # <<<<<<<<<<<<<<
 *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
 *     else:
 */
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_text);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_text);
      __Pyx_GIVEREF(__pyx_v_text);
      __pyx_t_4 = PyObject_Call(__pyx_v_4lxml_5etree_StringIO, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_4, __pyx_v_filename); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_5;
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1417
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 StringIO(text), filename)
 *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)             # <<<<<<<<<<<<<<
 *     else:
 *         c_len = python.PyString_GET_SIZE(text)
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseUnicodeDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_c_filename); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = __pyx_t_6;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1419
 *         return (<_BaseParser>parser)._parseUnicodeDoc(text, c_filename)
 *     else:
 *         c_len = python.PyString_GET_SIZE(text)             # <<<<<<<<<<<<<<
 *         if c_len > python.INT_MAX:
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 */
    __pyx_v_c_len = PyString_GET_SIZE(__pyx_v_text);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1420
 *     else:
 *         c_len = python.PyString_GET_SIZE(text)
 *         if c_len > python.INT_MAX:             # <<<<<<<<<<<<<<
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 BytesIO(text), filename)
 */
    __pyx_t_3 = (__pyx_v_c_len > INT_MAX);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1422
 *         if c_len > python.INT_MAX:
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 BytesIO(text), filename)             # <<<<<<<<<<<<<<
 *         c_text = _cstr(text)
 *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
 */
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_text);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_text);
      __Pyx_GIVEREF(__pyx_v_text);
      __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree_BytesIO, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_t_2, __pyx_v_filename); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_5;
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1423
 *             return (<_BaseParser>parser)._parseDocFromFilelike(
 *                 BytesIO(text), filename)
 *         c_text = _cstr(text)             # <<<<<<<<<<<<<<
 *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
 * 
 */
    __pyx_v_c_text = PyString_AS_STRING(__pyx_v_text);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1424
 *                 BytesIO(text), filename)
 *         c_text = _cstr(text)
 *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDoc(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_c_text, __pyx_v_c_len, __pyx_v_c_filename); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = __pyx_t_7;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._parseDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_filename_utf);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1426
 *         return (<_BaseParser>parser)._parseDoc(c_text, c_len, c_filename)
 * 
 * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:             # <<<<<<<<<<<<<<
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 */

static  xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFile(PyObject *__pyx_v_filename8, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  xmlDoc *__pyx_t_3;
  __Pyx_RefNannySetupContext("_parseDocFromFile");
  __Pyx_INCREF(__pyx_v_filename8);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1427
 * 
 * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1428
 * cdef xmlDoc* _parseDocFromFile(filename8, _BaseParser parser) except NULL:
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
 * 
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1429
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _parseDocFromFilelike(source, filename,
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFile(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), PyString_AS_STRING(__pyx_v_filename8)); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._parseDocFromFile");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_filename8);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1431
 *     return (<_BaseParser>parser)._parseDocFromFile(_cstr(filename8))
 * 
 * cdef xmlDoc* _parseDocFromFilelike(source, filename,             # <<<<<<<<<<<<<<
 *                                    _BaseParser parser) except NULL:
 *     if parser is None:
 */

static  xmlDoc *__pyx_f_4lxml_5etree__parseDocFromFilelike(PyObject *__pyx_v_source, PyObject *__pyx_v_filename, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  xmlDoc *__pyx_t_3;
  __Pyx_RefNannySetupContext("_parseDocFromFilelike");
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1433
 * cdef xmlDoc* _parseDocFromFilelike(source, filename,
 *                                    _BaseParser parser) except NULL:
 *     if parser is None:             # <<<<<<<<<<<<<<
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1434
 *                                    _BaseParser parser) except NULL:
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
 *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename)
 * 
 */
    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parser));
    __pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1435
 *     if parser is None:
 *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
 *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename)             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _newXMLDoc() except NULL:
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseParser *)((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser)->__pyx_vtab)->_parseDocFromFilelike(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_source, __pyx_v_filename); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._parseDocFromFilelike");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1437
 *     return (<_BaseParser>parser)._parseDocFromFilelike(source, filename)
 * 
 * cdef xmlDoc* _newXMLDoc() except NULL:             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* result
 *     result = tree.xmlNewDoc(NULL)
 */

static  xmlDoc *__pyx_f_4lxml_5etree__newXMLDoc(void) {
  xmlDoc *__pyx_v_result;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_newXMLDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1439
 * cdef xmlDoc* _newXMLDoc() except NULL:
 *     cdef xmlDoc* result
 *     result = tree.xmlNewDoc(NULL)             # <<<<<<<<<<<<<<
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_v_result = xmlNewDoc(NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1440
 *     cdef xmlDoc* result
 *     result = tree.xmlNewDoc(NULL)
 *     if result is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     if result.encoding is NULL:
 */
  __pyx_t_1 = (__pyx_v_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1441
 *     result = tree.xmlNewDoc(NULL)
 *     if result is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     if result.encoding is NULL:
 *         result.encoding = tree.xmlStrdup("UTF-8")
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1442
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 *     if result.encoding is NULL:             # <<<<<<<<<<<<<<
 *         result.encoding = tree.xmlStrdup("UTF-8")
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 */
  __pyx_t_1 = (__pyx_v_result->encoding == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1443
 *         python.PyErr_NoMemory()
 *     if result.encoding is NULL:
 *         result.encoding = tree.xmlStrdup("UTF-8")             # <<<<<<<<<<<<<<
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result
 */
    __pyx_v_result->encoding = xmlStrdup(__pyx_k_20);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1444
 *     if result.encoding is NULL:
 *         result.encoding = tree.xmlStrdup("UTF-8")
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1445
 *         result.encoding = tree.xmlStrdup("UTF-8")
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _newHTMLDoc() except NULL:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._newXMLDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1447
 *     return result
 * 
 * cdef xmlDoc* _newHTMLDoc() except NULL:             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* result
 *     result = tree.htmlNewDoc(NULL, NULL)
 */

static  xmlDoc *__pyx_f_4lxml_5etree__newHTMLDoc(void) {
  xmlDoc *__pyx_v_result;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_newHTMLDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1449
 * cdef xmlDoc* _newHTMLDoc() except NULL:
 *     cdef xmlDoc* result
 *     result = tree.htmlNewDoc(NULL, NULL)             # <<<<<<<<<<<<<<
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_v_result = htmlNewDoc(NULL, NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1450
 *     cdef xmlDoc* result
 *     result = tree.htmlNewDoc(NULL, NULL)
 *     if result is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 */
  __pyx_t_1 = (__pyx_v_result == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1451
 *     result = tree.htmlNewDoc(NULL, NULL)
 *     if result is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1452
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1453
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._newHTMLDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1455
 *     return result
 * 
 * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* result
 *     if recursive:
 */

static  xmlDoc *__pyx_f_4lxml_5etree__copyDoc(xmlDoc *__pyx_v_c_doc, int __pyx_v_recursive) {
  xmlDoc *__pyx_v_result;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_copyDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1457
 * cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL:
 *     cdef xmlDoc* result
 *     if recursive:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             result = tree.xmlCopyDoc(c_doc, recursive)
 */
  __pyx_t_1 = __pyx_v_recursive;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1458
 *     cdef xmlDoc* result
 *     if recursive:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             result = tree.xmlCopyDoc(c_doc, recursive)
 *     else:
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1459
 *     if recursive:
 *         with nogil:
 *             result = tree.xmlCopyDoc(c_doc, recursive)             # <<<<<<<<<<<<<<
 *     else:
 *         result = tree.xmlCopyDoc(c_doc, 0)
 */
        __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, __pyx_v_recursive);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1458
 *     cdef xmlDoc* result
 *     if recursive:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             result = tree.xmlCopyDoc(c_doc, recursive)
 *     else:
 */
        Py_BLOCK_THREADS
      }
    }
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1461
 *             result = tree.xmlCopyDoc(c_doc, recursive)
 *     else:
 *         result = tree.xmlCopyDoc(c_doc, 0)             # <<<<<<<<<<<<<<
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 */
    __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, 0);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1462
 *     else:
 *         result = tree.xmlCopyDoc(c_doc, 0)
 *     if result is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 */
  __pyx_t_2 = (__pyx_v_result == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1463
 *         result = tree.xmlCopyDoc(c_doc, 0)
 *     if result is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1464
 *     if result is NULL:
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1465
 *         python.PyErr_NoMemory()
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._copyDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1467
 *     return result
 * 
 * cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL:             # <<<<<<<<<<<<<<
 *     u"Recursively copy the document and make c_new_root the new root node."
 *     cdef xmlDoc* result
 */

static  xmlDoc *__pyx_f_4lxml_5etree__copyDocRoot(xmlDoc *__pyx_v_c_doc, xmlNode *__pyx_v_c_new_root) {
  xmlDoc *__pyx_v_result;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_copyDocRoot");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1471
 *     cdef xmlDoc* result
 *     cdef xmlNode* c_node
 *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive             # <<<<<<<<<<<<<<
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     with nogil:
 */
  __pyx_v_result = xmlCopyDoc(__pyx_v_c_doc, 0);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1472
 *     cdef xmlNode* c_node
 *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initDocDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_result);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1473
 *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
 *     if c_node is NULL:
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1474
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     with nogil:
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         python.PyErr_NoMemory()
 */
      __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_new_root, __pyx_v_result, 1);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1473
 *     result = tree.xmlCopyDoc(c_doc, 0) # non recursive
 *     __GLOBAL_PARSER_CONTEXT.initDocDict(result)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
 *     if c_node is NULL:
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1475
 *     with nogil:
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(result, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1476
 *         c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive
 *     if c_node is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     tree.xmlDocSetRootElement(result, c_node)
 *     _copyTail(c_new_root.next, c_node)
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1477
 *     if c_node is NULL:
 *         python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(result, c_node)             # <<<<<<<<<<<<<<
 *     _copyTail(c_new_root.next, c_node)
 *     return result
 */
  xmlDocSetRootElement(__pyx_v_result, __pyx_v_c_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1478
 *         python.PyErr_NoMemory()
 *     tree.xmlDocSetRootElement(result, c_node)
 *     _copyTail(c_new_root.next, c_node)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_new_root->next, __pyx_v_c_node); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1479
 *     tree.xmlDocSetRootElement(result, c_node)
 *     _copyTail(c_new_root.next, c_node)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._copyDocRoot");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1481
 *     return result
 * 
 * cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL:             # <<<<<<<<<<<<<<
 *     u"Recursively copy the element into the document. c_doc is not modified."
 *     cdef xmlNode* c_root
 */

static  xmlNode *__pyx_f_4lxml_5etree__copyNodeToDoc(xmlNode *__pyx_v_c_node, xmlDoc *__pyx_v_c_doc) {
  xmlNode *__pyx_v_c_root;
  xmlNode *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_copyNodeToDoc");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1484
 *     u"Recursively copy the element into the document. c_doc is not modified."
 *     cdef xmlNode* c_root
 *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive             # <<<<<<<<<<<<<<
 *     if c_root is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_v_c_root = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_c_doc, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1485
 *     cdef xmlNode* c_root
 *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
 *     if c_root is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     _copyTail(c_node.next, c_root)
 */
  __pyx_t_1 = (__pyx_v_c_root == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1486
 *     c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive
 *     if c_root is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     _copyTail(c_node.next, c_root)
 *     return c_root
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1487
 *     if c_root is NULL:
 *         python.PyErr_NoMemory()
 *     _copyTail(c_node.next, c_root)             # <<<<<<<<<<<<<<
 *     return c_root
 * 
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__copyTail(__pyx_v_c_node->next, __pyx_v_c_root); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1488
 *         python.PyErr_NoMemory()
 *     _copyTail(c_node.next, c_root)
 *     return c_root             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_c_root;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._copyNodeToDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1496
 * ############################################################
 * 
 * cdef _Document _parseDocument(source, _BaseParser parser, base_url):             # <<<<<<<<<<<<<<
 *     cdef _Document doc
 *     if _isString(source):
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocument(PyObject *__pyx_v_source, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, PyObject *__pyx_v_base_url) {
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_url;
  struct LxmlDocument *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_parseDocument");
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_base_url);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_url = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1498
 * cdef _Document _parseDocument(source, _BaseParser parser, base_url):
 *     cdef _Document doc
 *     if _isString(source):             # <<<<<<<<<<<<<<
 *         # parse the file directly from the filesystem
 *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
 */
  __pyx_t_1 = _isString(__pyx_v_source);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1500
 *     if _isString(source):
 *         # parse the file directly from the filesystem
 *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)             # <<<<<<<<<<<<<<
 *         # fix base URL if requested
 *         if base_url is not None:
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_t_2, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1502
 *         doc = _parseDocumentFromURL(_encodeFilename(source), parser)
 *         # fix base URL if requested
 *         if base_url is not None:             # <<<<<<<<<<<<<<
 *             base_url = _encodeFilenameUTF8(base_url)
 *             if doc._c_doc.URL is not NULL:
 */
    __pyx_t_1 = (__pyx_v_base_url != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1503
 *         # fix base URL if requested
 *         if base_url is not None:
 *             base_url = _encodeFilenameUTF8(base_url)             # <<<<<<<<<<<<<<
 *             if doc._c_doc.URL is not NULL:
 *                 tree.xmlFree(doc._c_doc.URL)
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_base_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_base_url);
      __pyx_v_base_url = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1504
 *         if base_url is not None:
 *             base_url = _encodeFilenameUTF8(base_url)
 *             if doc._c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
 *                 tree.xmlFree(doc._c_doc.URL)
 *             doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))
 */
      __pyx_t_1 = (__pyx_v_doc->_c_doc->URL != NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1505
 *             base_url = _encodeFilenameUTF8(base_url)
 *             if doc._c_doc.URL is not NULL:
 *                 tree.xmlFree(doc._c_doc.URL)             # <<<<<<<<<<<<<<
 *             doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))
 *         return doc
 */
        xmlFree(__pyx_v_doc->_c_doc->URL);
        goto __pyx_L5;
      }
      __pyx_L5:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1506
 *             if doc._c_doc.URL is not NULL:
 *                 tree.xmlFree(doc._c_doc.URL)
 *             doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))             # <<<<<<<<<<<<<<
 *         return doc
 * 
 */
      __pyx_v_doc->_c_doc->URL = xmlStrdup(PyString_AS_STRING(__pyx_v_base_url));
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1507
 *                 tree.xmlFree(doc._c_doc.URL)
 *             doc._c_doc.URL = tree.xmlStrdup(_cstr(base_url))
 *         return doc             # <<<<<<<<<<<<<<
 * 
 *     if base_url is not None:
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_doc));
    __pyx_r = __pyx_v_doc;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1509
 *         return doc
 * 
 *     if base_url is not None:             # <<<<<<<<<<<<<<
 *         url = base_url
 *     else:
 */
  __pyx_t_1 = (__pyx_v_base_url != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1510
 * 
 *     if base_url is not None:
 *         url = base_url             # <<<<<<<<<<<<<<
 *     else:
 *         url = _getFilenameForFile(source)
 */
    __Pyx_INCREF(__pyx_v_base_url);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_v_base_url;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1512
 *         url = base_url
 *     else:
 *         url = _getFilenameForFile(source)             # <<<<<<<<<<<<<<
 * 
 *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1514
 *         url = _getFilenameForFile(source)
 * 
 *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):             # <<<<<<<<<<<<<<
 *         # StringIO - reading from start?
 *         if source.tell() == 0:
 */
  __pyx_t_1 = PyObject_HasAttr(__pyx_v_source, ((PyObject *)__pyx_n_u__getvalue)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {
    __pyx_t_4 = PyObject_HasAttr(__pyx_v_source, ((PyObject *)__pyx_n_u__tell)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_1;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1516
 *     if hasattr(source, u'getvalue') and hasattr(source, u'tell'):
 *         # StringIO - reading from start?
 *         if source.tell() == 0:             # <<<<<<<<<<<<<<
 *             return _parseMemoryDocument(
 *                 source.getvalue(), _encodeFilenameUTF8(url), parser)
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__tell); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1517
 *         # StringIO - reading from start?
 *         if source.tell() == 0:
 *             return _parseMemoryDocument(             # <<<<<<<<<<<<<<
 *                 source.getvalue(), _encodeFilenameUTF8(url), parser)
 * 
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1518
 *         if source.tell() == 0:
 *             return _parseMemoryDocument(
 *                 source.getvalue(), _encodeFilenameUTF8(url), parser)             # <<<<<<<<<<<<<<
 * 
 *     # Support for file-like objects (urlgrabber.urlopen, ...)
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__getvalue); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_t_2, __pyx_t_3, __pyx_v_parser)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = ((struct LxmlDocument *)__pyx_t_6);
      __pyx_t_6 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1521
 * 
 *     # Support for file-like objects (urlgrabber.urlopen, ...)
 *     if hasattr(source, u'read'):             # <<<<<<<<<<<<<<
 *         return _parseFilelikeDocument(
 *             source, _encodeFilenameUTF8(url), parser)
 */
  __pyx_t_5 = PyObject_HasAttr(__pyx_v_source, ((PyObject *)__pyx_n_u__read)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1522
 *     # Support for file-like objects (urlgrabber.urlopen, ...)
 *     if hasattr(source, u'read'):
 *         return _parseFilelikeDocument(             # <<<<<<<<<<<<<<
 *             source, _encodeFilenameUTF8(url), parser)
 * 
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1523
 *     if hasattr(source, u'read'):
 *         return _parseFilelikeDocument(
 *             source, _encodeFilenameUTF8(url), parser)             # <<<<<<<<<<<<<<
 * 
 *     raise TypeError, u"cannot parse from '%s'" % funicode(python._fqtypename(source))
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__encodeFilenameUTF8(__pyx_v_url); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseFilelikeDocument(__pyx_v_source, __pyx_t_6, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1525
 *             source, _encodeFilenameUTF8(url), parser)
 * 
 *     raise TypeError, u"cannot parse from '%s'" % funicode(python._fqtypename(source))             # <<<<<<<<<<<<<<
 * 
 * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(_fqtypename(__pyx_v_source)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_189), __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_6, 0);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._parseDocument");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_base_url);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1527
 *     raise TypeError, u"cannot parse from '%s'" % funicode(python._fqtypename(source))
 * 
 * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* c_doc
 *     c_doc = _parseDocFromFile(url, parser)
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__parseDocumentFromURL(PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_r = NULL;
  xmlDoc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_parseDocumentFromURL");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1529
 * cdef _Document _parseDocumentFromURL(url, _BaseParser parser):
 *     cdef xmlDoc* c_doc
 *     c_doc = _parseDocFromFile(url, parser)             # <<<<<<<<<<<<<<
 *     return _documentFactory(c_doc, parser)
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1530
 *     cdef xmlDoc* c_doc
 *     c_doc = _parseDocFromFile(url, parser)
 *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 * 
 * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._parseDocumentFromURL");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1532
 *     return _documentFactory(c_doc, parser)
 * 
 * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(text):
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__parseMemoryDocument(PyObject *__pyx_v_text, PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  xmlDoc *__pyx_t_4;
  __Pyx_RefNannySetupContext("_parseMemoryDocument");
  __Pyx_INCREF(__pyx_v_text);
  __Pyx_INCREF(__pyx_v_url);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1534
 * cdef _Document _parseMemoryDocument(text, url, _BaseParser parser):
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(text):             # <<<<<<<<<<<<<<
 *         if _hasEncodingDeclaration(text):
 *             raise ValueError, \
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_text);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1535
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(text):
 *         if _hasEncodingDeclaration(text):             # <<<<<<<<<<<<<<
 *             raise ValueError, \
 *                 u"Unicode strings with encoding declaration are not supported."
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__hasEncodingDeclaration(__pyx_v_text);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1536
 *     if python.PyUnicode_Check(text):
 *         if _hasEncodingDeclaration(text):
 *             raise ValueError, \             # <<<<<<<<<<<<<<
 *                 u"Unicode strings with encoding declaration are not supported."
 *         # pass native unicode only if libxml2 can handle it
 */
      __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_190), 0);
      {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1539
 *                 u"Unicode strings with encoding declaration are not supported."
 *         # pass native unicode only if libxml2 can handle it
 *         if _UNICODE_ENCODING is NULL:             # <<<<<<<<<<<<<<
 *             text = python.PyUnicode_AsUTF8String(text)
 *     elif not python.PyString_Check(text):
 */
    __pyx_t_1 = (__pyx_v_4lxml_5etree__UNICODE_ENCODING == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1540
 *         # pass native unicode only if libxml2 can handle it
 *         if _UNICODE_ENCODING is NULL:
 *             text = python.PyUnicode_AsUTF8String(text)             # <<<<<<<<<<<<<<
 *     elif not python.PyString_Check(text):
 *         raise ValueError, u"can only parse strings"
 */
      __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_text);
      __pyx_v_text = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1541
 *         if _UNICODE_ENCODING is NULL:
 *             text = python.PyUnicode_AsUTF8String(text)
 *     elif not python.PyString_Check(text):             # <<<<<<<<<<<<<<
 *         raise ValueError, u"can only parse strings"
 *     if python.PyUnicode_Check(url):
 */
  __pyx_t_1 = (!PyString_Check(__pyx_v_text));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1542
 *             text = python.PyUnicode_AsUTF8String(text)
 *     elif not python.PyString_Check(text):
 *         raise ValueError, u"can only parse strings"             # <<<<<<<<<<<<<<
 *     if python.PyUnicode_Check(url):
 *         url = python.PyUnicode_AsUTF8String(url)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_191), 0);
    {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1543
 *     elif not python.PyString_Check(text):
 *         raise ValueError, u"can only parse strings"
 *     if python.PyUnicode_Check(url):             # <<<<<<<<<<<<<<
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDoc(text, url, parser)
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_url);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1544
 *         raise ValueError, u"can only parse strings"
 *     if python.PyUnicode_Check(url):
 *         url = python.PyUnicode_AsUTF8String(url)             # <<<<<<<<<<<<<<
 *     c_doc = _parseDoc(text, url, parser)
 *     return _documentFactory(c_doc, parser)
 */
    __pyx_t_3 = PyUnicode_AsUTF8String(__pyx_v_url); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1545
 *     if python.PyUnicode_Check(url):
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDoc(text, url, parser)             # <<<<<<<<<<<<<<
 *     return _documentFactory(c_doc, parser)
 * 
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_text, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1546
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDoc(text, url, parser)
 *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 * 
 * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = ((struct LxmlDocument *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._parseMemoryDocument");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1548
 *     return _documentFactory(c_doc, parser)
 * 
 * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):             # <<<<<<<<<<<<<<
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(url):
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree__parseFilelikeDocument(PyObject *__pyx_v_source, PyObject *__pyx_v_url, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  xmlDoc *__pyx_t_3;
  __Pyx_RefNannySetupContext("_parseFilelikeDocument");
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_url);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1550
 * cdef _Document _parseFilelikeDocument(source, url, _BaseParser parser):
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(url):             # <<<<<<<<<<<<<<
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDocFromFilelike(source, url, parser)
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_url);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1551
 *     cdef xmlDoc* c_doc
 *     if python.PyUnicode_Check(url):
 *         url = python.PyUnicode_AsUTF8String(url)             # <<<<<<<<<<<<<<
 *     c_doc = _parseDocFromFilelike(source, url, parser)
 *     return _documentFactory(c_doc, parser)
 */
    __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_url); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_url);
    __pyx_v_url = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1552
 *     if python.PyUnicode_Check(url):
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDocFromFilelike(source, url, parser)             # <<<<<<<<<<<<<<
 *     return _documentFactory(c_doc, parser)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_source, __pyx_v_url, __pyx_v_parser); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1553
 *         url = python.PyUnicode_AsUTF8String(url)
 *     c_doc = _parseDocFromFilelike(source, url, parser)
 *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._parseFilelikeDocument");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF(__pyx_v_url);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":14
 *     cdef int _sax_event_filter
 *     cdef int _sax_event_propagate
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._sax_event_filter = 0
 *         self._sax_event_propagate = 0
 */

static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__cinit__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":15
 *     cdef int _sax_event_propagate
 *     def __cinit__(self):
 *         self._sax_event_filter = 0             # <<<<<<<<<<<<<<
 *         self._sax_event_propagate = 0
 * 
 */
  ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self)->_sax_event_filter = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":16
 *     def __cinit__(self):
 *         self._sax_event_filter = 0
 *         self._sax_event_propagate = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 */
  ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self)->_sax_event_propagate = 0;

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":18
 *         self._sax_event_propagate = 0
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):             # <<<<<<<<<<<<<<
 *         return None
 *     cdef _handleSaxEnd(self, tag):
 */

static  PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_handleSaxStart");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":19
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         return None             # <<<<<<<<<<<<<<
 *     cdef _handleSaxEnd(self, tag):
 *         return None
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":20
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         return None
 *     cdef _handleSaxEnd(self, tag):             # <<<<<<<<<<<<<<
 *         return None
 *     cdef int _handleSaxData(self, data) except -1:
 */

static  PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_handleSaxEnd");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":21
 *         return None
 *     cdef _handleSaxEnd(self, tag):
 *         return None             # <<<<<<<<<<<<<<
 *     cdef int _handleSaxData(self, data) except -1:
 *         return 0
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":22
 *     cdef _handleSaxEnd(self, tag):
 *         return None
 *     cdef int _handleSaxData(self, data) except -1:             # <<<<<<<<<<<<<<
 *         return 0
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 */

static  int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_handleSaxData");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":23
 *         return None
 *     cdef int _handleSaxData(self, data) except -1:
 *         return 0             # <<<<<<<<<<<<<<
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 *         return 0
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":24
 *     cdef int _handleSaxData(self, data) except -1:
 *         return 0
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:             # <<<<<<<<<<<<<<
 *         return 0
 *     cdef _handleSaxPi(self, target, data):
 */

static  int __pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_root_tag, PyObject *__pyx_v_public_id, PyObject *__pyx_v_system_id) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_handleSaxDoctype");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":25
 *         return 0
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 *         return 0             # <<<<<<<<<<<<<<
 *     cdef _handleSaxPi(self, target, data):
 *         return None
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":26
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 *         return 0
 *     cdef _handleSaxPi(self, target, data):             # <<<<<<<<<<<<<<
 *         return None
 *     cdef _handleSaxComment(self, comment):
 */

static  PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_handleSaxPi");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":27
 *         return 0
 *     cdef _handleSaxPi(self, target, data):
 *         return None             # <<<<<<<<<<<<<<
 *     cdef _handleSaxComment(self, comment):
 *         return None
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":28
 *     cdef _handleSaxPi(self, target, data):
 *         return None
 *     cdef _handleSaxComment(self, comment):             # <<<<<<<<<<<<<<
 *         return None
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment(struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_self, PyObject *__pyx_v_comment) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_handleSaxComment");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":29
 *         return None
 *     cdef _handleSaxComment(self, comment):
 *         return None             # <<<<<<<<<<<<<<
 * 
 * cdef class _SaxParserContext(_ParserContext):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":45
 *     cdef xmlparser.processingInstructionSAXFunc    _origSaxPi
 * 
 *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):             # <<<<<<<<<<<<<<
 *         self._target = target
 * 
 */

static  void __pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__SaxParserTarget *__pyx_v_target) {
  __Pyx_RefNannySetupContext("_setSaxParserTarget");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":46
 * 
 *     cdef void _setSaxParserTarget(self, _SaxParserTarget target):
 *         self._target = target             # <<<<<<<<<<<<<<
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_target));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_target));
  __Pyx_GOTREF(__pyx_v_self->_target);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_target));
  __pyx_v_self->_target = __pyx_v_target;

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":48
 *         self._target = target
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
 *         u"wrap original SAX2 callbacks"
 *         cdef xmlparser.xmlSAXHandler* sax
 */

static  void __pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
  xmlSAXHandler *__pyx_v_sax;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_initParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":51
 *         u"wrap original SAX2 callbacks"
 *         cdef xmlparser.xmlSAXHandler* sax
 *         _ParserContext._initParserContext(self, c_ctxt)             # <<<<<<<<<<<<<<
 *         sax = c_ctxt.sax
 *         if self._target._sax_event_propagate & SAX_EVENT_START:
 */
  __pyx_vtabptr_4lxml_5etree__ParserContext->_initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self), __pyx_v_c_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":52
 *         cdef xmlparser.xmlSAXHandler* sax
 *         _ParserContext._initParserContext(self, c_ctxt)
 *         sax = c_ctxt.sax             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_propagate & SAX_EVENT_START:
 *             # propagate => keep orig callback
 */
  __pyx_v_sax = __pyx_v_c_ctxt->sax;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":53
 *         _ParserContext._initParserContext(self, c_ctxt)
 *         sax = c_ctxt.sax
 *         if self._target._sax_event_propagate & SAX_EVENT_START:             # <<<<<<<<<<<<<<
 *             # propagate => keep orig callback
 *             self._origSaxStart = sax.startElementNs
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_propagate & __pyx_e_4lxml_5etree_SAX_EVENT_START);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":55
 *         if self._target._sax_event_propagate & SAX_EVENT_START:
 *             # propagate => keep orig callback
 *             self._origSaxStart = sax.startElementNs             # <<<<<<<<<<<<<<
 *             self._origSaxStartNoNs = sax.startElement
 *         else:
 */
    __pyx_v_self->_origSaxStart = __pyx_v_sax->startElementNs;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":56
 *             # propagate => keep orig callback
 *             self._origSaxStart = sax.startElementNs
 *             self._origSaxStartNoNs = sax.startElement             # <<<<<<<<<<<<<<
 *         else:
 *             # otherwise: never call orig callback
 */
    __pyx_v_self->_origSaxStartNoNs = __pyx_v_sax->startElement;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":59
 *         else:
 *             # otherwise: never call orig callback
 *             self._origSaxStart = sax.startElementNs = NULL             # <<<<<<<<<<<<<<
 *             self._origSaxStartNoNs = sax.startElement = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_START:
 */
    __pyx_v_self->_origSaxStart = NULL;
    __pyx_v_sax->startElementNs = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":60
 *             # otherwise: never call orig callback
 *             self._origSaxStart = sax.startElementNs = NULL
 *             self._origSaxStartNoNs = sax.startElement = NULL             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_START:
 *             # intercept => overwrite orig callback
 */
    __pyx_v_self->_origSaxStartNoNs = NULL;
    __pyx_v_sax->startElement = NULL;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":61
 *             self._origSaxStart = sax.startElementNs = NULL
 *             self._origSaxStartNoNs = sax.startElement = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_START:             # <<<<<<<<<<<<<<
 *             # intercept => overwrite orig callback
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_START);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":63
 *         if self._target._sax_event_filter & SAX_EVENT_START:
 *             # intercept => overwrite orig callback
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
 *                 sax.startElementNs = _handleSaxStart
 *             sax.startElement = _handleSaxStartNoNs
 */
    __pyx_t_2 = (__pyx_v_sax->initialized == XML_SAX2_MAGIC);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":64
 *             # intercept => overwrite orig callback
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 *                 sax.startElementNs = _handleSaxStart             # <<<<<<<<<<<<<<
 *             sax.startElement = _handleSaxStartNoNs
 * 
 */
      __pyx_v_sax->startElementNs = __pyx_f_4lxml_5etree__handleSaxStart;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":65
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 *                 sax.startElementNs = _handleSaxStart
 *             sax.startElement = _handleSaxStartNoNs             # <<<<<<<<<<<<<<
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_END:
 */
    __pyx_v_sax->startElement = __pyx_f_4lxml_5etree__handleSaxStartNoNs;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":67
 *             sax.startElement = _handleSaxStartNoNs
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_END:             # <<<<<<<<<<<<<<
 *             self._origSaxEnd = sax.endElementNs
 *             self._origSaxEndNoNs = sax.endElement
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_propagate & __pyx_e_4lxml_5etree_SAX_EVENT_END);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":68
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_END:
 *             self._origSaxEnd = sax.endElementNs             # <<<<<<<<<<<<<<
 *             self._origSaxEndNoNs = sax.endElement
 *         else:
 */
    __pyx_v_self->_origSaxEnd = __pyx_v_sax->endElementNs;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":69
 *         if self._target._sax_event_propagate & SAX_EVENT_END:
 *             self._origSaxEnd = sax.endElementNs
 *             self._origSaxEndNoNs = sax.endElement             # <<<<<<<<<<<<<<
 *         else:
 *             self._origSaxEnd = sax.endElementNs = NULL
 */
    __pyx_v_self->_origSaxEndNoNs = __pyx_v_sax->endElement;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":71
 *             self._origSaxEndNoNs = sax.endElement
 *         else:
 *             self._origSaxEnd = sax.endElementNs = NULL             # <<<<<<<<<<<<<<
 *             self._origSaxEndNoNs = sax.endElement = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_END:
 */
    __pyx_v_self->_origSaxEnd = NULL;
    __pyx_v_sax->endElementNs = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":72
 *         else:
 *             self._origSaxEnd = sax.endElementNs = NULL
 *             self._origSaxEndNoNs = sax.endElement = NULL             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_END:
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 */
    __pyx_v_self->_origSaxEndNoNs = NULL;
    __pyx_v_sax->endElement = NULL;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":73
 *             self._origSaxEnd = sax.endElementNs = NULL
 *             self._origSaxEndNoNs = sax.endElement = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_END:             # <<<<<<<<<<<<<<
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 *                 sax.endElementNs = _handleSaxEnd
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_END);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":74
 *             self._origSaxEndNoNs = sax.endElement = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_END:
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:             # <<<<<<<<<<<<<<
 *                 sax.endElementNs = _handleSaxEnd
 *             sax.endElement = _handleSaxEndNoNs
 */
    __pyx_t_2 = (__pyx_v_sax->initialized == XML_SAX2_MAGIC);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":75
 *         if self._target._sax_event_filter & SAX_EVENT_END:
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 *                 sax.endElementNs = _handleSaxEnd             # <<<<<<<<<<<<<<
 *             sax.endElement = _handleSaxEndNoNs
 * 
 */
      __pyx_v_sax->endElementNs = __pyx_f_4lxml_5etree__handleSaxEnd;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":76
 *             if sax.initialized == xmlparser.XML_SAX2_MAGIC:
 *                 sax.endElementNs = _handleSaxEnd
 *             sax.endElement = _handleSaxEndNoNs             # <<<<<<<<<<<<<<
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_DATA:
 */
    __pyx_v_sax->endElement = __pyx_f_4lxml_5etree__handleSaxEndNoNs;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":78
 *             sax.endElement = _handleSaxEndNoNs
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_DATA:             # <<<<<<<<<<<<<<
 *             self._origSaxData = sax.characters
 *             self._origSaxCData = sax.cdataBlock
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_propagate & __pyx_e_4lxml_5etree_SAX_EVENT_DATA);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":79
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_DATA:
 *             self._origSaxData = sax.characters             # <<<<<<<<<<<<<<
 *             self._origSaxCData = sax.cdataBlock
 *         else:
 */
    __pyx_v_self->_origSaxData = __pyx_v_sax->characters;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":80
 *         if self._target._sax_event_propagate & SAX_EVENT_DATA:
 *             self._origSaxData = sax.characters
 *             self._origSaxCData = sax.cdataBlock             # <<<<<<<<<<<<<<
 *         else:
 *             self._origSaxData = sax.characters = sax.cdataBlock = NULL
 */
    __pyx_v_self->_origSaxCData = __pyx_v_sax->cdataBlock;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":82
 *             self._origSaxCData = sax.cdataBlock
 *         else:
 *             self._origSaxData = sax.characters = sax.cdataBlock = NULL             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_DATA:
 *             sax.characters = _handleSaxData
 */
    __pyx_v_self->_origSaxData = NULL;
    __pyx_v_sax->characters = NULL;
    __pyx_v_sax->cdataBlock = NULL;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":83
 *         else:
 *             self._origSaxData = sax.characters = sax.cdataBlock = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_DATA:             # <<<<<<<<<<<<<<
 *             sax.characters = _handleSaxData
 *             sax.cdataBlock = _handleSaxCData
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_DATA);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":84
 *             self._origSaxData = sax.characters = sax.cdataBlock = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_DATA:
 *             sax.characters = _handleSaxData             # <<<<<<<<<<<<<<
 *             sax.cdataBlock = _handleSaxCData
 * 
 */
    __pyx_v_sax->characters = __pyx_f_4lxml_5etree__handleSaxData;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":85
 *         if self._target._sax_event_filter & SAX_EVENT_DATA:
 *             sax.characters = _handleSaxData
 *             sax.cdataBlock = _handleSaxCData             # <<<<<<<<<<<<<<
 * 
 *         # doctype propagation is always required for entity replacement
 */
    __pyx_v_sax->cdataBlock = __pyx_f_4lxml_5etree__handleSaxCData;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":88
 * 
 *         # doctype propagation is always required for entity replacement
 *         self._origSaxDoctype = sax.internalSubset             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:
 *             sax.internalSubset = _handleSaxDoctype
 */
  __pyx_v_self->_origSaxDoctype = __pyx_v_sax->internalSubset;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":89
 *         # doctype propagation is always required for entity replacement
 *         self._origSaxDoctype = sax.internalSubset
 *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:             # <<<<<<<<<<<<<<
 *             sax.internalSubset = _handleSaxDoctype
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_DOCTYPE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":90
 *         self._origSaxDoctype = sax.internalSubset
 *         if self._target._sax_event_filter & SAX_EVENT_DOCTYPE:
 *             sax.internalSubset = _handleSaxDoctype             # <<<<<<<<<<<<<<
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_PI:
 */
    __pyx_v_sax->internalSubset = __pyx_f_4lxml_5etree__handleSaxDoctype;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":92
 *             sax.internalSubset = _handleSaxDoctype
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_PI:             # <<<<<<<<<<<<<<
 *             self._origSaxPi = sax.processingInstruction
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_propagate & __pyx_e_4lxml_5etree_SAX_EVENT_PI);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":93
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_PI:
 *             self._origSaxPi = sax.processingInstruction             # <<<<<<<<<<<<<<
 *         else:
 *             self._origSaxPi = sax.processingInstruction = NULL
 */
    __pyx_v_self->_origSaxPi = __pyx_v_sax->processingInstruction;
    goto __pyx_L12;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":95
 *             self._origSaxPi = sax.processingInstruction
 *         else:
 *             self._origSaxPi = sax.processingInstruction = NULL             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_PI:
 *             sax.processingInstruction = _handleSaxPI
 */
    __pyx_v_self->_origSaxPi = NULL;
    __pyx_v_sax->processingInstruction = NULL;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":96
 *         else:
 *             self._origSaxPi = sax.processingInstruction = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_PI:             # <<<<<<<<<<<<<<
 *             sax.processingInstruction = _handleSaxPI
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_PI);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":97
 *             self._origSaxPi = sax.processingInstruction = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_PI:
 *             sax.processingInstruction = _handleSaxPI             # <<<<<<<<<<<<<<
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_COMMENT:
 */
    __pyx_v_sax->processingInstruction = __pyx_f_4lxml_5etree__handleSaxPI;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":99
 *             sax.processingInstruction = _handleSaxPI
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_COMMENT:             # <<<<<<<<<<<<<<
 *             self._origSaxComment = sax.comment
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_propagate & __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":100
 * 
 *         if self._target._sax_event_propagate & SAX_EVENT_COMMENT:
 *             self._origSaxComment = sax.comment             # <<<<<<<<<<<<<<
 *         else:
 *             self._origSaxComment = sax.comment = NULL
 */
    __pyx_v_self->_origSaxComment = __pyx_v_sax->comment;
    goto __pyx_L14;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":102
 *             self._origSaxComment = sax.comment
 *         else:
 *             self._origSaxComment = sax.comment = NULL             # <<<<<<<<<<<<<<
 *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:
 *             sax.comment = _handleSaxComment
 */
    __pyx_v_self->_origSaxComment = NULL;
    __pyx_v_sax->comment = NULL;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":103
 *         else:
 *             self._origSaxComment = sax.comment = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:             # <<<<<<<<<<<<<<
 *             sax.comment = _handleSaxComment
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_target->_sax_event_filter & __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":104
 *             self._origSaxComment = sax.comment = NULL
 *         if self._target._sax_event_filter & SAX_EVENT_COMMENT:
 *             sax.comment = _handleSaxComment             # <<<<<<<<<<<<<<
 * 
 *         # enforce entity replacement
 */
    __pyx_v_sax->comment = __pyx_f_4lxml_5etree__handleSaxComment;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":107
 * 
 *         # enforce entity replacement
 *         sax.reference = NULL             # <<<<<<<<<<<<<<
 *         c_ctxt.replaceEntities = 1
 * 
 */
  __pyx_v_sax->reference = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":108
 *         # enforce entity replacement
 *         sax.reference = NULL
 *         c_ctxt.replaceEntities = 1             # <<<<<<<<<<<<<<
 * 
 *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
 */
  __pyx_v_c_ctxt->replaceEntities = 1;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":110
 *         c_ctxt.replaceEntities = 1
 * 
 *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
 *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 */

static  void __pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException(struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_handleSaxException");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":111
 * 
 *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
 *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         # stop parsing immediately
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->errNo == XML_ERR_OK);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":112
 *     cdef void _handleSaxException(self, xmlparser.xmlParserCtxt* c_ctxt):
 *         if c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
 *         # stop parsing immediately
 *         c_ctxt.wellFormed = 0
 */
    __pyx_v_c_ctxt->errNo = XML_ERR_INTERNAL_ERROR;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":114
 *             c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         # stop parsing immediately
 *         c_ctxt.wellFormed = 0             # <<<<<<<<<<<<<<
 *         c_ctxt.disableSAX = 1
 *         self._store_raised()
 */
  __pyx_v_c_ctxt->wellFormed = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":115
 *         # stop parsing immediately
 *         c_ctxt.wellFormed = 0
 *         c_ctxt.disableSAX = 1             # <<<<<<<<<<<<<<
 *         self._store_raised()
 * 
 */
  __pyx_v_c_ctxt->disableSAX = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":116
 *         c_ctxt.wellFormed = 0
 *         c_ctxt.disableSAX = 1
 *         self._store_raised()             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxStart(void* ctxt, char* c_localname, char* c_prefix,
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":118
 *         self._store_raised()
 * 
 * cdef void _handleSaxStart(void* ctxt, char* c_localname, char* c_prefix,             # <<<<<<<<<<<<<<
 *                           char* c_namespace, int c_nb_namespaces,
 *                           char** c_namespaces,
 */

static  void __pyx_f_4lxml_5etree__handleSaxStart(void *__pyx_v_ctxt, char *__pyx_v_c_localname, char *__pyx_v_c_prefix, char *__pyx_v_c_namespace, int __pyx_v_c_nb_namespaces, char **__pyx_v_c_namespaces, int __pyx_v_c_nb_attributes, int __pyx_v_c_nb_defaulted, char **__pyx_v_c_attributes) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct LxmlElement *__pyx_v_element;
  int __pyx_v_i;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_v_attrib;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_nsmap;
  PyObject *__pyx_v_prefix;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxStart");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_attrib = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_nsmap = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":127
 *     cdef _Element element
 *     cdef int i
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":128
 *     cdef int i
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":129
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxStart is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":130
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxStart is not NULL:
 *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":131
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxStart is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,
 *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxStart != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":134
 *         context._origSaxStart(c_ctxt, c_localname, c_prefix, c_namespace,
 *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
 *                               c_nb_defaulted, c_attributes)             # <<<<<<<<<<<<<<
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 */
    __pyx_v_context->_origSaxStart(__pyx_v_c_ctxt, __pyx_v_c_localname, __pyx_v_c_prefix, __pyx_v_c_namespace, __pyx_v_c_nb_namespaces, __pyx_v_c_namespaces, __pyx_v_c_nb_attributes, __pyx_v_c_nb_defaulted, __pyx_v_c_attributes);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":135
 *                               c_nb_namespaces, c_namespaces, c_nb_attributes,
 *                               c_nb_defaulted, c_attributes)
 *     try:             # <<<<<<<<<<<<<<
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 *         if c_nb_defaulted > 0:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":136
 *                               c_nb_defaulted, c_attributes)
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)             # <<<<<<<<<<<<<<
 *         if c_nb_defaulted > 0:
 *             # only add default attributes if we asked for them
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":137
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 *         if c_nb_defaulted > 0:             # <<<<<<<<<<<<<<
 *             # only add default attributes if we asked for them
 *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
 */
      __pyx_t_1 = (__pyx_v_c_nb_defaulted > 0);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":139
 *         if c_nb_defaulted > 0:
 *             # only add default attributes if we asked for them
 *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:             # <<<<<<<<<<<<<<
 *                 c_nb_attributes = c_nb_attributes - c_nb_defaulted
 *         if c_nb_attributes == 0:
 */
        __pyx_t_1 = ((__pyx_v_c_ctxt->loadsubset & XML_COMPLETE_ATTRS) == 0);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":140
 *             # only add default attributes if we asked for them
 *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
 *                 c_nb_attributes = c_nb_attributes - c_nb_defaulted             # <<<<<<<<<<<<<<
 *         if c_nb_attributes == 0:
 *             attrib = EMPTY_READ_ONLY_DICT
 */
          __pyx_v_c_nb_attributes = (__pyx_v_c_nb_attributes - __pyx_v_c_nb_defaulted);
          goto __pyx_L14;
        }
        __pyx_L14:;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":141
 *             if c_ctxt.loadsubset & xmlparser.XML_COMPLETE_ATTRS == 0:
 *                 c_nb_attributes = c_nb_attributes - c_nb_defaulted
 *         if c_nb_attributes == 0:             # <<<<<<<<<<<<<<
 *             attrib = EMPTY_READ_ONLY_DICT
 *         else:
 */
      __pyx_t_1 = (__pyx_v_c_nb_attributes == 0);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":142
 *                 c_nb_attributes = c_nb_attributes - c_nb_defaulted
 *         if c_nb_attributes == 0:
 *             attrib = EMPTY_READ_ONLY_DICT             # <<<<<<<<<<<<<<
 *         else:
 *             attrib = {}
 */
        __Pyx_INCREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
        __Pyx_DECREF(__pyx_v_attrib);
        __pyx_v_attrib = __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT;
        goto __pyx_L15;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":144
 *             attrib = EMPTY_READ_ONLY_DICT
 *         else:
 *             attrib = {}             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < c_nb_attributes:
 *                 name = _namespacedNameFromNsName(
 */
        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_2));
        __Pyx_DECREF(__pyx_v_attrib);
        __pyx_v_attrib = ((PyObject *)__pyx_t_2);
        __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":145
 *         else:
 *             attrib = {}
 *             for i from 0 <= i < c_nb_attributes:             # <<<<<<<<<<<<<<
 *                 name = _namespacedNameFromNsName(
 *                     c_attributes[2], c_attributes[0])
 */
        __pyx_t_3 = __pyx_v_c_nb_attributes;
        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":147
 *             for i from 0 <= i < c_nb_attributes:
 *                 name = _namespacedNameFromNsName(
 *                     c_attributes[2], c_attributes[0])             # <<<<<<<<<<<<<<
 *                 if c_attributes[3] is NULL:
 *                     if python.IS_PYTHON3:
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedNameFromNsName((__pyx_v_c_attributes[2]), (__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_v_name);
          __pyx_v_name = __pyx_t_2;
          __pyx_t_2 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":148
 *                 name = _namespacedNameFromNsName(
 *                     c_attributes[2], c_attributes[0])
 *                 if c_attributes[3] is NULL:             # <<<<<<<<<<<<<<
 *                     if python.IS_PYTHON3:
 *                         value = u''
 */
          __pyx_t_1 = ((__pyx_v_c_attributes[3]) == NULL);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":149
 *                     c_attributes[2], c_attributes[0])
 *                 if c_attributes[3] is NULL:
 *                     if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *                         value = u''
 *                     else:
 */
            __pyx_t_1 = IS_PYTHON3;
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":150
 *                 if c_attributes[3] is NULL:
 *                     if python.IS_PYTHON3:
 *                         value = u''             # <<<<<<<<<<<<<<
 *                     else:
 *                         value = ''
 */
              __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
              __Pyx_DECREF(__pyx_v_value);
              __pyx_v_value = ((PyObject *)__pyx_kp_u_14);
              goto __pyx_L19;
            }
            /*else*/ {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":152
 *                         value = u''
 *                     else:
 *                         value = ''             # <<<<<<<<<<<<<<
 *                 else:
 *                     value = python.PyUnicode_DecodeUTF8(
 */
              __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
              __Pyx_DECREF(__pyx_v_value);
              __pyx_v_value = ((PyObject *)__pyx_kp_s_14);
            }
            __pyx_L19:;
            goto __pyx_L18;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":155
 *                 else:
 *                     value = python.PyUnicode_DecodeUTF8(
 *                         c_attributes[3], c_attributes[4] - c_attributes[3],             # <<<<<<<<<<<<<<
 *                         "strict")
 *                 attrib[name] = value
 */
            __pyx_t_2 = PyUnicode_DecodeUTF8((__pyx_v_c_attributes[3]), ((__pyx_v_c_attributes[4]) - (__pyx_v_c_attributes[3])), __pyx_k__strict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_v_value);
            __pyx_v_value = __pyx_t_2;
            __pyx_t_2 = 0;
          }
          __pyx_L18:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":157
 *                         c_attributes[3], c_attributes[4] - c_attributes[3],
 *                         "strict")
 *                 attrib[name] = value             # <<<<<<<<<<<<<<
 *                 c_attributes += 5
 *         if c_nb_namespaces == 0:
 */
          if (PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L5_error;}

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":158
 *                         "strict")
 *                 attrib[name] = value
 *                 c_attributes += 5             # <<<<<<<<<<<<<<
 *         if c_nb_namespaces == 0:
 *             nsmap = EMPTY_READ_ONLY_DICT
 */
          __pyx_v_c_attributes += 5;
        }
      }
      __pyx_L15:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":159
 *                 attrib[name] = value
 *                 c_attributes += 5
 *         if c_nb_namespaces == 0:             # <<<<<<<<<<<<<<
 *             nsmap = EMPTY_READ_ONLY_DICT
 *         else:
 */
      __pyx_t_1 = (__pyx_v_c_nb_namespaces == 0);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":160
 *                 c_attributes += 5
 *         if c_nb_namespaces == 0:
 *             nsmap = EMPTY_READ_ONLY_DICT             # <<<<<<<<<<<<<<
 *         else:
 *             nsmap = {}
 */
        __Pyx_INCREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
        __Pyx_DECREF(__pyx_v_nsmap);
        __pyx_v_nsmap = __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT;
        goto __pyx_L20;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":162
 *             nsmap = EMPTY_READ_ONLY_DICT
 *         else:
 *             nsmap = {}             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < c_nb_namespaces:
 *                 if c_namespaces[0] is NULL:
 */
        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_2));
        __Pyx_DECREF(__pyx_v_nsmap);
        __pyx_v_nsmap = ((PyObject *)__pyx_t_2);
        __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":163
 *         else:
 *             nsmap = {}
 *             for i from 0 <= i < c_nb_namespaces:             # <<<<<<<<<<<<<<
 *                 if c_namespaces[0] is NULL:
 *                     prefix = None
 */
        __pyx_t_3 = __pyx_v_c_nb_namespaces;
        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":164
 *             nsmap = {}
 *             for i from 0 <= i < c_nb_namespaces:
 *                 if c_namespaces[0] is NULL:             # <<<<<<<<<<<<<<
 *                     prefix = None
 *                 else:
 */
          __pyx_t_1 = ((__pyx_v_c_namespaces[0]) == NULL);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":165
 *             for i from 0 <= i < c_nb_namespaces:
 *                 if c_namespaces[0] is NULL:
 *                     prefix = None             # <<<<<<<<<<<<<<
 *                 else:
 *                     prefix = funicode(c_namespaces[0])
 */
            __Pyx_INCREF(Py_None);
            __Pyx_DECREF(__pyx_v_prefix);
            __pyx_v_prefix = Py_None;
            goto __pyx_L23;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":167
 *                     prefix = None
 *                 else:
 *                     prefix = funicode(c_namespaces[0])             # <<<<<<<<<<<<<<
 *                 nsmap[prefix] = funicode(c_namespaces[1])
 *                 c_namespaces += 2
 */
            __pyx_t_2 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_v_prefix);
            __pyx_v_prefix = __pyx_t_2;
            __pyx_t_2 = 0;
          }
          __pyx_L23:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":168
 *                 else:
 *                     prefix = funicode(c_namespaces[0])
 *                 nsmap[prefix] = funicode(c_namespaces[1])             # <<<<<<<<<<<<<<
 *                 c_namespaces += 2
 *         element = context._target._handleSaxStart(tag, attrib, nsmap)
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_namespaces[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_GOTREF(__pyx_t_2);
          if (PyObject_SetItem(__pyx_v_nsmap, __pyx_v_prefix, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":169
 *                     prefix = funicode(c_namespaces[0])
 *                 nsmap[prefix] = funicode(c_namespaces[1])
 *                 c_namespaces += 2             # <<<<<<<<<<<<<<
 *         element = context._target._handleSaxStart(tag, attrib, nsmap)
 *         if element is not None and c_ctxt.input is not NULL:
 */
          __pyx_v_c_namespaces += 2;
        }
      }
      __pyx_L20:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":170
 *                 nsmap[prefix] = funicode(c_namespaces[1])
 *                 c_namespaces += 2
 *         element = context._target._handleSaxStart(tag, attrib, nsmap)             # <<<<<<<<<<<<<<
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxStart(__pyx_v_context->_target, __pyx_v_tag, __pyx_v_attrib, __pyx_v_nsmap); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":171
 *                 c_namespaces += 2
 *         element = context._target._handleSaxStart(tag, attrib, nsmap)
 *         if element is not None and c_ctxt.input is not NULL:             # <<<<<<<<<<<<<<
 *             if c_ctxt.input.line < 65535:
 *                 element._c_node.line = <short>c_ctxt.input.line
 */
      __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
      if (__pyx_t_1) {
        __pyx_t_4 = (__pyx_v_c_ctxt->input != NULL);
        __pyx_t_5 = __pyx_t_4;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":172
 *         element = context._target._handleSaxStart(tag, attrib, nsmap)
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:             # <<<<<<<<<<<<<<
 *                 element._c_node.line = <short>c_ctxt.input.line
 *             else:
 */
        __pyx_t_5 = (__pyx_v_c_ctxt->input->line < 65535);
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":173
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:
 *                 element._c_node.line = <short>c_ctxt.input.line             # <<<<<<<<<<<<<<
 *             else:
 *                 element._c_node.line = 65535
 */
          __pyx_v_element->_c_node->line = ((short)__pyx_v_c_ctxt->input->line);
          goto __pyx_L25;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":175
 *                 element._c_node.line = <short>c_ctxt.input.line
 *             else:
 *                 element._c_node.line = 65535             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
          __pyx_v_element->_c_node->line = 65535;
        }
        __pyx_L25:;
        goto __pyx_L24;
      }
      __pyx_L24:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":176
 *             else:
 *                 element._c_node.line = 65535
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxStart");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":177
 *                 element._c_node.line = 65535
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxStartNoNs(void* ctxt, char* c_name,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxStart");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":179
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxStartNoNs(void* ctxt, char* c_name,             # <<<<<<<<<<<<<<
 *                               char** c_attributes) with gil:
 *     cdef _SaxParserContext context
 */

static  void __pyx_f_4lxml_5etree__handleSaxStartNoNs(void *__pyx_v_ctxt, char *__pyx_v_c_name, char **__pyx_v_c_attributes) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct LxmlElement *__pyx_v_element;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_v_attrib;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_value;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxStartNoNs");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_attrib = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":184
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _Element element
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":185
 *     cdef _Element element
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":186
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxStartNoNs is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":187
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxStartNoNs is not NULL:
 *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":188
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxStartNoNs is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
 *     try:
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxStartNoNs != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":189
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxStartNoNs is not NULL:
 *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)             # <<<<<<<<<<<<<<
 *     try:
 *         tag = funicode(c_name)
 */
    __pyx_v_context->_origSaxStartNoNs(__pyx_v_c_ctxt, __pyx_v_c_name, __pyx_v_c_attributes);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":190
 *     if context._origSaxStartNoNs is not NULL:
 *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
 *     try:             # <<<<<<<<<<<<<<
 *         tag = funicode(c_name)
 *         if c_attributes is NULL:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":191
 *         context._origSaxStartNoNs(c_ctxt, c_name, c_attributes)
 *     try:
 *         tag = funicode(c_name)             # <<<<<<<<<<<<<<
 *         if c_attributes is NULL:
 *             attrib = EMPTY_READ_ONLY_DICT
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":192
 *     try:
 *         tag = funicode(c_name)
 *         if c_attributes is NULL:             # <<<<<<<<<<<<<<
 *             attrib = EMPTY_READ_ONLY_DICT
 *         else:
 */
      __pyx_t_1 = (__pyx_v_c_attributes == NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":193
 *         tag = funicode(c_name)
 *         if c_attributes is NULL:
 *             attrib = EMPTY_READ_ONLY_DICT             # <<<<<<<<<<<<<<
 *         else:
 *             attrib = {}
 */
        __Pyx_INCREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
        __Pyx_DECREF(__pyx_v_attrib);
        __pyx_v_attrib = __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":195
 *             attrib = EMPTY_READ_ONLY_DICT
 *         else:
 *             attrib = {}             # <<<<<<<<<<<<<<
 *             while c_attributes[0] is not NULL:
 *                 name = funicode(c_attributes[0])
 */
        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_2));
        __Pyx_DECREF(__pyx_v_attrib);
        __pyx_v_attrib = ((PyObject *)__pyx_t_2);
        __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":196
 *         else:
 *             attrib = {}
 *             while c_attributes[0] is not NULL:             # <<<<<<<<<<<<<<
 *                 name = funicode(c_attributes[0])
 *                 if c_attributes[1] is NULL:
 */
        while (1) {
          __pyx_t_1 = ((__pyx_v_c_attributes[0]) != NULL);
          if (!__pyx_t_1) break;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":197
 *             attrib = {}
 *             while c_attributes[0] is not NULL:
 *                 name = funicode(c_attributes[0])             # <<<<<<<<<<<<<<
 *                 if c_attributes[1] is NULL:
 *                     if python.IS_PYTHON3:
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_attributes[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_v_name);
          __pyx_v_name = __pyx_t_2;
          __pyx_t_2 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":198
 *             while c_attributes[0] is not NULL:
 *                 name = funicode(c_attributes[0])
 *                 if c_attributes[1] is NULL:             # <<<<<<<<<<<<<<
 *                     if python.IS_PYTHON3:
 *                         value = u''
 */
          __pyx_t_1 = ((__pyx_v_c_attributes[1]) == NULL);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":199
 *                 name = funicode(c_attributes[0])
 *                 if c_attributes[1] is NULL:
 *                     if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *                         value = u''
 *                     else:
 */
            __pyx_t_1 = IS_PYTHON3;
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":200
 *                 if c_attributes[1] is NULL:
 *                     if python.IS_PYTHON3:
 *                         value = u''             # <<<<<<<<<<<<<<
 *                     else:
 *                         value = ''
 */
              __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
              __Pyx_DECREF(__pyx_v_value);
              __pyx_v_value = ((PyObject *)__pyx_kp_u_14);
              goto __pyx_L17;
            }
            /*else*/ {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":202
 *                         value = u''
 *                     else:
 *                         value = ''             # <<<<<<<<<<<<<<
 *                 else:
 *                     value = funicode(c_attributes[1])
 */
              __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
              __Pyx_DECREF(__pyx_v_value);
              __pyx_v_value = ((PyObject *)__pyx_kp_s_14);
            }
            __pyx_L17:;
            goto __pyx_L16;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":204
 *                         value = ''
 *                 else:
 *                     value = funicode(c_attributes[1])             # <<<<<<<<<<<<<<
 *                 c_attributes = c_attributes + 2
 *                 attrib[name] = value
 */
            __pyx_t_2 = __pyx_f_4lxml_5etree_funicode((__pyx_v_c_attributes[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_v_value);
            __pyx_v_value = __pyx_t_2;
            __pyx_t_2 = 0;
          }
          __pyx_L16:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":205
 *                 else:
 *                     value = funicode(c_attributes[1])
 *                 c_attributes = c_attributes + 2             # <<<<<<<<<<<<<<
 *                 attrib[name] = value
 *         element = context._target._handleSaxStart(
 */
          __pyx_v_c_attributes = (__pyx_v_c_attributes + 2);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":206
 *                     value = funicode(c_attributes[1])
 *                 c_attributes = c_attributes + 2
 *                 attrib[name] = value             # <<<<<<<<<<<<<<
 *         element = context._target._handleSaxStart(
 *             tag, attrib, EMPTY_READ_ONLY_DICT)
 */
          if (PyObject_SetItem(__pyx_v_attrib, __pyx_v_name, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":208
 *                 attrib[name] = value
 *         element = context._target._handleSaxStart(
 *             tag, attrib, EMPTY_READ_ONLY_DICT)             # <<<<<<<<<<<<<<
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxStart(__pyx_v_context->_target, __pyx_v_tag, __pyx_v_attrib, __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_element));
      __pyx_v_element = ((struct LxmlElement *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":209
 *         element = context._target._handleSaxStart(
 *             tag, attrib, EMPTY_READ_ONLY_DICT)
 *         if element is not None and c_ctxt.input is not NULL:             # <<<<<<<<<<<<<<
 *             if c_ctxt.input.line < 65535:
 *                 element._c_node.line = <short>c_ctxt.input.line
 */
      __pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
      if (__pyx_t_1) {
        __pyx_t_3 = (__pyx_v_c_ctxt->input != NULL);
        __pyx_t_4 = __pyx_t_3;
      } else {
        __pyx_t_4 = __pyx_t_1;
      }
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":210
 *             tag, attrib, EMPTY_READ_ONLY_DICT)
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:             # <<<<<<<<<<<<<<
 *                 element._c_node.line = <short>c_ctxt.input.line
 *             else:
 */
        __pyx_t_4 = (__pyx_v_c_ctxt->input->line < 65535);
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":211
 *         if element is not None and c_ctxt.input is not NULL:
 *             if c_ctxt.input.line < 65535:
 *                 element._c_node.line = <short>c_ctxt.input.line             # <<<<<<<<<<<<<<
 *             else:
 *                 element._c_node.line = 65535
 */
          __pyx_v_element->_c_node->line = ((short)__pyx_v_c_ctxt->input->line);
          goto __pyx_L19;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":213
 *                 element._c_node.line = <short>c_ctxt.input.line
 *             else:
 *                 element._c_node.line = 65535             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
          __pyx_v_element->_c_node->line = 65535;
        }
        __pyx_L19:;
        goto __pyx_L18;
      }
      __pyx_L18:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":214
 *             else:
 *                 element._c_node.line = 65535
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxStartNoNs");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":215
 *                 element._c_node.line = 65535
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxEnd(void* ctxt, char* c_localname, char* c_prefix,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxStartNoNs");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":217
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxEnd(void* ctxt, char* c_localname, char* c_prefix,             # <<<<<<<<<<<<<<
 *                         char* c_namespace) with gil:
 *     cdef _SaxParserContext context
 */

static  void __pyx_f_4lxml_5etree__handleSaxEnd(void *__pyx_v_ctxt, char *__pyx_v_c_localname, char *__pyx_v_c_prefix, char *__pyx_v_c_namespace) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  PyObject *__pyx_v_tag;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxEnd");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":221
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":222
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":223
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEnd is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":224
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxEnd is not NULL:
 *         context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":225
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEnd is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
 *     try:
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxEnd != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":226
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEnd is not NULL:
 *         context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)             # <<<<<<<<<<<<<<
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 */
    __pyx_v_context->_origSaxEnd(__pyx_v_c_ctxt, __pyx_v_c_localname, __pyx_v_c_prefix, __pyx_v_c_namespace);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":227
 *     if context._origSaxEnd is not NULL:
 *         context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
 *     try:             # <<<<<<<<<<<<<<
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 *         context._target._handleSaxEnd(tag)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":228
 *         context._origSaxEnd(c_ctxt, c_localname, c_prefix, c_namespace)
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)             # <<<<<<<<<<<<<<
 *         context._target._handleSaxEnd(tag)
 *     except:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_namespace, __pyx_v_c_localname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":229
 *     try:
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 *         context._target._handleSaxEnd(tag)             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_v_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":230
 *         tag = _namespacedNameFromNsName(c_namespace, c_localname)
 *         context._target._handleSaxEnd(tag)
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxEnd");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":231
 *         context._target._handleSaxEnd(tag)
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxEndNoNs(void* ctxt, char* c_name) with gil:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxEnd");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":233
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxEndNoNs(void* ctxt, char* c_name) with gil:             # <<<<<<<<<<<<<<
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__handleSaxEndNoNs(void *__pyx_v_ctxt, char *__pyx_v_c_name) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxEndNoNs");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":236
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":237
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":238
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEndNoNs is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":239
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxEndNoNs is not NULL:
 *         context._origSaxEndNoNs(c_ctxt, c_name)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":240
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEndNoNs is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxEndNoNs(c_ctxt, c_name)
 *     try:
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxEndNoNs != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":241
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxEndNoNs is not NULL:
 *         context._origSaxEndNoNs(c_ctxt, c_name)             # <<<<<<<<<<<<<<
 *     try:
 *         context._target._handleSaxEnd(funicode(c_name))
 */
    __pyx_v_context->_origSaxEndNoNs(__pyx_v_c_ctxt, __pyx_v_c_name);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":242
 *     if context._origSaxEndNoNs is not NULL:
 *         context._origSaxEndNoNs(c_ctxt, c_name)
 *     try:             # <<<<<<<<<<<<<<
 *         context._target._handleSaxEnd(funicode(c_name))
 *     except:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":243
 *         context._origSaxEndNoNs(c_ctxt, c_name)
 *     try:
 *         context._target._handleSaxEnd(funicode(c_name))             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxEnd(__pyx_v_context->_target, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":244
 *     try:
 *         context._target._handleSaxEnd(funicode(c_name))
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxEndNoNs");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":245
 *         context._target._handleSaxEnd(funicode(c_name))
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxData(void* ctxt, char* c_data, int data_len) with gil:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxEndNoNs");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":247
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxData(void* ctxt, char* c_data, int data_len) with gil:             # <<<<<<<<<<<<<<
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__handleSaxData(void *__pyx_v_ctxt, char *__pyx_v_c_data, int __pyx_v_data_len) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxData");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":250
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":251
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = __pyx_v_c_ctxt->disableSAX;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":252
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxData is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":253
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxData is not NULL:
 *         context._origSaxData(c_ctxt, c_data, data_len)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":254
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxData is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxData(c_ctxt, c_data, data_len)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_context->_origSaxData != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":255
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxData is not NULL:
 *         context._origSaxData(c_ctxt, c_data, data_len)             # <<<<<<<<<<<<<<
 *     try:
 *         context._target._handleSaxData(
 */
    __pyx_v_context->_origSaxData(__pyx_v_c_ctxt, __pyx_v_c_data, __pyx_v_data_len);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":256
 *     if context._origSaxData is not NULL:
 *         context._origSaxData(c_ctxt, c_data, data_len)
 *     try:             # <<<<<<<<<<<<<<
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":258
 *     try:
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_3 = PyUnicode_DecodeUTF8(__pyx_v_c_data, __pyx_v_data_len, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxData(__pyx_v_context->_target, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":259
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxData");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":260
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxCData(void* ctxt, char* c_data, int data_len) with gil:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxData");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":262
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxCData(void* ctxt, char* c_data, int data_len) with gil:             # <<<<<<<<<<<<<<
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__handleSaxCData(void *__pyx_v_ctxt, char *__pyx_v_c_data, int __pyx_v_data_len) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxCData");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":265
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":266
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = __pyx_v_c_ctxt->disableSAX;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":267
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxCData is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":268
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxCData is not NULL:
 *         context._origSaxCData(c_ctxt, c_data, data_len)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":269
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxCData is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxCData(c_ctxt, c_data, data_len)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_context->_origSaxCData != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":270
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxCData is not NULL:
 *         context._origSaxCData(c_ctxt, c_data, data_len)             # <<<<<<<<<<<<<<
 *     try:
 *         context._target._handleSaxData(
 */
    __pyx_v_context->_origSaxCData(__pyx_v_c_ctxt, __pyx_v_c_data, __pyx_v_data_len);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":271
 *     if context._origSaxCData is not NULL:
 *         context._origSaxCData(c_ctxt, c_data, data_len)
 *     try:             # <<<<<<<<<<<<<<
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":273
 *     try:
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_3 = PyUnicode_DecodeUTF8(__pyx_v_c_data, __pyx_v_data_len, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxData(__pyx_v_context->_target, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":274
 *         context._target._handleSaxData(
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxCData");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":275
 *             python.PyUnicode_DecodeUTF8(c_data, data_len, NULL))
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxDoctype(void* ctxt, char* c_name, char* c_public,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxCData");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":277
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxDoctype(void* ctxt, char* c_name, char* c_public,             # <<<<<<<<<<<<<<
 *                             char* c_system) with gil:
 *     cdef _SaxParserContext context
 */

static  void __pyx_f_4lxml_5etree__handleSaxDoctype(void *__pyx_v_ctxt, char *__pyx_v_c_name, char *__pyx_v_c_public, char *__pyx_v_c_system) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  PyObject *__pyx_v_public_id;
  PyObject *__pyx_v_system_id;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxDoctype");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_public_id = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_system_id = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":281
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":282
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = __pyx_v_c_ctxt->disableSAX;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":283
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxDoctype is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":284
 *     if c_ctxt._private is NULL or c_ctxt.disableSAX:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxDoctype is not NULL:
 *         context._origSaxDoctype(c_ctxt, c_name, c_public, c_system)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":285
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxDoctype is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxDoctype(c_ctxt, c_name, c_public, c_system)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_context->_origSaxDoctype != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":286
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxDoctype is not NULL:
 *         context._origSaxDoctype(c_ctxt, c_name, c_public, c_system)             # <<<<<<<<<<<<<<
 *     try:
 *         if c_public is not NULL:
 */
    __pyx_v_context->_origSaxDoctype(__pyx_v_c_ctxt, __pyx_v_c_name, __pyx_v_c_public, __pyx_v_c_system);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":287
 *     if context._origSaxDoctype is not NULL:
 *         context._origSaxDoctype(c_ctxt, c_name, c_public, c_system)
 *     try:             # <<<<<<<<<<<<<<
 *         if c_public is not NULL:
 *             public_id = funicode(c_public)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":288
 *         context._origSaxDoctype(c_ctxt, c_name, c_public, c_system)
 *     try:
 *         if c_public is not NULL:             # <<<<<<<<<<<<<<
 *             public_id = funicode(c_public)
 *         if c_system is not NULL:
 */
      __pyx_t_2 = (__pyx_v_c_public != NULL);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":289
 *     try:
 *         if c_public is not NULL:
 *             public_id = funicode(c_public)             # <<<<<<<<<<<<<<
 *         if c_system is not NULL:
 *             system_id = funicode(c_system)
 */
        __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_public); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_v_public_id);
        __pyx_v_public_id = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":290
 *         if c_public is not NULL:
 *             public_id = funicode(c_public)
 *         if c_system is not NULL:             # <<<<<<<<<<<<<<
 *             system_id = funicode(c_system)
 *         context._target._handleSaxDoctype(
 */
      __pyx_t_2 = (__pyx_v_c_system != NULL);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":291
 *             public_id = funicode(c_public)
 *         if c_system is not NULL:
 *             system_id = funicode(c_system)             # <<<<<<<<<<<<<<
 *         context._target._handleSaxDoctype(
 *             funicode(c_name), public_id, system_id)
 */
        __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_system); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_v_system_id);
        __pyx_v_system_id = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L14;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":293
 *             system_id = funicode(c_system)
 *         context._target._handleSaxDoctype(
 *             funicode(c_name), public_id, system_id)             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxDoctype(__pyx_v_context->_target, __pyx_t_3, __pyx_v_public_id, __pyx_v_system_id); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":294
 *         context._target._handleSaxDoctype(
 *             funicode(c_name), public_id, system_id)
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxDoctype");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":295
 *             funicode(c_name), public_id, system_id)
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxPI(void* ctxt, char* c_target, char* c_data) with gil:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxDoctype");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_public_id);
  __Pyx_DECREF(__pyx_v_system_id);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":297
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxPI(void* ctxt, char* c_target, char* c_data) with gil:             # <<<<<<<<<<<<<<
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__handleSaxPI(void *__pyx_v_ctxt, char *__pyx_v_c_target, char *__pyx_v_c_data) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  PyObject *__pyx_v_data;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxPI");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":300
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":301
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":302
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxPi is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":303
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxPi is not NULL:
 *         context._origSaxPi(c_ctxt, c_target, c_data)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":304
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxPi is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxPi(c_ctxt, c_target, c_data)
 *     try:
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxPi != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":305
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxPi is not NULL:
 *         context._origSaxPi(c_ctxt, c_target, c_data)             # <<<<<<<<<<<<<<
 *     try:
 *         if c_data is not NULL:
 */
    __pyx_v_context->_origSaxPi(__pyx_v_c_ctxt, __pyx_v_c_target, __pyx_v_c_data);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":306
 *     if context._origSaxPi is not NULL:
 *         context._origSaxPi(c_ctxt, c_target, c_data)
 *     try:             # <<<<<<<<<<<<<<
 *         if c_data is not NULL:
 *             data = funicode(c_data)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":307
 *         context._origSaxPi(c_ctxt, c_target, c_data)
 *     try:
 *         if c_data is not NULL:             # <<<<<<<<<<<<<<
 *             data = funicode(c_data)
 *         context._target._handleSaxPi(funicode(c_target), data)
 */
      __pyx_t_1 = (__pyx_v_c_data != NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":308
 *     try:
 *         if c_data is not NULL:
 *             data = funicode(c_data)             # <<<<<<<<<<<<<<
 *         context._target._handleSaxPi(funicode(c_target), data)
 *     except:
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_data);
        __pyx_v_data = __pyx_t_2;
        __pyx_t_2 = 0;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":309
 *         if c_data is not NULL:
 *             data = funicode(c_data)
 *         context._target._handleSaxPi(funicode(c_target), data)             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_target); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxPi(__pyx_v_context->_target, __pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":310
 *             data = funicode(c_data)
 *         context._target._handleSaxPi(funicode(c_target), data)
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxPI");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":311
 *         context._target._handleSaxPi(funicode(c_target), data)
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef void _handleSaxComment(void* ctxt, char* c_data) with gil:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxPI");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":313
 *         context._handleSaxException(c_ctxt)
 * 
 * cdef void _handleSaxComment(void* ctxt, char* c_data) with gil:             # <<<<<<<<<<<<<<
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__handleSaxComment(void *__pyx_v_ctxt, char *__pyx_v_c_data) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_c_ctxt;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_handleSaxComment");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":316
 *     cdef _SaxParserContext context
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     if c_ctxt._private is NULL:
 *         return
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":317
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->_private == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":318
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     if c_ctxt._private is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxComment is not NULL:
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":319
 *     if c_ctxt._private is NULL:
 *         return
 *     context = <_SaxParserContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     if context._origSaxComment is not NULL:
 *         context._origSaxComment(c_ctxt, c_data)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":320
 *         return
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxComment is not NULL:             # <<<<<<<<<<<<<<
 *         context._origSaxComment(c_ctxt, c_data)
 *     try:
 */
  __pyx_t_1 = (__pyx_v_context->_origSaxComment != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":321
 *     context = <_SaxParserContext>c_ctxt._private
 *     if context._origSaxComment is not NULL:
 *         context._origSaxComment(c_ctxt, c_data)             # <<<<<<<<<<<<<<
 *     try:
 *         context._target._handleSaxComment(funicode(c_data))
 */
    __pyx_v_context->_origSaxComment(__pyx_v_c_ctxt, __pyx_v_c_data);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":322
 *     if context._origSaxComment is not NULL:
 *         context._origSaxComment(c_ctxt, c_data)
 *     try:             # <<<<<<<<<<<<<<
 *         context._target._handleSaxComment(funicode(c_data))
 *     except:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":323
 *         context._origSaxComment(c_ctxt, c_data)
 *     try:
 *         context._target._handleSaxComment(funicode(c_data))             # <<<<<<<<<<<<<<
 *     except:
 *         context._handleSaxException(c_ctxt)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget *)__pyx_v_context->_target->__pyx_vtab)->_handleSaxComment(__pyx_v_context->_target, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":324
 *     try:
 *         context._target._handleSaxComment(funicode(c_data))
 *     except:             # <<<<<<<<<<<<<<
 *         context._handleSaxException(c_ctxt)
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._handleSaxComment");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":325
 *         context._target._handleSaxComment(funicode(c_data))
 *     except:
 *         context._handleSaxException(c_ctxt)             # <<<<<<<<<<<<<<
 * 
 * 
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_handleSaxException(__pyx_v_context, __pyx_v_c_ctxt);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._handleSaxComment");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":346
 *     cdef bint _in_tail
 * 
 *     def __init__(self, *, element_factory=None, parser=None):             # <<<<<<<<<<<<<<
 *         self._sax_event_filter = \
 *             SAX_EVENT_START | SAX_EVENT_END | SAX_EVENT_DATA | \
 */

static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_11TreeBuilder___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element_factory = 0;
  PyObject *__pyx_v_parser = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_factory,&__pyx_n_s__parser,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_factory);
      if (value) { values[0] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element_factory = values[0];
    __pyx_v_parser = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element_factory = ((PyObject *)Py_None);
    __pyx_v_parser = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":347
 * 
 *     def __init__(self, *, element_factory=None, parser=None):
 *         self._sax_event_filter = \             # <<<<<<<<<<<<<<
 *             SAX_EVENT_START | SAX_EVENT_END | SAX_EVENT_DATA | \
 *             SAX_EVENT_PI | SAX_EVENT_COMMENT
 */
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base._sax_event_filter = ((((__pyx_e_4lxml_5etree_SAX_EVENT_START | __pyx_e_4lxml_5etree_SAX_EVENT_END) | __pyx_e_4lxml_5etree_SAX_EVENT_DATA) | __pyx_e_4lxml_5etree_SAX_EVENT_PI) | __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":350
 *             SAX_EVENT_START | SAX_EVENT_END | SAX_EVENT_DATA | \
 *             SAX_EVENT_PI | SAX_EVENT_COMMENT
 *         self._data = [] # data collector             # <<<<<<<<<<<<<<
 *         self._element_stack = [] # element stack
 *         self._element_stack_pop = self._element_stack.pop
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_data);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_data));
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_data = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":351
 *             SAX_EVENT_PI | SAX_EVENT_COMMENT
 *         self._data = [] # data collector
 *         self._element_stack = [] # element stack             # <<<<<<<<<<<<<<
 *         self._element_stack_pop = self._element_stack.pop
 *         self._last = None # last element
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack));
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":352
 *         self._data = [] # data collector
 *         self._element_stack = [] # element stack
 *         self._element_stack_pop = self._element_stack.pop             # <<<<<<<<<<<<<<
 *         self._last = None # last element
 *         self._in_tail = 0 # true if we're after an end tag
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack_pop);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack_pop);
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack_pop = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":353
 *         self._element_stack = [] # element stack
 *         self._element_stack_pop = self._element_stack.pop
 *         self._last = None # last element             # <<<<<<<<<<<<<<
 *         self._in_tail = 0 # true if we're after an end tag
 *         self._factory = element_factory
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last));
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last = ((struct LxmlElement *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":354
 *         self._element_stack_pop = self._element_stack.pop
 *         self._last = None # last element
 *         self._in_tail = 0 # true if we're after an end tag             # <<<<<<<<<<<<<<
 *         self._factory = element_factory
 *         self._parser = parser
 */
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_in_tail = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":355
 *         self._last = None # last element
 *         self._in_tail = 0 # true if we're after an end tag
 *         self._factory = element_factory             # <<<<<<<<<<<<<<
 *         self._parser = parser
 * 
 */
  __Pyx_INCREF(__pyx_v_element_factory);
  __Pyx_GIVEREF(__pyx_v_element_factory);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_factory);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_factory);
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_factory = __pyx_v_element_factory;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":356
 *         self._in_tail = 0 # true if we're after an end tag
 *         self._factory = element_factory
 *         self._parser = parser             # <<<<<<<<<<<<<<
 * 
 *     cdef int _flush(self) except -1:
 */
  if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_parser);
  __Pyx_GIVEREF(__pyx_v_parser);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_parser);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_parser));
  ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":358
 *         self._parser = parser
 * 
 *     cdef int _flush(self) except -1:             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(self._data) > 0:
 *             if self._last is not None:
 */

static  int __pyx_f_4lxml_5etree_11TreeBuilder__flush(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self) {
  PyObject *__pyx_v_text;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_flush");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":359
 * 
 *     cdef int _flush(self) except -1:
 *         if python.PyList_GET_SIZE(self._data) > 0:             # <<<<<<<<<<<<<<
 *             if self._last is not None:
 *                 text = u"".join(self._data)
 */
  __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_data)) > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":360
 *     cdef int _flush(self) except -1:
 *         if python.PyList_GET_SIZE(self._data) > 0:
 *             if self._last is not None:             # <<<<<<<<<<<<<<
 *                 text = u"".join(self._data)
 *                 if self._in_tail:
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_self->_last) != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":361
 *         if python.PyList_GET_SIZE(self._data) > 0:
 *             if self._last is not None:
 *                 text = u"".join(self._data)             # <<<<<<<<<<<<<<
 *                 if self._in_tail:
 *                     assert self._last.tail is None, u"internal error (tail)"
 */
      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_14), __pyx_n_s__join); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->_data));
      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self->_data));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_data));
      __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_text);
      __pyx_v_text = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":362
 *             if self._last is not None:
 *                 text = u"".join(self._data)
 *                 if self._in_tail:             # <<<<<<<<<<<<<<
 *                     assert self._last.tail is None, u"internal error (tail)"
 *                     self._last.tail = text
 */
      __pyx_t_1 = __pyx_v_self->_in_tail;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":363
 *                 text = u"".join(self._data)
 *                 if self._in_tail:
 *                     assert self._last.tail is None, u"internal error (tail)"             # <<<<<<<<<<<<<<
 *                     self._last.tail = text
 *                 else:
 */
        #ifndef PYREX_WITHOUT_ASSERTIONS
        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self->_last), __pyx_n_s__tail); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__pyx_t_4 == Py_None);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) {
          PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_193));
          {__pyx_filename = __pyx_f[12]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":364
 *                 if self._in_tail:
 *                     assert self._last.tail is None, u"internal error (tail)"
 *                     self._last.tail = text             # <<<<<<<<<<<<<<
 *                 else:
 *                     assert self._last.text is None, u"internal error (text)"
 */
        if (PyObject_SetAttr(((PyObject *)__pyx_v_self->_last), __pyx_n_s__tail, __pyx_v_text) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L5;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":366
 *                     self._last.tail = text
 *                 else:
 *                     assert self._last.text is None, u"internal error (text)"             # <<<<<<<<<<<<<<
 *                     self._last.text = text
 *             del self._data[:]
 */
        #ifndef PYREX_WITHOUT_ASSERTIONS
        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self->_last), __pyx_n_s__text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = (__pyx_t_4 == Py_None);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) {
          PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_194));
          {__pyx_filename = __pyx_f[12]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        #endif

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":367
 *                 else:
 *                     assert self._last.text is None, u"internal error (text)"
 *                     self._last.text = text             # <<<<<<<<<<<<<<
 *             del self._data[:]
 *         return 0
 */
        if (PyObject_SetAttr(((PyObject *)__pyx_v_self->_last), __pyx_n_s__text, __pyx_v_text) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L5:;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":368
 *                     assert self._last.text is None, u"internal error (text)"
 *                     self._last.text = text
 *             del self._data[:]             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    if (PySequence_DelSlice(((PyObject *)__pyx_v_self->_data), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":369
 *                     self._last.text = text
 *             del self._data[:]
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # Python level event handlers
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._flush");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":373
 *     # Python level event handlers
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         u"""close(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_close(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_close[] = "close(self)\n\n        Flushes the builder buffers, and returns the toplevel document\n        element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_close(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("close");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":379
 *         element.
 *         """
 *         assert python.PyList_GET_SIZE(self._element_stack) == 0, u"missing end tags"             # <<<<<<<<<<<<<<
 *         assert self._last is not None, u"missing toplevel element"
 *         return self._last
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  if (unlikely(!(PyList_GET_SIZE(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_element_stack)) == 0))) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_195));
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":380
 *         """
 *         assert python.PyList_GET_SIZE(self._element_stack) == 0, u"missing end tags"
 *         assert self._last is not None, u"missing toplevel element"             # <<<<<<<<<<<<<<
 *         return self._last
 * 
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last) != Py_None);
  if (unlikely(!__pyx_t_1)) {
    PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_196));
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":381
 *         assert python.PyList_GET_SIZE(self._element_stack) == 0, u"missing end tags"
 *         assert self._last is not None, u"missing toplevel element"
 *         return self._last             # <<<<<<<<<<<<<<
 * 
 *     def data(self, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last));
  __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.close");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":383
 *         return self._last
 * 
 *     def data(self, data):             # <<<<<<<<<<<<<<
 *         u"""data(self, data)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_data[] = "data(self, data)\n\n        Adds text to the current element.  The value should be either an\n        8-bit string containing ASCII text, or a Unicode string.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_data(PyObject *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("data");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":389
 *         8-bit string containing ASCII text, or a Unicode string.
 *         """
 *         self._handleSaxData(data)             # <<<<<<<<<<<<<<
 * 
 *     def start(self, tag, attrs, nsmap=None):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handleSaxData(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.data");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":391
 *         self._handleSaxData(data)
 * 
 *     def start(self, tag, attrs, nsmap=None):             # <<<<<<<<<<<<<<
 *         u"""start(self, tag, attrs, nsmap=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_start[] = "start(self, tag, attrs, nsmap=None)\n\n        Opens a new element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_attrs = 0;
  PyObject *__pyx_v_nsmap = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__attrs,&__pyx_n_s__nsmap,0};
  __Pyx_RefNannySetupContext("start");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attrs);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__nsmap);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "start") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tag = values[0];
    __pyx_v_attrs = values[1];
    __pyx_v_nsmap = values[2];
  } else {
    __pyx_v_nsmap = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3:
      __pyx_v_nsmap = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2:
      __pyx_v_attrs = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("start", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.start");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_attrs);
  __Pyx_INCREF(__pyx_v_nsmap);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":396
 *         Opens a new element.
 *         """
 *         if nsmap is None:             # <<<<<<<<<<<<<<
 *             nsmap = EMPTY_READ_ONLY_DICT
 *         return self._handleSaxStart(tag, attrs, nsmap)
 */
  __pyx_t_1 = (__pyx_v_nsmap == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":397
 *         """
 *         if nsmap is None:
 *             nsmap = EMPTY_READ_ONLY_DICT             # <<<<<<<<<<<<<<
 *         return self._handleSaxStart(tag, attrs, nsmap)
 * 
 */
    __Pyx_INCREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
    __Pyx_DECREF(__pyx_v_nsmap);
    __pyx_v_nsmap = __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":398
 *         if nsmap is None:
 *             nsmap = EMPTY_READ_ONLY_DICT
 *         return self._handleSaxStart(tag, attrs, nsmap)             # <<<<<<<<<<<<<<
 * 
 *     def end(self, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handleSaxStart(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag, __pyx_v_attrs, __pyx_v_nsmap); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.start");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attrs);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":400
 *         return self._handleSaxStart(tag, attrs, nsmap)
 * 
 *     def end(self, tag):             # <<<<<<<<<<<<<<
 *         u"""end(self, tag)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_end(PyObject *__pyx_v_self, PyObject *__pyx_v_tag); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_end[] = "end(self, tag)\n\n        Closes the current element.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_end(PyObject *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_v_element;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("end");
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":405
 *         Closes the current element.
 *         """
 *         element = self._handleSaxEnd(tag)             # <<<<<<<<<<<<<<
 *         assert self._last.tag == tag,\
 *                u"end tag mismatch (expected %s, got %s)" % (
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handleSaxEnd(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_element);
  __pyx_v_element = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":406
 *         """
 *         element = self._handleSaxEnd(tag)
 *         assert self._last.tag == tag,\             # <<<<<<<<<<<<<<
 *                u"end tag mismatch (expected %s, got %s)" % (
 *                    self._last.tag, tag)
 */
  #ifndef PYREX_WITHOUT_ASSERTIONS
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last), __pyx_n_s__tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_tag, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_3)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":408
 *         assert self._last.tag == tag,\
 *                u"end tag mismatch (expected %s, got %s)" % (
 *                    self._last.tag, tag)             # <<<<<<<<<<<<<<
 *         return element
 * 
 */
    __pyx_t_2 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->_last), __pyx_n_s__tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_197), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    PyErr_SetObject(PyExc_AssertionError, __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[12]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  #endif

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":409
 *                u"end tag mismatch (expected %s, got %s)" % (
 *                    self._last.tag, tag)
 *         return element             # <<<<<<<<<<<<<<
 * 
 *     def pi(self, target, data):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_element);
  __pyx_r = __pyx_v_element;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.end");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":411
 *         return element
 * 
 *     def pi(self, target, data):             # <<<<<<<<<<<<<<
 *         u"""pi(self, target, data)
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_pi(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_pi[] = "pi(self, target, data)\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_pi(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__target,&__pyx_n_s__data,0};
  __Pyx_RefNannySetupContext("pi");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__data);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, 1); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pi") < 0)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_target = values[0];
    __pyx_v_data = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_data = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pi", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.pi");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":414
 *         u"""pi(self, target, data)
 *         """
 *         return self._handleSaxPi(target, data)             # <<<<<<<<<<<<<<
 * 
 *     def comment(self, comment):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handleSaxPi(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_target, __pyx_v_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.pi");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":416
 *         return self._handleSaxPi(target, data)
 * 
 *     def comment(self, comment):             # <<<<<<<<<<<<<<
 *         u"""comment(self, comment)
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_comment(PyObject *__pyx_v_self, PyObject *__pyx_v_comment); /*proto*/
static char __pyx_doc_4lxml_5etree_11TreeBuilder_comment[] = "comment(self, comment)\n        ";
static PyObject *__pyx_pf_4lxml_5etree_11TreeBuilder_comment(PyObject *__pyx_v_self, PyObject *__pyx_v_comment) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("comment");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":419
 *         u"""comment(self, comment)
 *         """
 *         return self._handleSaxComment(comment)             # <<<<<<<<<<<<<<
 * 
 *     # internal SAX event handlers
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)((struct __pyx_obj_4lxml_5etree_TreeBuilder *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handleSaxComment(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_comment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder.comment");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":423
 *     # internal SAX event handlers
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):             # <<<<<<<<<<<<<<
 *         self._flush()
 *         if self._factory is not None:
 */

static  PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxStart");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":424
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         self._flush()             # <<<<<<<<<<<<<<
 *         if self._factory is not None:
 *             self._last = self._factory(tag, attrib)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)__pyx_v_self->__pyx_base.__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":425
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         self._flush()
 *         if self._factory is not None:             # <<<<<<<<<<<<<<
 *             self._last = self._factory(tag, attrib)
 *             if python.PyList_GET_SIZE(self._element_stack) > 0:
 */
  __pyx_t_2 = (__pyx_v_self->_factory != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":426
 *         self._flush()
 *         if self._factory is not None:
 *             self._last = self._factory(tag, attrib)             # <<<<<<<<<<<<<<
 *             if python.PyList_GET_SIZE(self._element_stack) > 0:
 *                 _appendChild(self._element_stack[-1], self._last)
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    __Pyx_INCREF(__pyx_v_attrib);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_attrib);
    __Pyx_GIVEREF(__pyx_v_attrib);
    __pyx_t_4 = PyObject_Call(__pyx_v_self->_factory, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_last);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
    __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":427
 *         if self._factory is not None:
 *             self._last = self._factory(tag, attrib)
 *             if python.PyList_GET_SIZE(self._element_stack) > 0:             # <<<<<<<<<<<<<<
 *                 _appendChild(self._element_stack[-1], self._last)
 *         elif python.PyList_GET_SIZE(self._element_stack) > 0:
 */
    __pyx_t_2 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) > 0);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":428
 *             self._last = self._factory(tag, attrib)
 *             if python.PyList_GET_SIZE(self._element_stack) > 0:
 *                 _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
 *         elif python.PyList_GET_SIZE(self._element_stack) > 0:
 *             self._last = _makeSubElement(
 */
      __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_4), __pyx_v_self->_last); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":429
 *             if python.PyList_GET_SIZE(self._element_stack) > 0:
 *                 _appendChild(self._element_stack[-1], self._last)
 *         elif python.PyList_GET_SIZE(self._element_stack) > 0:             # <<<<<<<<<<<<<<
 *             self._last = _makeSubElement(
 *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
 */
  __pyx_t_2 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) > 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":431
 *         elif python.PyList_GET_SIZE(self._element_stack) > 0:
 *             self._last = _makeSubElement(
 *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)             # <<<<<<<<<<<<<<
 *         else:
 *             self._last = _makeElement(
 */
    __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(((struct LxmlElement *)__pyx_t_4), __pyx_v_tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, Py_None)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":430
 *                 _appendChild(self._element_stack[-1], self._last)
 *         elif python.PyList_GET_SIZE(self._element_stack) > 0:
 *             self._last = _makeSubElement(             # <<<<<<<<<<<<<<
 *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
 *         else:
 */
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_last);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
    __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":434
 *         else:
 *             self._last = _makeElement(
 *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)             # <<<<<<<<<<<<<<
 *         self._element_stack.append(self._last)
 *         self._in_tail = 0
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v_tag, NULL, ((struct LxmlDocument *)Py_None), __pyx_v_self->_parser, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, Py_None)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":433
 *                 self._element_stack[-1], tag, None, None, attrib, nsmap, None)
 *         else:
 *             self._last = _makeElement(             # <<<<<<<<<<<<<<
 *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
 *         self._element_stack.append(self._last)
 */
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_last);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
    __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":435
 *             self._last = _makeElement(
 *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
 *         self._element_stack.append(self._last)             # <<<<<<<<<<<<<<
 *         self._in_tail = 0
 *         return self._last
 */
  if (unlikely(__pyx_v_self->_element_stack == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_element_stack), ((PyObject *)__pyx_v_self->_last)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":436
 *                 tag, NULL, None, self._parser, None, None, attrib, nsmap, None)
 *         self._element_stack.append(self._last)
 *         self._in_tail = 0             # <<<<<<<<<<<<<<
 *         return self._last
 * 
 */
  __pyx_v_self->_in_tail = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":437
 *         self._element_stack.append(self._last)
 *         self._in_tail = 0
 *         return self._last             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxEnd(self, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
  __pyx_r = ((PyObject *)__pyx_v_self->_last);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxStart");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":439
 *         return self._last
 * 
 *     cdef _handleSaxEnd(self, tag):             # <<<<<<<<<<<<<<
 *         self._flush()
 *         self._last = self._element_stack_pop()
 */

static  PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxEnd");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":440
 * 
 *     cdef _handleSaxEnd(self, tag):
 *         self._flush()             # <<<<<<<<<<<<<<
 *         self._last = self._element_stack_pop()
 *         self._in_tail = 1
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)__pyx_v_self->__pyx_base.__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":441
 *     cdef _handleSaxEnd(self, tag):
 *         self._flush()
 *         self._last = self._element_stack_pop()             # <<<<<<<<<<<<<<
 *         self._in_tail = 1
 *         return self._last
 */
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_element_stack_pop, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_last);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
  __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":442
 *         self._flush()
 *         self._last = self._element_stack_pop()
 *         self._in_tail = 1             # <<<<<<<<<<<<<<
 *         return self._last
 * 
 */
  __pyx_v_self->_in_tail = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":443
 *         self._last = self._element_stack_pop()
 *         self._in_tail = 1
 *         return self._last             # <<<<<<<<<<<<<<
 * 
 *     cdef int _handleSaxData(self, data) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
  __pyx_r = ((PyObject *)__pyx_v_self->_last);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxEnd");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":445
 *         return self._last
 * 
 *     cdef int _handleSaxData(self, data) except -1:             # <<<<<<<<<<<<<<
 *         self._data.append(data)
 * 
 */

static  int __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_handleSaxData");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":446
 * 
 *     cdef int _handleSaxData(self, data) except -1:
 *         self._data.append(data)             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxPi(self, target, data):
 */
  if (unlikely(__pyx_v_self->_data == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[12]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_data), __pyx_v_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxData");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":448
 *         self._data.append(data)
 * 
 *     cdef _handleSaxPi(self, target, data):             # <<<<<<<<<<<<<<
 *         self._flush()
 *         self._last = ProcessingInstruction(target, data)
 */

static  PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_handleSaxPi");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_data);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":449
 * 
 *     cdef _handleSaxPi(self, target, data):
 *         self._flush()             # <<<<<<<<<<<<<<
 *         self._last = ProcessingInstruction(target, data)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)__pyx_v_self->__pyx_base.__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":450
 *     cdef _handleSaxPi(self, target, data):
 *         self._flush()
 *         self._last = ProcessingInstruction(target, data)             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_data);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_last);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
  __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":451
 *         self._flush()
 *         self._last = ProcessingInstruction(target, data)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:             # <<<<<<<<<<<<<<
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1
 */
  __pyx_t_5 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) > 0);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":452
 *         self._last = ProcessingInstruction(target, data)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
 *         self._in_tail = 1
 *         return self._last
 */
    __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_4), __pyx_v_self->_last); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":453
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1             # <<<<<<<<<<<<<<
 *         return self._last
 * 
 */
  __pyx_v_self->_in_tail = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":454
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1
 *         return self._last             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxComment(self, comment):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
  __pyx_r = ((PyObject *)__pyx_v_self->_last);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxPi");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":456
 *         return self._last
 * 
 *     cdef _handleSaxComment(self, comment):             # <<<<<<<<<<<<<<
 *         self._flush()
 *         self._last = Comment(comment)
 */

static  PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_comment) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_handleSaxComment");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_comment);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":457
 * 
 *     cdef _handleSaxComment(self, comment):
 *         self._flush()             # <<<<<<<<<<<<<<
 *         self._last = Comment(comment)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder *)__pyx_v_self->__pyx_base.__pyx_vtab)->_flush(__pyx_v_self); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":458
 *     cdef _handleSaxComment(self, comment):
 *         self._flush()
 *         self._last = Comment(comment)             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__Comment); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_comment);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_comment);
  __Pyx_GIVEREF(__pyx_v_comment);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->_last);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_last));
  __pyx_v_self->_last = ((struct LxmlElement *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":459
 *         self._flush()
 *         self._last = Comment(comment)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:             # <<<<<<<<<<<<<<
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1
 */
  __pyx_t_5 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) > 0);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":460
 *         self._last = Comment(comment)
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)             # <<<<<<<<<<<<<<
 *         self._in_tail = 1
 *         return self._last
 */
    __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(((struct LxmlElement *)__pyx_t_4), __pyx_v_self->_last); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":461
 *         if python.PyList_GET_SIZE(self._element_stack) > 0:
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1             # <<<<<<<<<<<<<<
 *         return self._last
 */
  __pyx_v_self->_in_tail = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/saxparser.pxi":462
 *             _appendChild(self._element_stack[-1], self._last)
 *         self._in_tail = 1
 *         return self._last             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_last));
  __pyx_r = ((PyObject *)__pyx_v_self->_last);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.TreeBuilder._handleSaxComment");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_comment);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":10
 *     # to push the Python level parser result through the parser
 *     # machinery towards the API level functions
 *     def __init__(self, result):             # <<<<<<<<<<<<<<
 *         self.result = result
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_19_TargetParserResult___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4lxml_5etree_19_TargetParserResult___init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pf_4lxml_5etree_19_TargetParserResult___init__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_4lxml_5etree_19_TargetParserResult___init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,&__pyx_n_s__result,0};
  __Pyx_RefNannySetupContext("__init__");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__result);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_self = values[0];
    __pyx_v_result = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_self = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_result = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._TargetParserResult.__init__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":11
 *     # machinery towards the API level functions
 *     def __init__(self, result):
 *         self.result = result             # <<<<<<<<<<<<<<
 * 
 * cdef class _PythonSaxParserTarget(_SaxParserTarget):
 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__result, __pyx_v_result) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._TargetParserResult.__init__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":22
 *     cdef bint _start_takes_nsmap
 * 
 *     def __init__(self, target):             # <<<<<<<<<<<<<<
 *         cdef int event_filter
 *         event_filter = 0
 */

static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  int __pyx_v_event_filter;
  PyObject *__pyx_v_arguments;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__target,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_target = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_target = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[13]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_target);
  __pyx_v_arguments = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":24
 *     def __init__(self, target):
 *         cdef int event_filter
 *         event_filter = 0             # <<<<<<<<<<<<<<
 *         self._start_takes_nsmap = 0
 *         try:
 */
  __pyx_v_event_filter = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":25
 *         cdef int event_filter
 *         event_filter = 0
 *         self._start_takes_nsmap = 0             # <<<<<<<<<<<<<<
 *         try:
 *             self._target_start = target.start
 */
  ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_start_takes_nsmap = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":26
 *         event_filter = 0
 *         self._start_takes_nsmap = 0
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_start = target.start
 *             if self._target_start is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":27
 *         self._start_takes_nsmap = 0
 *         try:
 *             self._target_start = target.start             # <<<<<<<<<<<<<<
 *             if self._target_start is not None:
 *                 event_filter = event_filter | SAX_EVENT_START
 */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__start); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":28
 *         try:
 *             self._target_start = target.start
 *             if self._target_start is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_START
 *         except AttributeError:
 */
      __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start != Py_None);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":29
 *             self._target_start = target.start
 *             if self._target_start is not None:
 *                 event_filter = event_filter | SAX_EVENT_START             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_START);
        goto __pyx_L14;
      }
      __pyx_L14:;
    }
    /*else:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":33
 *             pass
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 arguments = inspect_getargspec(self._target_start)
 *                 if len(arguments[0]) > 3 or arguments[1] is not None:
 */
      {
        PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
        __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
        __Pyx_XGOTREF(__pyx_save_exc_type);
        __Pyx_XGOTREF(__pyx_save_exc_value);
        __Pyx_XGOTREF(__pyx_save_exc_tb);
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":34
 *         else:
 *             try:
 *                 arguments = inspect_getargspec(self._target_start)             # <<<<<<<<<<<<<<
 *                 if len(arguments[0]) > 3 or arguments[1] is not None:
 *                     self._start_takes_nsmap = 1
 */
          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start);
          PyTuple_SET_ITEM(__pyx_t_1, 0, ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start);
          __Pyx_GIVEREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_start);
          __pyx_t_3 = PyObject_Call(__pyx_v_4lxml_5etree_inspect_getargspec, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_v_arguments);
          __pyx_v_arguments = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":35
 *             try:
 *                 arguments = inspect_getargspec(self._target_start)
 *                 if len(arguments[0]) > 3 or arguments[1] is not None:             # <<<<<<<<<<<<<<
 *                     self._start_takes_nsmap = 1
 *             except TypeError:
 */
          __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_arguments, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_2 = (__pyx_t_4 > 3);
          if (!__pyx_t_2) {
            __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_arguments, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_5 = (__pyx_t_3 != Py_None);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_6 = __pyx_t_5;
          } else {
            __pyx_t_6 = __pyx_t_2;
          }
          if (__pyx_t_6) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":36
 *                 arguments = inspect_getargspec(self._target_start)
 *                 if len(arguments[0]) > 3 or arguments[1] is not None:
 *                     self._start_takes_nsmap = 1             # <<<<<<<<<<<<<<
 *             except TypeError:
 *                 pass
 */
            ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_start_takes_nsmap = 1;
            goto __pyx_L23;
          }
          __pyx_L23:;
        }
        __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
        __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
        __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
        goto __pyx_L22_try_end;
        __pyx_L15_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":37
 *                 if len(arguments[0]) > 3 or arguments[1] is not None:
 *                     self._start_takes_nsmap = 1
 *             except TypeError:             # <<<<<<<<<<<<<<
 *                 pass
 *         try:
 */
        __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
        if (__pyx_t_7) {
          PyErr_Restore(0,0,0);
          goto __pyx_L16_exception_handled;
        }
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        goto __pyx_L8_except_error;
        __pyx_L16_exception_handled:;
        __Pyx_XGIVEREF(__pyx_save_exc_type);
        __Pyx_XGIVEREF(__pyx_save_exc_value);
        __Pyx_XGIVEREF(__pyx_save_exc_tb);
        __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
        __pyx_L22_try_end:;
      }
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L13_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":30
 *             if self._target_start is not None:
 *                 event_filter = event_filter | SAX_EVENT_START
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         else:
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L7_exception_handled;
    }
    __pyx_L8_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L13_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":39
 *             except TypeError:
 *                 pass
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_end = target.end
 *             if self._target_end is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":40
 *                 pass
 *         try:
 *             self._target_end = target.end             # <<<<<<<<<<<<<<
 *             if self._target_end is not None:
 *                 event_filter = event_filter | SAX_EVENT_END
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__end); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L24_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_end);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_end);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_end = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":41
 *         try:
 *             self._target_end = target.end
 *             if self._target_end is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_END
 *         except AttributeError:
 */
      __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_end != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":42
 *             self._target_end = target.end
 *             if self._target_end is not None:
 *                 event_filter = event_filter | SAX_EVENT_END             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_END);
        goto __pyx_L32;
      }
      __pyx_L32:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L31_try_end;
    __pyx_L24_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":43
 *             if self._target_end is not None:
 *                 event_filter = event_filter | SAX_EVENT_END
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         try:
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L25_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L25_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L31_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":45
 *         except AttributeError:
 *             pass
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_data = target.data
 *             if self._target_data is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":46
 *             pass
 *         try:
 *             self._target_data = target.data             # <<<<<<<<<<<<<<
 *             if self._target_data is not None:
 *                 event_filter = event_filter | SAX_EVENT_DATA
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L33_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_data);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_data);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_data = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":47
 *         try:
 *             self._target_data = target.data
 *             if self._target_data is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_DATA
 *         except AttributeError:
 */
      __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_data != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":48
 *             self._target_data = target.data
 *             if self._target_data is not None:
 *                 event_filter = event_filter | SAX_EVENT_DATA             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_DATA);
        goto __pyx_L41;
      }
      __pyx_L41:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L40_try_end;
    __pyx_L33_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":49
 *             if self._target_data is not None:
 *                 event_filter = event_filter | SAX_EVENT_DATA
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         try:
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L34_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L34_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L40_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":51
 *         except AttributeError:
 *             pass
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_doctype = target.doctype
 *             if self._target_doctype is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":52
 *             pass
 *         try:
 *             self._target_doctype = target.doctype             # <<<<<<<<<<<<<<
 *             if self._target_doctype is not None:
 *                 event_filter = event_filter | SAX_EVENT_DOCTYPE
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__doctype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_doctype);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_doctype);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_doctype = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":53
 *         try:
 *             self._target_doctype = target.doctype
 *             if self._target_doctype is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_DOCTYPE
 *         except AttributeError:
 */
      __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_doctype != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":54
 *             self._target_doctype = target.doctype
 *             if self._target_doctype is not None:
 *                 event_filter = event_filter | SAX_EVENT_DOCTYPE             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_DOCTYPE);
        goto __pyx_L50;
      }
      __pyx_L50:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L49_try_end;
    __pyx_L42_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":55
 *             if self._target_doctype is not None:
 *                 event_filter = event_filter | SAX_EVENT_DOCTYPE
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         try:
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L43_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L43_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L49_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":57
 *         except AttributeError:
 *             pass
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_pi = target.pi
 *             if self._target_pi is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":58
 *             pass
 *         try:
 *             self._target_pi = target.pi             # <<<<<<<<<<<<<<
 *             if self._target_pi is not None:
 *                 event_filter = event_filter | SAX_EVENT_PI
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__pi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L51_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_pi);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_pi);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_pi = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":59
 *         try:
 *             self._target_pi = target.pi
 *             if self._target_pi is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_PI
 *         except AttributeError:
 */
      __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_pi != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":60
 *             self._target_pi = target.pi
 *             if self._target_pi is not None:
 *                 event_filter = event_filter | SAX_EVENT_PI             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_PI);
        goto __pyx_L59;
      }
      __pyx_L59:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L58_try_end;
    __pyx_L51_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":61
 *             if self._target_pi is not None:
 *                 event_filter = event_filter | SAX_EVENT_PI
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         try:
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L52_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L52_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L58_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":63
 *         except AttributeError:
 *             pass
 *         try:             # <<<<<<<<<<<<<<
 *             self._target_comment = target.comment
 *             if self._target_comment is not None:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":64
 *             pass
 *         try:
 *             self._target_comment = target.comment             # <<<<<<<<<<<<<<
 *             if self._target_comment is not None:
 *                 event_filter = event_filter | SAX_EVENT_COMMENT
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_target, __pyx_n_s__comment); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_comment);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_comment);
      ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_comment = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":65
 *         try:
 *             self._target_comment = target.comment
 *             if self._target_comment is not None:             # <<<<<<<<<<<<<<
 *                 event_filter = event_filter | SAX_EVENT_COMMENT
 *         except AttributeError:
 */
      __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->_target_comment != Py_None);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":66
 *             self._target_comment = target.comment
 *             if self._target_comment is not None:
 *                 event_filter = event_filter | SAX_EVENT_COMMENT             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             pass
 */
        __pyx_v_event_filter = (__pyx_v_event_filter | __pyx_e_4lxml_5etree_SAX_EVENT_COMMENT);
        goto __pyx_L68;
      }
      __pyx_L68:;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L67_try_end;
    __pyx_L60_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":67
 *             if self._target_comment is not None:
 *                 event_filter = event_filter | SAX_EVENT_COMMENT
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             pass
 *         self._sax_event_filter = event_filter
 */
    __pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      PyErr_Restore(0,0,0);
      goto __pyx_L61_exception_handled;
    }
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L61_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L67_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":69
 *         except AttributeError:
 *             pass
 *         self._sax_event_filter = event_filter             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 */
  ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)__pyx_v_self)->__pyx_base._sax_event_filter = __pyx_v_event_filter;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_arguments);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":71
 *         self._sax_event_filter = event_filter
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):             # <<<<<<<<<<<<<<
 *         if self._start_takes_nsmap:
 *             return self._target_start(tag, attrib, nsmap)
 */

static  PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxStart");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_attrib);
  __Pyx_INCREF(__pyx_v_nsmap);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":72
 * 
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         if self._start_takes_nsmap:             # <<<<<<<<<<<<<<
 *             return self._target_start(tag, attrib, nsmap)
 *         else:
 */
  __pyx_t_1 = __pyx_v_self->_start_takes_nsmap;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":73
 *     cdef _handleSaxStart(self, tag, attrib, nsmap):
 *         if self._start_takes_nsmap:
 *             return self._target_start(tag, attrib, nsmap)             # <<<<<<<<<<<<<<
 *         else:
 *             return self._target_start(tag, attrib)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    __Pyx_INCREF(__pyx_v_attrib);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_attrib);
    __Pyx_GIVEREF(__pyx_v_attrib);
    __Pyx_INCREF(__pyx_v_nsmap);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_nsmap);
    __Pyx_GIVEREF(__pyx_v_nsmap);
    __pyx_t_3 = PyObject_Call(__pyx_v_self->_target_start, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":75
 *             return self._target_start(tag, attrib, nsmap)
 *         else:
 *             return self._target_start(tag, attrib)             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxEnd(self, tag):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    __Pyx_INCREF(__pyx_v_attrib);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_attrib);
    __Pyx_GIVEREF(__pyx_v_attrib);
    __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_start, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxStart");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_nsmap);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":77
 *             return self._target_start(tag, attrib)
 * 
 *     cdef _handleSaxEnd(self, tag):             # <<<<<<<<<<<<<<
 *         return self._target_end(tag)
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxEnd");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":78
 * 
 *     cdef _handleSaxEnd(self, tag):
 *         return self._target_end(tag)             # <<<<<<<<<<<<<<
 * 
 *     cdef int _handleSaxData(self, data) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_end, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxEnd");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":80
 *         return self._target_end(tag)
 * 
 *     cdef int _handleSaxData(self, data) except -1:             # <<<<<<<<<<<<<<
 *         self._target_data(data)
 * 
 */

static  int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxData");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":81
 * 
 *     cdef int _handleSaxData(self, data) except -1:
 *         self._target_data(data)             # <<<<<<<<<<<<<<
 * 
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_data);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_data, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxData");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":83
 *         self._target_data(data)
 * 
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:             # <<<<<<<<<<<<<<
 *         self._target_doctype(root_tag, public_id, system_id)
 * 
 */

static  int __pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_root_tag, PyObject *__pyx_v_public_id, PyObject *__pyx_v_system_id) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxDoctype");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":84
 * 
 *     cdef int _handleSaxDoctype(self, root_tag, public_id, system_id) except -1:
 *         self._target_doctype(root_tag, public_id, system_id)             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxPi(self, target, data):
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_root_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_root_tag);
  __Pyx_GIVEREF(__pyx_v_root_tag);
  __Pyx_INCREF(__pyx_v_public_id);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_public_id);
  __Pyx_GIVEREF(__pyx_v_public_id);
  __Pyx_INCREF(__pyx_v_system_id);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_system_id);
  __Pyx_GIVEREF(__pyx_v_system_id);
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_doctype, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxDoctype");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":86
 *         self._target_doctype(root_tag, public_id, system_id)
 * 
 *     cdef _handleSaxPi(self, target, data):             # <<<<<<<<<<<<<<
 *         return self._target_pi(target, data)
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxPi");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":87
 * 
 *     cdef _handleSaxPi(self, target, data):
 *         return self._target_pi(target, data)             # <<<<<<<<<<<<<<
 * 
 *     cdef _handleSaxComment(self, comment):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_INCREF(__pyx_v_data);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_pi, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxPi");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":89
 *         return self._target_pi(target, data)
 * 
 *     cdef _handleSaxComment(self, comment):             # <<<<<<<<<<<<<<
 *         return self._target_comment(comment)
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *__pyx_v_self, PyObject *__pyx_v_comment) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_handleSaxComment");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":90
 * 
 *     cdef _handleSaxComment(self, comment):
 *         return self._target_comment(comment)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_comment);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_comment);
  __Pyx_GIVEREF(__pyx_v_comment);
  __pyx_t_2 = PyObject_Call(__pyx_v_self->_target_comment, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._PythonSaxParserTarget._handleSaxComment");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":97
 *     """
 *     cdef object _python_target
 *     cdef int _setTarget(self, target) except -1:             # <<<<<<<<<<<<<<
 *         self._python_target = target
 *         if not isinstance(target, _SaxParserTarget) or \
 */

static  int __pyx_f_4lxml_5etree_20_TargetParserContext__setTarget(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, PyObject *__pyx_v_target) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_setTarget");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_target);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":98
 *     cdef object _python_target
 *     cdef int _setTarget(self, target) except -1:
 *         self._python_target = target             # <<<<<<<<<<<<<<
 *         if not isinstance(target, _SaxParserTarget) or \
 *                 hasattr(target, u'__dict__'):
 */
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_GOTREF(__pyx_v_self->_python_target);
  __Pyx_DECREF(__pyx_v_self->_python_target);
  __pyx_v_self->_python_target = __pyx_v_target;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":99
 *     cdef int _setTarget(self, target) except -1:
 *         self._python_target = target
 *         if not isinstance(target, _SaxParserTarget) or \             # <<<<<<<<<<<<<<
 *                 hasattr(target, u'__dict__'):
 *             target = _PythonSaxParserTarget(target)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_target, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__SaxParserTarget))); 
  __pyx_t_2 = (!__pyx_t_1);
  if (!__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":100
 *         self._python_target = target
 *         if not isinstance(target, _SaxParserTarget) or \
 *                 hasattr(target, u'__dict__'):             # <<<<<<<<<<<<<<
 *             target = _PythonSaxParserTarget(target)
 *         self._setSaxParserTarget(target)
 */
    __pyx_t_1 = PyObject_HasAttr(__pyx_v_target, ((PyObject *)__pyx_n_u____dict__)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":101
 *         if not isinstance(target, _SaxParserTarget) or \
 *                 hasattr(target, u'__dict__'):
 *             target = _PythonSaxParserTarget(target)             # <<<<<<<<<<<<<<
 *         self._setSaxParserTarget(target)
 *         return 0
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_target);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_target);
    __Pyx_GIVEREF(__pyx_v_target);
    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__PythonSaxParserTarget)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_target);
    __pyx_v_target = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":102
 *                 hasattr(target, u'__dict__'):
 *             target = _PythonSaxParserTarget(target)
 *         self._setSaxParserTarget(target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  if (!(likely(((__pyx_v_target) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_target, __pyx_ptype_4lxml_5etree__SaxParserTarget))))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base._setSaxParserTarget(((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_v_self), ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_target));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":103
 *             target = _PythonSaxParserTarget(target)
 *         self._setSaxParserTarget(target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _copy(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._TargetParserContext._setTarget");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_target);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":105
 *         return 0
 * 
 *     cdef _ParserContext _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _TargetParserContext context
 *         context = _ParserContext._copy(self)
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_20_TargetParserContext__copy(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":107
 *     cdef _ParserContext _copy(self):
 *         cdef _TargetParserContext context
 *         context = _ParserContext._copy(self)             # <<<<<<<<<<<<<<
 *         context._setTarget(self._python_target)
 *         return context
 */
  __pyx_t_1 = ((PyObject *)__pyx_vtabptr_4lxml_5etree__ParserContext->_copy(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__TargetParserContext))))) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":108
 *         cdef _TargetParserContext context
 *         context = _ParserContext._copy(self)
 *         context._setTarget(self._python_target)             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setTarget(__pyx_v_context, __pyx_v_self->_python_target); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":109
 *         context = _ParserContext._copy(self)
 *         context._setTarget(self._python_target)
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_context);
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._TargetParserContext._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":111
 *         return context
 * 
 *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):             # <<<<<<<<<<<<<<
 *         if self._c_ctxt.myDoc is not NULL:
 *             if self._c_ctxt.myDoc is not result and \
 */

static  void __pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, xmlDoc *__pyx_v_result) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_cleanupTargetParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":112
 * 
 *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
 *         if self._c_ctxt.myDoc is not NULL:             # <<<<<<<<<<<<<<
 *             if self._c_ctxt.myDoc is not result and \
 *                     self._c_ctxt.myDoc._private is NULL:
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":113
 *     cdef void _cleanupTargetParserContext(self, xmlDoc* result):
 *         if self._c_ctxt.myDoc is not NULL:
 *             if self._c_ctxt.myDoc is not result and \             # <<<<<<<<<<<<<<
 *                     self._c_ctxt.myDoc._private is NULL:
 *                 # no _Document proxy => orphen
 */
    __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc != __pyx_v_result);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":114
 *         if self._c_ctxt.myDoc is not NULL:
 *             if self._c_ctxt.myDoc is not result and \
 *                     self._c_ctxt.myDoc._private is NULL:             # <<<<<<<<<<<<<<
 *                 # no _Document proxy => orphen
 *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)
 */
      __pyx_t_2 = (__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc->_private == NULL);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":116
 *                     self._c_ctxt.myDoc._private is NULL:
 *                 # no _Document proxy => orphen
 *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)             # <<<<<<<<<<<<<<
 *             self._c_ctxt.myDoc = NULL
 * 
 */
      xmlFreeDoc(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc);
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":117
 *                 # no _Document proxy => orphen
 *                 tree.xmlFreeDoc(self._c_ctxt.myDoc)
 *             self._c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef object _handleParseResult(self, _BaseParser parser, xmlDoc* result,
 */
    __pyx_v_self->__pyx_base.__pyx_base._c_ctxt->myDoc = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":119
 *             self._c_ctxt.myDoc = NULL
 * 
 *     cdef object _handleParseResult(self, _BaseParser parser, xmlDoc* result,             # <<<<<<<<<<<<<<
 *                                    filename):
 *         cdef bint recover
 */

static  PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
  int __pyx_v_recover;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_handleParseResult");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_filename);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":122
 *                                    filename):
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         if self._has_raised():
 *             self._cleanupTargetParserContext(result)
 */
  __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":123
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
 *         if self._has_raised():             # <<<<<<<<<<<<<<
 *             self._cleanupTargetParserContext(result)
 *             self._raise_if_stored()
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":124
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
 *         if self._has_raised():
 *             self._cleanupTargetParserContext(result)             # <<<<<<<<<<<<<<
 *             self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_cleanupTargetParserContext(__pyx_v_self, __pyx_v_result);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":125
 *         if self._has_raised():
 *             self._cleanupTargetParserContext(result)
 *             self._raise_if_stored()             # <<<<<<<<<<<<<<
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":126
 *             self._cleanupTargetParserContext(result)
 *             self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 *         return self._python_target.close()
 */
  __pyx_t_1 = (!__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->wellFormed);
  if (__pyx_t_1) {
    __pyx_t_3 = (!__pyx_v_recover);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":127
 *             self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)             # <<<<<<<<<<<<<<
 *         return self._python_target.close()
 * 
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, __pyx_v_self->__pyx_base.__pyx_base._error_log); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":128
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 *         return self._python_target.close()             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_self->_python_target, __pyx_n_s__close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._TargetParserContext._handleParseResult");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":130
 *         return self._python_target.close()
 * 
 *     cdef xmlDoc* _handleParseResultDoc(self, _BaseParser parser,             # <<<<<<<<<<<<<<
 *                                        xmlDoc* result, filename) except NULL:
 *         cdef bint recover
 */

static  xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc(struct __pyx_obj_4lxml_5etree__TargetParserContext *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser, xmlDoc *__pyx_v_result, PyObject *__pyx_v_filename) {
  int __pyx_v_recover;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_handleParseResultDoc");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_parser);
  __Pyx_INCREF(__pyx_v_filename);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":133
 *                                        xmlDoc* result, filename) except NULL:
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER             # <<<<<<<<<<<<<<
 *         if result is not NULL and result._private is NULL:
 *             # no _Document proxy => orphen
 */
  __pyx_v_recover = (__pyx_v_parser->_parse_options & XML_PARSE_RECOVER);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":134
 *         cdef bint recover
 *         recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
 *         if result is not NULL and result._private is NULL:             # <<<<<<<<<<<<<<
 *             # no _Document proxy => orphen
 *             tree.xmlFreeDoc(result)
 */
  __pyx_t_1 = (__pyx_v_result != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_result->_private == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":136
 *         if result is not NULL and result._private is NULL:
 *             # no _Document proxy => orphen
 *             tree.xmlFreeDoc(result)             # <<<<<<<<<<<<<<
 *         self._cleanupTargetParserContext(result)
 *         self._raise_if_stored()
 */
    xmlFreeDoc(__pyx_v_result);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":137
 *             # no _Document proxy => orphen
 *             tree.xmlFreeDoc(result)
 *         self._cleanupTargetParserContext(result)             # <<<<<<<<<<<<<<
 *         self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_cleanupTargetParserContext(__pyx_v_self, __pyx_v_result);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":138
 *             tree.xmlFreeDoc(result)
 *         self._cleanupTargetParserContext(result)
 *         self._raise_if_stored()             # <<<<<<<<<<<<<<
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_self)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":139
 *         self._cleanupTargetParserContext(result)
 *         self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:             # <<<<<<<<<<<<<<
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 *         raise _TargetParserResult(self._python_target.close())
 */
  __pyx_t_3 = (!__pyx_v_self->__pyx_base.__pyx_base._c_ctxt->wellFormed);
  if (__pyx_t_3) {
    __pyx_t_1 = (!__pyx_v_recover);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":140
 *         self._raise_if_stored()
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)             # <<<<<<<<<<<<<<
 *         raise _TargetParserResult(self._python_target.close())
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_self->__pyx_base.__pyx_base._c_ctxt, __pyx_v_filename, __pyx_v_self->__pyx_base.__pyx_base._error_log); if (unlikely(__pyx_t_4 == 0)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":141
 *         if not self._c_ctxt.wellFormed and not recover:
 *             _raiseParseError(self._c_ctxt, filename, self._error_log)
 *         raise _TargetParserResult(self._python_target.close())             # <<<<<<<<<<<<<<
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_v_self->_python_target, __pyx_n_s__close); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_Raise(__pyx_t_7, 0, 0);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  {__pyx_filename = __pyx_f[13]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._TargetParserContext._handleParseResultDoc");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_parser);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":12
 *     OUTPUT_METHOD_TEXT
 * 
 * cdef int _findOutputMethod(method) except -1:             # <<<<<<<<<<<<<<
 *     if method is None:
 *         return OUTPUT_METHOD_XML
 */

static  int __pyx_f_4lxml_5etree__findOutputMethod(PyObject *__pyx_v_method) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_findOutputMethod");
  __Pyx_INCREF(__pyx_v_method);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":13
 * 
 * cdef int _findOutputMethod(method) except -1:
 *     if method is None:             # <<<<<<<<<<<<<<
 *         return OUTPUT_METHOD_XML
 *     method = method.lower()
 */
  __pyx_t_1 = (__pyx_v_method == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":14
 * cdef int _findOutputMethod(method) except -1:
 *     if method is None:
 *         return OUTPUT_METHOD_XML             # <<<<<<<<<<<<<<
 *     method = method.lower()
 *     if method == u"xml":
 */
    __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":15
 *     if method is None:
 *         return OUTPUT_METHOD_XML
 *     method = method.lower()             # <<<<<<<<<<<<<<
 *     if method == u"xml":
 *         return OUTPUT_METHOD_XML
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_method, __pyx_n_s__lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_method);
  __pyx_v_method = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":16
 *         return OUTPUT_METHOD_XML
 *     method = method.lower()
 *     if method == u"xml":             # <<<<<<<<<<<<<<
 *         return OUTPUT_METHOD_XML
 *     if method == u"html":
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__xml), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":17
 *     method = method.lower()
 *     if method == u"xml":
 *         return OUTPUT_METHOD_XML             # <<<<<<<<<<<<<<
 *     if method == u"html":
 *         return OUTPUT_METHOD_HTML
 */
    __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":18
 *     if method == u"xml":
 *         return OUTPUT_METHOD_XML
 *     if method == u"html":             # <<<<<<<<<<<<<<
 *         return OUTPUT_METHOD_HTML
 *     if method == u"text":
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__html), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":19
 *         return OUTPUT_METHOD_XML
 *     if method == u"html":
 *         return OUTPUT_METHOD_HTML             # <<<<<<<<<<<<<<
 *     if method == u"text":
 *         return OUTPUT_METHOD_TEXT
 */
    __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":20
 *     if method == u"html":
 *         return OUTPUT_METHOD_HTML
 *     if method == u"text":             # <<<<<<<<<<<<<<
 *         return OUTPUT_METHOD_TEXT
 *     raise ValueError, u"unknown output method %r" % method
 */
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__text), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":21
 *         return OUTPUT_METHOD_HTML
 *     if method == u"text":
 *         return OUTPUT_METHOD_TEXT             # <<<<<<<<<<<<<<
 *     raise ValueError, u"unknown output method %r" % method
 * 
 */
    __pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":22
 *     if method == u"text":
 *         return OUTPUT_METHOD_TEXT
 *     raise ValueError, u"unknown output method %r" % method             # <<<<<<<<<<<<<<
 * 
 * cdef _textToString(xmlNode* c_node, encoding, bint with_tail):
 */
  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_199), __pyx_v_method); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  {__pyx_filename = __pyx_f[4]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._findOutputMethod");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":24
 *     raise ValueError, u"unknown output method %r" % method
 * 
 * cdef _textToString(xmlNode* c_node, encoding, bint with_tail):             # <<<<<<<<<<<<<<
 *     cdef bint needs_conversion
 *     cdef char* c_text
 */

static  PyObject *__pyx_f_4lxml_5etree__textToString(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_encoding, int __pyx_v_with_tail) {
  int __pyx_v_needs_conversion;
  char *__pyx_v_c_text;
  xmlNode *__pyx_v_c_text_node;
  xmlBuffer *__pyx_v_c_buffer;
  int __pyx_v_error_result;
  PyObject *__pyx_v_text;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  char *__pyx_t_7;
  __Pyx_RefNannySetupContext("_textToString");
  __Pyx_INCREF(__pyx_v_encoding);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":31
 *     cdef int error_result
 * 
 *     c_buffer = tree.xmlBufferCreate()             # <<<<<<<<<<<<<<
 *     if c_buffer is NULL:
 *         return python.PyErr_NoMemory()
 */
  __pyx_v_c_buffer = xmlBufferCreate();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":32
 * 
 *     c_buffer = tree.xmlBufferCreate()
 *     if c_buffer is NULL:             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 * 
 */
  __pyx_t_1 = (__pyx_v_c_buffer == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":33
 *     c_buffer = tree.xmlBufferCreate()
 *     if c_buffer is NULL:
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     with nogil:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":35
 *         return python.PyErr_NoMemory()
 * 
 *     with nogil:             # <<<<<<<<<<<<<<
 *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
 *         if with_tail:
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":36
 * 
 *     with nogil:
 *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)             # <<<<<<<<<<<<<<
 *         if with_tail:
 *             c_text_node = _textNodeOrSkip(c_node.next)
 */
      __pyx_v_error_result = xmlNodeBufGetContent(__pyx_v_c_buffer, __pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":37
 *     with nogil:
 *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
 *         if with_tail:             # <<<<<<<<<<<<<<
 *             c_text_node = _textNodeOrSkip(c_node.next)
 *             while c_text_node is not NULL:
 */
      __pyx_t_1 = __pyx_v_with_tail;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":38
 *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
 *         if with_tail:
 *             c_text_node = _textNodeOrSkip(c_node.next)             # <<<<<<<<<<<<<<
 *             while c_text_node is not NULL:
 *                 tree.xmlBufferWriteChar(c_buffer, c_text_node.content)
 */
        __pyx_v_c_text_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":39
 *         if with_tail:
 *             c_text_node = _textNodeOrSkip(c_node.next)
 *             while c_text_node is not NULL:             # <<<<<<<<<<<<<<
 *                 tree.xmlBufferWriteChar(c_buffer, c_text_node.content)
 *                 c_text_node = _textNodeOrSkip(c_text_node.next)
 */
        while (1) {
          __pyx_t_1 = (__pyx_v_c_text_node != NULL);
          if (!__pyx_t_1) break;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":40
 *             c_text_node = _textNodeOrSkip(c_node.next)
 *             while c_text_node is not NULL:
 *                 tree.xmlBufferWriteChar(c_buffer, c_text_node.content)             # <<<<<<<<<<<<<<
 *                 c_text_node = _textNodeOrSkip(c_text_node.next)
 *         c_text = tree.xmlBufferContent(c_buffer)
 */
          xmlBufferWriteChar(__pyx_v_c_buffer, __pyx_v_c_text_node->content);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":41
 *             while c_text_node is not NULL:
 *                 tree.xmlBufferWriteChar(c_buffer, c_text_node.content)
 *                 c_text_node = _textNodeOrSkip(c_text_node.next)             # <<<<<<<<<<<<<<
 *         c_text = tree.xmlBufferContent(c_buffer)
 * 
 */
          __pyx_v_c_text_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_text_node->next);
        }
        goto __pyx_L7;
      }
      __pyx_L7:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":42
 *                 tree.xmlBufferWriteChar(c_buffer, c_text_node.content)
 *                 c_text_node = _textNodeOrSkip(c_text_node.next)
 *         c_text = tree.xmlBufferContent(c_buffer)             # <<<<<<<<<<<<<<
 * 
 *     if error_result < 0 or c_text is NULL:
 */
      __pyx_v_c_text = xmlBufferContent(__pyx_v_c_buffer);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":35
 *         return python.PyErr_NoMemory()
 * 
 *     with nogil:             # <<<<<<<<<<<<<<
 *         error_result = tree.xmlNodeBufGetContent(c_buffer, c_node)
 *         if with_tail:
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":44
 *         c_text = tree.xmlBufferContent(c_buffer)
 * 
 *     if error_result < 0 or c_text is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlBufferFree(c_buffer)
 *         raise SerialisationError, u"Error during serialisation (out of memory?)"
 */
  __pyx_t_1 = (__pyx_v_error_result < 0);
  if (!__pyx_t_1) {
    __pyx_t_3 = (__pyx_v_c_text == NULL);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":45
 * 
 *     if error_result < 0 or c_text is NULL:
 *         tree.xmlBufferFree(c_buffer)             # <<<<<<<<<<<<<<
 *         raise SerialisationError, u"Error during serialisation (out of memory?)"
 * 
 */
    xmlBufferFree(__pyx_v_c_buffer);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":46
 *     if error_result < 0 or c_text is NULL:
 *         tree.xmlBufferFree(c_buffer)
 *         raise SerialisationError, u"Error during serialisation (out of memory?)"             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__SerialisationError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_200), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":48
 *         raise SerialisationError, u"Error during serialisation (out of memory?)"
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         needs_conversion = 0
 *         if encoding is _unicode:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":49
 * 
 *     try:
 *         needs_conversion = 0             # <<<<<<<<<<<<<<
 *         if encoding is _unicode:
 *             needs_conversion = 1
 */
    __pyx_v_needs_conversion = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":50
 *     try:
 *         needs_conversion = 0
 *         if encoding is _unicode:             # <<<<<<<<<<<<<<
 *             needs_conversion = 1
 *         elif encoding is not None:
 */
    __pyx_t_4 = (__pyx_v_encoding == __pyx_v_4lxml_5etree__unicode);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":51
 *         needs_conversion = 0
 *         if encoding is _unicode:
 *             needs_conversion = 1             # <<<<<<<<<<<<<<
 *         elif encoding is not None:
 *             encoding = encoding.upper()
 */
      __pyx_v_needs_conversion = 1;
      goto __pyx_L14;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":52
 *         if encoding is _unicode:
 *             needs_conversion = 1
 *         elif encoding is not None:             # <<<<<<<<<<<<<<
 *             encoding = encoding.upper()
 *             if encoding != u'UTF-8':
 */
    __pyx_t_4 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":53
 *             needs_conversion = 1
 *         elif encoding is not None:
 *             encoding = encoding.upper()             # <<<<<<<<<<<<<<
 *             if encoding != u'UTF-8':
 *                 if encoding == u'ASCII':
 */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_encoding);
      __pyx_v_encoding = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":54
 *         elif encoding is not None:
 *             encoding = encoding.upper()
 *             if encoding != u'UTF-8':             # <<<<<<<<<<<<<<
 *                 if encoding == u'ASCII':
 *                     if isutf8(c_text):
 */
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_encoding, ((PyObject *)__pyx_kp_u_20), Py_NE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":55
 *             encoding = encoding.upper()
 *             if encoding != u'UTF-8':
 *                 if encoding == u'ASCII':             # <<<<<<<<<<<<<<
 *                     if isutf8(c_text):
 *                         # will raise a decode error below
 */
        __pyx_t_5 = PyObject_RichCompare(__pyx_v_encoding, ((PyObject *)__pyx_n_u__ASCII), Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L12;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L12;}
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":56
 *             if encoding != u'UTF-8':
 *                 if encoding == u'ASCII':
 *                     if isutf8(c_text):             # <<<<<<<<<<<<<<
 *                         # will raise a decode error below
 *                         needs_conversion = 1
 */
          __pyx_t_6 = __pyx_f_4lxml_5etree_isutf8(__pyx_v_c_text);
          if (__pyx_t_6) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":58
 *                     if isutf8(c_text):
 *                         # will raise a decode error below
 *                         needs_conversion = 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     needs_conversion = 1
 */
            __pyx_v_needs_conversion = 1;
            goto __pyx_L17;
          }
          __pyx_L17:;
          goto __pyx_L16;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":60
 *                         needs_conversion = 1
 *                 else:
 *                     needs_conversion = 1             # <<<<<<<<<<<<<<
 * 
 *         if needs_conversion:
 */
          __pyx_v_needs_conversion = 1;
        }
        __pyx_L16:;
        goto __pyx_L15;
      }
      __pyx_L15:;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":62
 *                     needs_conversion = 1
 * 
 *         if needs_conversion:             # <<<<<<<<<<<<<<
 *             text = python.PyUnicode_DecodeUTF8(
 *                 c_text, tree.xmlBufferLength(c_buffer), 'strict')
 */
    __pyx_t_4 = __pyx_v_needs_conversion;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":64
 *         if needs_conversion:
 *             text = python.PyUnicode_DecodeUTF8(
 *                 c_text, tree.xmlBufferLength(c_buffer), 'strict')             # <<<<<<<<<<<<<<
 *             if encoding is not _unicode:
 *                 encoding = _utf8(encoding)
 */
      __pyx_t_5 = PyUnicode_DecodeUTF8(__pyx_v_c_text, xmlBufferLength(__pyx_v_c_buffer), __pyx_k__strict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_text);
      __pyx_v_text = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":65
 *             text = python.PyUnicode_DecodeUTF8(
 *                 c_text, tree.xmlBufferLength(c_buffer), 'strict')
 *             if encoding is not _unicode:             # <<<<<<<<<<<<<<
 *                 encoding = _utf8(encoding)
 *                 text = python.PyUnicode_AsEncodedString(
 */
      __pyx_t_4 = (__pyx_v_encoding != __pyx_v_4lxml_5etree__unicode);
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":66
 *                 c_text, tree.xmlBufferLength(c_buffer), 'strict')
 *             if encoding is not _unicode:
 *                 encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
 *                 text = python.PyUnicode_AsEncodedString(
 *                     text, encoding, 'strict')
 */
        __pyx_t_5 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L12;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_encoding);
        __pyx_v_encoding = __pyx_t_5;
        __pyx_t_5 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":68
 *                 encoding = _utf8(encoding)
 *                 text = python.PyUnicode_AsEncodedString(
 *                     text, encoding, 'strict')             # <<<<<<<<<<<<<<
 *         else:
 *             text = c_text
 */
        __pyx_t_7 = __Pyx_PyBytes_AsString(__pyx_v_encoding); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L12;}
        __pyx_t_5 = PyUnicode_AsEncodedString(__pyx_v_text, __pyx_t_7, __pyx_k__strict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L12;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_text);
        __pyx_v_text = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L19;
      }
      __pyx_L19:;
      goto __pyx_L18;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":70
 *                     text, encoding, 'strict')
 *         else:
 *             text = c_text             # <<<<<<<<<<<<<<
 *     finally:
 *         tree.xmlBufferFree(c_buffer)
 */
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_c_text); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
      __Pyx_DECREF(__pyx_v_text);
      __pyx_v_text = ((PyObject *)__pyx_t_5);
      __pyx_t_5 = 0;
    }
    __pyx_L18:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L13;
    __pyx_L12: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":72
 *             text = c_text
 *     finally:
 *         tree.xmlBufferFree(c_buffer)             # <<<<<<<<<<<<<<
 *     return text
 * 
 */
    xmlBufferFree(__pyx_v_c_buffer);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":73
 *     finally:
 *         tree.xmlBufferFree(c_buffer)
 *     return text             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_text);
  __pyx_r = __pyx_v_text;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._textToString");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":76
 * 
 * 
 * cdef _tostring(_Element element, encoding, method,             # <<<<<<<<<<<<<<
 *                bint write_xml_declaration, bint write_complete_document,
 *                bint pretty_print, bint with_tail, int standalone):
 */

static  PyObject *__pyx_f_4lxml_5etree__tostring(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_encoding, PyObject *__pyx_v_method, int __pyx_v_write_xml_declaration, int __pyx_v_write_complete_document, int __pyx_v_pretty_print, int __pyx_v_with_tail, int __pyx_v_standalone) {
  xmlOutputBuffer *__pyx_v_c_buffer;
  xmlBuffer *__pyx_v_c_result_buffer;
  xmlCharEncodingHandler *__pyx_v_enchandler;
  char *__pyx_v_c_enc;
  int __pyx_v_c_method;
  int __pyx_v_error_result;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_tostring");
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_method);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":89
 *     cdef int c_method
 *     cdef int error_result
 *     if element is None:             # <<<<<<<<<<<<<<
 *         return None
 *     c_method = _findOutputMethod(method)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_element) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":90
 *     cdef int error_result
 *     if element is None:
 *         return None             # <<<<<<<<<<<<<<
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":91
 *     if element is None:
 *         return None
 *     c_method = _findOutputMethod(method)             # <<<<<<<<<<<<<<
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         return _textToString(element._c_node, encoding, with_tail)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_method = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":92
 *         return None
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:             # <<<<<<<<<<<<<<
 *         return _textToString(element._c_node, encoding, with_tail)
 *     if encoding is None or encoding is _unicode:
 */
  __pyx_t_1 = (__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":93
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         return _textToString(element._c_node, encoding, with_tail)             # <<<<<<<<<<<<<<
 *     if encoding is None or encoding is _unicode:
 *         c_enc = NULL
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":94
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         return _textToString(element._c_node, encoding, with_tail)
 *     if encoding is None or encoding is _unicode:             # <<<<<<<<<<<<<<
 *         c_enc = NULL
 *     else:
 */
  __pyx_t_1 = (__pyx_v_encoding == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_4 = (__pyx_v_encoding == __pyx_v_4lxml_5etree__unicode);
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_1;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":95
 *         return _textToString(element._c_node, encoding, with_tail)
 *     if encoding is None or encoding is _unicode:
 *         c_enc = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         encoding = _utf8(encoding)
 */
    __pyx_v_c_enc = NULL;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":97
 *         c_enc = NULL
 *     else:
 *         encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
 *         c_enc = _cstr(encoding)
 *     # it is necessary to *and* find the encoding handler *and* use
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":98
 *     else:
 *         encoding = _utf8(encoding)
 *         c_enc = _cstr(encoding)             # <<<<<<<<<<<<<<
 *     # it is necessary to *and* find the encoding handler *and* use
 *     # encoding during output
 */
    __pyx_v_c_enc = PyString_AS_STRING(__pyx_v_encoding);
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":101
 *     # it is necessary to *and* find the encoding handler *and* use
 *     # encoding during output
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)             # <<<<<<<<<<<<<<
 *     if enchandler is NULL and c_enc is not NULL:
 *         if encoding is not None:
 */
  __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":102
 *     # encoding during output
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 *     if enchandler is NULL and c_enc is not NULL:             # <<<<<<<<<<<<<<
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')
 */
  __pyx_t_5 = (__pyx_v_enchandler == NULL);
  if (__pyx_t_5) {
    __pyx_t_1 = (__pyx_v_c_enc != NULL);
    __pyx_t_4 = __pyx_t_1;
  } else {
    __pyx_t_4 = __pyx_t_5;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":103
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 *     if enchandler is NULL and c_enc is not NULL:
 *         if encoding is not None:             # <<<<<<<<<<<<<<
 *             encoding = encoding.decode(u'UTF-8')
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 */
    __pyx_t_4 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":104
 *     if enchandler is NULL and c_enc is not NULL:
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')             # <<<<<<<<<<<<<<
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
 */
      __pyx_t_3 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__decode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(((PyObject *)__pyx_kp_u_20));
      PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_kp_u_20));
      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_20));
      __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_encoding);
      __pyx_v_encoding = __pyx_t_7;
      __pyx_t_7 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":105
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')
 *         raise LookupError, u"unknown encoding: '%s'" % encoding             # <<<<<<<<<<<<<<
 *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
 *     if c_buffer is NULL:
 */
    __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_143), __pyx_v_encoding); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_7, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":106
 *             encoding = encoding.decode(u'UTF-8')
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)             # <<<<<<<<<<<<<<
 *     if c_buffer is NULL:
 *         tree.xmlCharEncCloseFunc(enchandler)
 */
  __pyx_v_c_buffer = xmlAllocOutputBuffer(__pyx_v_enchandler);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":107
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
 *     if c_buffer is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlCharEncCloseFunc(enchandler)
 *         return python.PyErr_NoMemory()
 */
  __pyx_t_4 = (__pyx_v_c_buffer == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":108
 *     c_buffer = tree.xmlAllocOutputBuffer(enchandler)
 *     if c_buffer is NULL:
 *         tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 * 
 */
    xmlCharEncCloseFunc(__pyx_v_enchandler);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":109
 *     if c_buffer is NULL:
 *         tree.xmlCharEncCloseFunc(enchandler)
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     with nogil:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = PyErr_NoMemory(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":111
 *         return python.PyErr_NoMemory()
 * 
 *     with nogil:             # <<<<<<<<<<<<<<
 *         _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,
 *                            write_xml_declaration, write_complete_document,
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":114
 *         _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,
 *                            write_xml_declaration, write_complete_document,
 *                            pretty_print, with_tail, standalone)             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferFlush(c_buffer)
 *         if c_buffer.conv is not NULL:
 */
      __pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_element->_c_node, __pyx_v_c_enc, __pyx_v_c_method, __pyx_v_write_xml_declaration, __pyx_v_write_complete_document, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":115
 *                            write_xml_declaration, write_complete_document,
 *                            pretty_print, with_tail, standalone)
 *         tree.xmlOutputBufferFlush(c_buffer)             # <<<<<<<<<<<<<<
 *         if c_buffer.conv is not NULL:
 *             c_result_buffer = c_buffer.conv
 */
      xmlOutputBufferFlush(__pyx_v_c_buffer);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":116
 *                            pretty_print, with_tail, standalone)
 *         tree.xmlOutputBufferFlush(c_buffer)
 *         if c_buffer.conv is not NULL:             # <<<<<<<<<<<<<<
 *             c_result_buffer = c_buffer.conv
 *         else:
 */
      __pyx_t_4 = (__pyx_v_c_buffer->conv != NULL);
      if (__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":117
 *         tree.xmlOutputBufferFlush(c_buffer)
 *         if c_buffer.conv is not NULL:
 *             c_result_buffer = c_buffer.conv             # <<<<<<<<<<<<<<
 *         else:
 *             c_result_buffer = c_buffer.buffer
 */
        __pyx_v_c_result_buffer = __pyx_v_c_buffer->conv;
        goto __pyx_L12;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":119
 *             c_result_buffer = c_buffer.conv
 *         else:
 *             c_result_buffer = c_buffer.buffer             # <<<<<<<<<<<<<<
 * 
 *     error_result = c_buffer.error
 */
        __pyx_v_c_result_buffer = __pyx_v_c_buffer->buffer;
      }
      __pyx_L12:;
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":111
 *         return python.PyErr_NoMemory()
 * 
 *     with nogil:             # <<<<<<<<<<<<<<
 *         _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,
 *                            write_xml_declaration, write_complete_document,
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":121
 *             c_result_buffer = c_buffer.buffer
 * 
 *     error_result = c_buffer.error             # <<<<<<<<<<<<<<
 *     if error_result != xmlerror.XML_ERR_OK:
 *         tree.xmlOutputBufferClose(c_buffer)
 */
  __pyx_v_error_result = __pyx_v_c_buffer->error;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":122
 * 
 *     error_result = c_buffer.error
 *     if error_result != xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferClose(c_buffer)
 *         _raiseSerialisationError(error_result)
 */
  __pyx_t_4 = (__pyx_v_error_result != XML_ERR_OK);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":123
 *     error_result = c_buffer.error
 *     if error_result != xmlerror.XML_ERR_OK:
 *         tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *         _raiseSerialisationError(error_result)
 * 
 */
    xmlOutputBufferClose(__pyx_v_c_buffer);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":124
 *     if error_result != xmlerror.XML_ERR_OK:
 *         tree.xmlOutputBufferClose(c_buffer)
 *         _raiseSerialisationError(error_result)             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":126
 *         _raiseSerialisationError(error_result)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         if encoding is _unicode:
 *             result = python.PyUnicode_DecodeUTF8(
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":127
 * 
 *     try:
 *         if encoding is _unicode:             # <<<<<<<<<<<<<<
 *             result = python.PyUnicode_DecodeUTF8(
 *                 tree.xmlBufferContent(c_result_buffer),
 */
    __pyx_t_4 = (__pyx_v_encoding == __pyx_v_4lxml_5etree__unicode);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":130
 *             result = python.PyUnicode_DecodeUTF8(
 *                 tree.xmlBufferContent(c_result_buffer),
 *                 tree.xmlBufferLength(c_result_buffer),             # <<<<<<<<<<<<<<
 *                 'strict')
 *         else:
 */
      __pyx_t_7 = PyUnicode_DecodeUTF8(xmlBufferContent(__pyx_v_c_result_buffer), xmlBufferLength(__pyx_v_c_result_buffer), __pyx_k__strict); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L15;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_7;
      __pyx_t_7 = 0;
      goto __pyx_L17;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":135
 *             result = python.PyString_FromStringAndSize(
 *                 tree.xmlBufferContent(c_result_buffer),
 *                 tree.xmlBufferLength(c_result_buffer))             # <<<<<<<<<<<<<<
 *     finally:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 */
      __pyx_t_7 = PyString_FromStringAndSize(xmlBufferContent(__pyx_v_c_result_buffer), xmlBufferLength(__pyx_v_c_result_buffer)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L15;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_7;
      __pyx_t_7 = 0;
    }
    __pyx_L17:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L16;
    __pyx_L15: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L16;
    }
    __pyx_L16:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":137
 *                 tree.xmlBufferLength(c_result_buffer))
 *     finally:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *     if error_result < 0:
 *         _raiseSerialisationError(error_result)
 */
    __pyx_v_error_result = xmlOutputBufferClose(__pyx_v_c_buffer);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":138
 *     finally:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 *     if error_result < 0:             # <<<<<<<<<<<<<<
 *         _raiseSerialisationError(error_result)
 *     return result
 */
  __pyx_t_4 = (__pyx_v_error_result < 0);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":139
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 *     if error_result < 0:
 *         _raiseSerialisationError(error_result)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L19;
  }
  __pyx_L19:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":140
 *     if error_result < 0:
 *         _raiseSerialisationError(error_result)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef _raiseSerialisationError(int error_result):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._tostring");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":142
 *     return result
 * 
 * cdef _raiseSerialisationError(int error_result):             # <<<<<<<<<<<<<<
 *     if error_result == xmlerror.XML_ERR_NO_MEMORY:
 *         return python.PyErr_NoMemory()
 */

static  PyObject *__pyx_f_4lxml_5etree__raiseSerialisationError(int __pyx_v_error_result) {
  PyObject *__pyx_v_message;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_raiseSerialisationError");
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":143
 * 
 * cdef _raiseSerialisationError(int error_result):
 *     if error_result == xmlerror.XML_ERR_NO_MEMORY:             # <<<<<<<<<<<<<<
 *         return python.PyErr_NoMemory()
 *     else:
 */
  __pyx_t_1 = (__pyx_v_error_result == XML_ERR_NO_MEMORY);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":144
 * cdef _raiseSerialisationError(int error_result):
 *     if error_result == xmlerror.XML_ERR_NO_MEMORY:
 *         return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     else:
 *         message = ErrorTypes._getName(error_result)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":146
 *         return python.PyErr_NoMemory()
 *     else:
 *         message = ErrorTypes._getName(error_result)             # <<<<<<<<<<<<<<
 *         if message is None:
 *             message = u"unknown error %d" % error_result
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ErrorTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___getName); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyInt_FromLong(__pyx_v_error_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":147
 *     else:
 *         message = ErrorTypes._getName(error_result)
 *         if message is None:             # <<<<<<<<<<<<<<
 *             message = u"unknown error %d" % error_result
 *         raise SerialisationError, message
 */
    __pyx_t_1 = (__pyx_v_message == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":148
 *         message = ErrorTypes._getName(error_result)
 *         if message is None:
 *             message = u"unknown error %d" % error_result             # <<<<<<<<<<<<<<
 *         raise SerialisationError, message
 * 
 */
      __pyx_t_2 = PyInt_FromLong(__pyx_v_error_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_201), __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":149
 *         if message is None:
 *             message = u"unknown error %d" % error_result
 *         raise SerialisationError, message             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__SerialisationError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, __pyx_v_message, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._raiseSerialisationError");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":154
 * # low-level serialisation functions
 * 
 * cdef void _writeNodeToBuffer(tree.xmlOutputBuffer* c_buffer,             # <<<<<<<<<<<<<<
 *                              xmlNode* c_node, char* encoding, int c_method,
 *                              bint write_xml_declaration,
 */

static  void __pyx_f_4lxml_5etree__writeNodeToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, char *__pyx_v_encoding, int __pyx_v_c_method, int __pyx_v_write_xml_declaration, int __pyx_v_write_complete_document, int __pyx_v_pretty_print, int __pyx_v_with_tail, int __pyx_v_standalone) {
  xmlDoc *__pyx_v_c_doc;
  xmlNode *__pyx_v_c_nsdecl_node;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":162
 *     cdef xmlDoc* c_doc
 *     cdef xmlNode* c_nsdecl_node
 *     c_doc = c_node.doc             # <<<<<<<<<<<<<<
 *     if write_xml_declaration and c_method == OUTPUT_METHOD_XML:
 *         _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone)
 */
  __pyx_v_c_doc = __pyx_v_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":163
 *     cdef xmlNode* c_nsdecl_node
 *     c_doc = c_node.doc
 *     if write_xml_declaration and c_method == OUTPUT_METHOD_XML:             # <<<<<<<<<<<<<<
 *         _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone)
 * 
 */
  if (__pyx_v_write_xml_declaration) {
    __pyx_t_1 = (__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_v_write_xml_declaration;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":164
 *     c_doc = c_node.doc
 *     if write_xml_declaration and c_method == OUTPUT_METHOD_XML:
 *         _writeDeclarationToBuffer(c_buffer, c_doc.version, encoding, standalone)             # <<<<<<<<<<<<<<
 * 
 *     # write internal DTD subset, preceding PIs/comments, etc.
 */
    __pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc->version, __pyx_v_encoding, __pyx_v_standalone);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":167
 * 
 *     # write internal DTD subset, preceding PIs/comments, etc.
 *     if write_complete_document:             # <<<<<<<<<<<<<<
 *         _writeDtdToBuffer(c_buffer, c_doc, c_node.name, encoding)
 *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
 */
  __pyx_t_2 = __pyx_v_write_complete_document;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":168
 *     # write internal DTD subset, preceding PIs/comments, etc.
 *     if write_complete_document:
 *         _writeDtdToBuffer(c_buffer, c_doc, c_node.name, encoding)             # <<<<<<<<<<<<<<
 *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
 * 
 */
    __pyx_f_4lxml_5etree__writeDtdToBuffer(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_node->name, __pyx_v_encoding);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":169
 *     if write_complete_document:
 *         _writeDtdToBuffer(c_buffer, c_doc, c_node.name, encoding)
 *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)             # <<<<<<<<<<<<<<
 * 
 *     c_nsdecl_node = c_node
 */
    __pyx_f_4lxml_5etree__writePrevSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":171
 *         _writePrevSiblings(c_buffer, c_node, encoding, pretty_print)
 * 
 *     c_nsdecl_node = c_node             # <<<<<<<<<<<<<<
 *     if c_node.parent is NULL or c_node.parent.type != tree.XML_DOCUMENT_NODE:
 *         # copy the node and add namespaces from parents
 */
  __pyx_v_c_nsdecl_node = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":172
 * 
 *     c_nsdecl_node = c_node
 *     if c_node.parent is NULL or c_node.parent.type != tree.XML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
 *         # copy the node and add namespaces from parents
 *         # this is required to make libxml write them
 */
  __pyx_t_2 = (__pyx_v_c_node->parent == NULL);
  if (!__pyx_t_2) {
    __pyx_t_1 = (__pyx_v_c_node->parent->type != XML_DOCUMENT_NODE);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_2;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":175
 *         # copy the node and add namespaces from parents
 *         # this is required to make libxml write them
 *         c_nsdecl_node = tree.xmlCopyNode(c_node, 2)             # <<<<<<<<<<<<<<
 *         if c_nsdecl_node is NULL:
 *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
 */
    __pyx_v_c_nsdecl_node = xmlCopyNode(__pyx_v_c_node, 2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":176
 *         # this is required to make libxml write them
 *         c_nsdecl_node = tree.xmlCopyNode(c_node, 2)
 *         if c_nsdecl_node is NULL:             # <<<<<<<<<<<<<<
 *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
 *             return
 */
    __pyx_t_3 = (__pyx_v_c_nsdecl_node == NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":177
 *         c_nsdecl_node = tree.xmlCopyNode(c_node, 2)
 *         if c_nsdecl_node is NULL:
 *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY             # <<<<<<<<<<<<<<
 *             return
 *         _copyParentNamespaces(c_node, c_nsdecl_node)
 */
      __pyx_v_c_buffer->error = XML_ERR_NO_MEMORY;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":178
 *         if c_nsdecl_node is NULL:
 *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
 *             return             # <<<<<<<<<<<<<<
 *         _copyParentNamespaces(c_node, c_nsdecl_node)
 * 
 */
      goto __pyx_L0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":179
 *             c_buffer.error = xmlerror.XML_ERR_NO_MEMORY
 *             return
 *         _copyParentNamespaces(c_node, c_nsdecl_node)             # <<<<<<<<<<<<<<
 * 
 *         c_nsdecl_node.parent = c_node.parent
 */
    __pyx_f_4lxml_5etree__copyParentNamespaces(__pyx_v_c_node, __pyx_v_c_nsdecl_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":181
 *         _copyParentNamespaces(c_node, c_nsdecl_node)
 * 
 *         c_nsdecl_node.parent = c_node.parent             # <<<<<<<<<<<<<<
 *         c_nsdecl_node.children = c_node.children
 *         c_nsdecl_node.last = c_node.last
 */
    __pyx_v_c_nsdecl_node->parent = __pyx_v_c_node->parent;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":182
 * 
 *         c_nsdecl_node.parent = c_node.parent
 *         c_nsdecl_node.children = c_node.children             # <<<<<<<<<<<<<<
 *         c_nsdecl_node.last = c_node.last
 * 
 */
    __pyx_v_c_nsdecl_node->children = __pyx_v_c_node->children;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":183
 *         c_nsdecl_node.parent = c_node.parent
 *         c_nsdecl_node.children = c_node.children
 *         c_nsdecl_node.last = c_node.last             # <<<<<<<<<<<<<<
 * 
 *     # write node
 */
    __pyx_v_c_nsdecl_node->last = __pyx_v_c_node->last;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":186
 * 
 *     # write node
 *     if c_method == OUTPUT_METHOD_XML:             # <<<<<<<<<<<<<<
 *         tree.xmlNodeDumpOutput(
 *             c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding)
 */
  __pyx_t_3 = (__pyx_v_c_method == __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":188
 *     if c_method == OUTPUT_METHOD_XML:
 *         tree.xmlNodeDumpOutput(
 *             c_buffer, c_doc, c_nsdecl_node, 0, pretty_print, encoding)             # <<<<<<<<<<<<<<
 *     else:
 *         tree.htmlNodeDumpFormatOutput(
 */
    xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_nsdecl_node, 0, __pyx_v_pretty_print, __pyx_v_encoding);
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":191
 *     else:
 *         tree.htmlNodeDumpFormatOutput(
 *             c_buffer, c_doc, c_nsdecl_node, encoding, pretty_print)             # <<<<<<<<<<<<<<
 * 
 *     if c_nsdecl_node is not c_node:
 */
    htmlNodeDumpFormatOutput(__pyx_v_c_buffer, __pyx_v_c_doc, __pyx_v_c_nsdecl_node, __pyx_v_encoding, __pyx_v_pretty_print);
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":193
 *             c_buffer, c_doc, c_nsdecl_node, encoding, pretty_print)
 * 
 *     if c_nsdecl_node is not c_node:             # <<<<<<<<<<<<<<
 *         # clean up
 *         c_nsdecl_node.children = c_nsdecl_node.last = NULL
 */
  __pyx_t_3 = (__pyx_v_c_nsdecl_node != __pyx_v_c_node);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":195
 *     if c_nsdecl_node is not c_node:
 *         # clean up
 *         c_nsdecl_node.children = c_nsdecl_node.last = NULL             # <<<<<<<<<<<<<<
 *         tree.xmlFreeNode(c_nsdecl_node)
 * 
 */
    __pyx_v_c_nsdecl_node->children = NULL;
    __pyx_v_c_nsdecl_node->last = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":196
 *         # clean up
 *         c_nsdecl_node.children = c_nsdecl_node.last = NULL
 *         tree.xmlFreeNode(c_nsdecl_node)             # <<<<<<<<<<<<<<
 * 
 *     # write tail, trailing comments, etc.
 */
    xmlFreeNode(__pyx_v_c_nsdecl_node);
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":199
 * 
 *     # write tail, trailing comments, etc.
 *     if with_tail:             # <<<<<<<<<<<<<<
 *         _writeTail(c_buffer, c_node, encoding, pretty_print)
 *     if write_complete_document:
 */
  __pyx_t_3 = __pyx_v_with_tail;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":200
 *     # write tail, trailing comments, etc.
 *     if with_tail:
 *         _writeTail(c_buffer, c_node, encoding, pretty_print)             # <<<<<<<<<<<<<<
 *     if write_complete_document:
 *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
 */
    __pyx_f_4lxml_5etree__writeTail(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":201
 *     if with_tail:
 *         _writeTail(c_buffer, c_node, encoding, pretty_print)
 *     if write_complete_document:             # <<<<<<<<<<<<<<
 *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
 *     if pretty_print:
 */
  __pyx_t_3 = __pyx_v_write_complete_document;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":202
 *         _writeTail(c_buffer, c_node, encoding, pretty_print)
 *     if write_complete_document:
 *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)             # <<<<<<<<<<<<<<
 *     if pretty_print:
 *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
 */
    __pyx_f_4lxml_5etree__writeNextSiblings(__pyx_v_c_buffer, __pyx_v_c_node, __pyx_v_encoding, __pyx_v_pretty_print);
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":203
 *     if write_complete_document:
 *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
 *     if pretty_print:             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
 * 
 */
  __pyx_t_3 = __pyx_v_pretty_print;
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":204
 *         _writeNextSiblings(c_buffer, c_node, encoding, pretty_print)
 *     if pretty_print:
 *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")             # <<<<<<<<<<<<<<
 * 
 * cdef void _writeDeclarationToBuffer(tree.xmlOutputBuffer* c_buffer,
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_k_34);
    goto __pyx_L11;
  }
  __pyx_L11:;

  __pyx_L0:;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":206
 *         tree.xmlOutputBufferWrite(c_buffer, 1, "\n")
 * 
 * cdef void _writeDeclarationToBuffer(tree.xmlOutputBuffer* c_buffer,             # <<<<<<<<<<<<<<
 *                                     char* version, char* encoding,
 *                                     int standalone) nogil:
 */

static  void __pyx_f_4lxml_5etree__writeDeclarationToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, char *__pyx_v_version, char *__pyx_v_encoding, int __pyx_v_standalone) {
  int __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":209
 *                                     char* version, char* encoding,
 *                                     int standalone) nogil:
 *     if version is NULL:             # <<<<<<<<<<<<<<
 *         version = "1.0"
 *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
 */
  __pyx_t_1 = (__pyx_v_version == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":210
 *                                     int standalone) nogil:
 *     if version is NULL:
 *         version = "1.0"             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
 *     tree.xmlOutputBufferWriteString(c_buffer, version)
 */
    __pyx_v_version = __pyx_k_202;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":211
 *     if version is NULL:
 *         version = "1.0"
 *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWriteString(c_buffer, version)
 *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
 */
  xmlOutputBufferWrite(__pyx_v_c_buffer, 15, __pyx_k_203);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":212
 *         version = "1.0"
 *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
 *     tree.xmlOutputBufferWriteString(c_buffer, version)             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
 *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
 */
  xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_version);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":213
 *     tree.xmlOutputBufferWrite(c_buffer, 15, "<?xml version='")
 *     tree.xmlOutputBufferWriteString(c_buffer, version)
 *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
 *     if standalone == 0:
 */
  xmlOutputBufferWrite(__pyx_v_c_buffer, 12, __pyx_k_204);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":214
 *     tree.xmlOutputBufferWriteString(c_buffer, version)
 *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
 *     tree.xmlOutputBufferWriteString(c_buffer, encoding)             # <<<<<<<<<<<<<<
 *     if standalone == 0:
 *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
 */
  xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_encoding);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":215
 *     tree.xmlOutputBufferWrite(c_buffer, 12, "' encoding='")
 *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
 *     if standalone == 0:             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
 *     elif standalone == 1:
 */
  switch (__pyx_v_standalone) {
    case 0:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":216
 *     tree.xmlOutputBufferWriteString(c_buffer, encoding)
 *     if standalone == 0:
 *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")             # <<<<<<<<<<<<<<
 *     elif standalone == 1:
 *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 20, __pyx_k_205);
    break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":217
 *     if standalone == 0:
 *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
 *     elif standalone == 1:             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
 *     else:
 */
    case 1:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":218
 *         tree.xmlOutputBufferWrite(c_buffer, 20, "' standalone='no'?>\n")
 *     elif standalone == 1:
 *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")             # <<<<<<<<<<<<<<
 *     else:
 *         tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 21, __pyx_k_206);
    break;
    default:

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":220
 *         tree.xmlOutputBufferWrite(c_buffer, 21, "' standalone='yes'?>\n")
 *     else:
 *         tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")             # <<<<<<<<<<<<<<
 * 
 * cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer,
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 4, __pyx_k_207);
    break;
  }

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":222
 *         tree.xmlOutputBufferWrite(c_buffer, 4, "'?>\n")
 * 
 * cdef void _writeDtdToBuffer(tree.xmlOutputBuffer* c_buffer,             # <<<<<<<<<<<<<<
 *                             xmlDoc* c_doc, char* c_root_name,
 *                             char* encoding) nogil:
 */

static  void __pyx_f_4lxml_5etree__writeDtdToBuffer(xmlOutputBuffer *__pyx_v_c_buffer, xmlDoc *__pyx_v_c_doc, char *__pyx_v_c_root_name, char *__pyx_v_encoding) {
  xmlDtd *__pyx_v_c_dtd;
  xmlNode *__pyx_v_c_node;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":227
 *     cdef tree.xmlDtd* c_dtd
 *     cdef xmlNode* c_node
 *     c_dtd = c_doc.intSubset             # <<<<<<<<<<<<<<
 *     if c_dtd is NULL or c_dtd.name is NULL:
 *         return
 */
  __pyx_v_c_dtd = __pyx_v_c_doc->intSubset;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":228
 *     cdef xmlNode* c_node
 *     c_dtd = c_doc.intSubset
 *     if c_dtd is NULL or c_dtd.name is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     if cstd.strcmp(c_root_name, c_dtd.name) != 0:
 */
  __pyx_t_1 = (__pyx_v_c_dtd == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_dtd->name == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":229
 *     c_dtd = c_doc.intSubset
 *     if c_dtd is NULL or c_dtd.name is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     if cstd.strcmp(c_root_name, c_dtd.name) != 0:
 *         return
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":230
 *     if c_dtd is NULL or c_dtd.name is NULL:
 *         return
 *     if cstd.strcmp(c_root_name, c_dtd.name) != 0:             # <<<<<<<<<<<<<<
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
 */
  __pyx_t_3 = (strcmp(__pyx_v_c_root_name, __pyx_v_c_dtd->name) != 0);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":231
 *         return
 *     if cstd.strcmp(c_root_name, c_dtd.name) != 0:
 *         return             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
 *     tree.xmlOutputBufferWriteString(c_buffer, c_dtd.name)
 */
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":232
 *     if cstd.strcmp(c_root_name, c_dtd.name) != 0:
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWriteString(c_buffer, c_dtd.name)
 *     if c_dtd.SystemID != NULL and c_dtd.SystemID[0] != c'\0':
 */
  xmlOutputBufferWrite(__pyx_v_c_buffer, 10, __pyx_k_208);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":233
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
 *     tree.xmlOutputBufferWriteString(c_buffer, c_dtd.name)             # <<<<<<<<<<<<<<
 *     if c_dtd.SystemID != NULL and c_dtd.SystemID[0] != c'\0':
 *         if c_dtd.ExternalID != NULL and c_dtd.ExternalID[0] != c'\0':
 */
  xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_c_dtd->name);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":234
 *     tree.xmlOutputBufferWrite(c_buffer, 10, "<!DOCTYPE ")
 *     tree.xmlOutputBufferWriteString(c_buffer, c_dtd.name)
 *     if c_dtd.SystemID != NULL and c_dtd.SystemID[0] != c'\0':             # <<<<<<<<<<<<<<
 *         if c_dtd.ExternalID != NULL and c_dtd.ExternalID[0] != c'\0':
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
 */
  __pyx_t_3 = (__pyx_v_c_dtd->SystemID != NULL);
  if (__pyx_t_3) {
    __pyx_t_1 = ((__pyx_v_c_dtd->SystemID[0]) != '\x00');
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":235
 *     tree.xmlOutputBufferWriteString(c_buffer, c_dtd.name)
 *     if c_dtd.SystemID != NULL and c_dtd.SystemID[0] != c'\0':
 *         if c_dtd.ExternalID != NULL and c_dtd.ExternalID[0] != c'\0':             # <<<<<<<<<<<<<<
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
 *             tree.xmlOutputBufferWriteString(c_buffer, c_dtd.ExternalID)
 */
    __pyx_t_2 = (__pyx_v_c_dtd->ExternalID != NULL);
    if (__pyx_t_2) {
      __pyx_t_3 = ((__pyx_v_c_dtd->ExternalID[0]) != '\x00');
      __pyx_t_1 = __pyx_t_3;
    } else {
      __pyx_t_1 = __pyx_t_2;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":236
 *     if c_dtd.SystemID != NULL and c_dtd.SystemID[0] != c'\0':
 *         if c_dtd.ExternalID != NULL and c_dtd.ExternalID[0] != c'\0':
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')             # <<<<<<<<<<<<<<
 *             tree.xmlOutputBufferWriteString(c_buffer, c_dtd.ExternalID)
 *             tree.xmlOutputBufferWrite(c_buffer, 3, '" "')
 */
      xmlOutputBufferWrite(__pyx_v_c_buffer, 9, __pyx_k_209);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":237
 *         if c_dtd.ExternalID != NULL and c_dtd.ExternalID[0] != c'\0':
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
 *             tree.xmlOutputBufferWriteString(c_buffer, c_dtd.ExternalID)             # <<<<<<<<<<<<<<
 *             tree.xmlOutputBufferWrite(c_buffer, 3, '" "')
 *         else:
 */
      xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_c_dtd->ExternalID);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":238
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' PUBLIC "')
 *             tree.xmlOutputBufferWriteString(c_buffer, c_dtd.ExternalID)
 *             tree.xmlOutputBufferWrite(c_buffer, 3, '" "')             # <<<<<<<<<<<<<<
 *         else:
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' SYSTEM "')
 */
      xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k_210);
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":240
 *             tree.xmlOutputBufferWrite(c_buffer, 3, '" "')
 *         else:
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' SYSTEM "')             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWriteString(c_buffer, c_dtd.SystemID)
 *         tree.xmlOutputBufferWrite(c_buffer, 1, '"')
 */
      xmlOutputBufferWrite(__pyx_v_c_buffer, 9, __pyx_k_211);
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":241
 *         else:
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' SYSTEM "')
 *         tree.xmlOutputBufferWriteString(c_buffer, c_dtd.SystemID)             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWrite(c_buffer, 1, '"')
 *     if c_dtd.entities == NULL and c_dtd.elements == NULL and \
 */
    xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_v_c_dtd->SystemID);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":242
 *             tree.xmlOutputBufferWrite(c_buffer, 9, ' SYSTEM "')
 *         tree.xmlOutputBufferWriteString(c_buffer, c_dtd.SystemID)
 *         tree.xmlOutputBufferWrite(c_buffer, 1, '"')             # <<<<<<<<<<<<<<
 *     if c_dtd.entities == NULL and c_dtd.elements == NULL and \
 *            c_dtd.attributes == NULL and c_dtd.notations == NULL and \
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 1, __pyx_k_212);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":243
 *         tree.xmlOutputBufferWriteString(c_buffer, c_dtd.SystemID)
 *         tree.xmlOutputBufferWrite(c_buffer, 1, '"')
 *     if c_dtd.entities == NULL and c_dtd.elements == NULL and \             # <<<<<<<<<<<<<<
 *            c_dtd.attributes == NULL and c_dtd.notations == NULL and \
 *            c_dtd.pentities == NULL:
 */
  __pyx_t_1 = (__pyx_v_c_dtd->entities == NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_dtd->elements == NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":244
 *         tree.xmlOutputBufferWrite(c_buffer, 1, '"')
 *     if c_dtd.entities == NULL and c_dtd.elements == NULL and \
 *            c_dtd.attributes == NULL and c_dtd.notations == NULL and \             # <<<<<<<<<<<<<<
 *            c_dtd.pentities == NULL:
 *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
 */
      __pyx_t_3 = (__pyx_v_c_dtd->attributes == NULL);
      if (__pyx_t_3) {
        __pyx_t_4 = (__pyx_v_c_dtd->notations == NULL);
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":245
 *     if c_dtd.entities == NULL and c_dtd.elements == NULL and \
 *            c_dtd.attributes == NULL and c_dtd.notations == NULL and \
 *            c_dtd.pentities == NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
 *         return
 */
          __pyx_t_5 = (__pyx_v_c_dtd->pentities == NULL);
          __pyx_t_6 = __pyx_t_5;
        } else {
          __pyx_t_6 = __pyx_t_4;
        }
        __pyx_t_4 = __pyx_t_6;
      } else {
        __pyx_t_4 = __pyx_t_3;
      }
      __pyx_t_3 = __pyx_t_4;
    } else {
      __pyx_t_3 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_3;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":246
 *            c_dtd.attributes == NULL and c_dtd.notations == NULL and \
 *            c_dtd.pentities == NULL:
 *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')             # <<<<<<<<<<<<<<
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
 */
    xmlOutputBufferWrite(__pyx_v_c_buffer, 2, __pyx_k_213);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":247
 *            c_dtd.pentities == NULL:
 *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
 *         return             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
 *     if c_dtd.notations != NULL:
 */
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":248
 *         tree.xmlOutputBufferWrite(c_buffer, 2, '>\n')
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')             # <<<<<<<<<<<<<<
 *     if c_dtd.notations != NULL:
 *         tree.xmlDumpNotationTable(c_buffer.buffer,
 */
  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k_214);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":249
 *         return
 *     tree.xmlOutputBufferWrite(c_buffer, 3, ' [\n')
 *     if c_dtd.notations != NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlDumpNotationTable(c_buffer.buffer,
 *                                   <tree.xmlNotationTable*>c_dtd.notations)
 */
  __pyx_t_2 = (__pyx_v_c_dtd->notations != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":251
 *     if c_dtd.notations != NULL:
 *         tree.xmlDumpNotationTable(c_buffer.buffer,
 *                                   <tree.xmlNotationTable*>c_dtd.notations)             # <<<<<<<<<<<<<<
 *     c_node = c_dtd.children
 *     while c_node is not NULL:
 */
    xmlDumpNotationTable(__pyx_v_c_buffer->buffer, ((xmlNotationTable *)__pyx_v_c_dtd->notations));
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":252
 *         tree.xmlDumpNotationTable(c_buffer.buffer,
 *                                   <tree.xmlNotationTable*>c_dtd.notations)
 *     c_node = c_dtd.children             # <<<<<<<<<<<<<<
 *     while c_node is not NULL:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
 */
  __pyx_v_c_node = __pyx_v_c_dtd->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":253
 *                                   <tree.xmlNotationTable*>c_dtd.notations)
 *     c_node = c_dtd.children
 *     while c_node is not NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
 *         c_node = c_node.next
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_c_node != NULL);
    if (!__pyx_t_2) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":254
 *     c_node = c_dtd.children
 *     while c_node is not NULL:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)             # <<<<<<<<<<<<<<
 *         c_node = c_node.next
 *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
 */
    xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, 0, __pyx_v_encoding);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":255
 *     while c_node is not NULL:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
 *         c_node = c_node.next             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
 * 
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":256
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, 0, encoding)
 *         c_node = c_node.next
 *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")             # <<<<<<<<<<<<<<
 * 
 * cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
 */
  xmlOutputBufferWrite(__pyx_v_c_buffer, 3, __pyx_k_215);

  __pyx_L0:;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":258
 *     tree.xmlOutputBufferWrite(c_buffer, 3, "]>\n")
 * 
 * cdef void _writeTail(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                      char* encoding, bint pretty_print) nogil:
 *     u"Write the element tail."
 */

static  void __pyx_f_4lxml_5etree__writeTail(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, char *__pyx_v_encoding, int __pyx_v_pretty_print) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":261
 *                      char* encoding, bint pretty_print) nogil:
 *     u"Write the element tail."
 *     c_node = c_node.next             # <<<<<<<<<<<<<<
 *     while c_node is not NULL and c_node.type == tree.XML_TEXT_NODE:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0,
 */
  __pyx_v_c_node = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":262
 *     u"Write the element tail."
 *     c_node = c_node.next
 *     while c_node is not NULL and c_node.type == tree.XML_TEXT_NODE:             # <<<<<<<<<<<<<<
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0,
 *                                pretty_print, encoding)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_node != NULL);
    if (__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c_node->type == XML_TEXT_NODE);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":264
 *     while c_node is not NULL and c_node.type == tree.XML_TEXT_NODE:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0,
 *                                pretty_print, encoding)             # <<<<<<<<<<<<<<
 *         c_node = c_node.next
 * 
 */
    xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, __pyx_v_pretty_print, __pyx_v_encoding);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":265
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0,
 *                                pretty_print, encoding)
 *         c_node = c_node.next             # <<<<<<<<<<<<<<
 * 
 * cdef void _writePrevSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
 */
    __pyx_v_c_node = __pyx_v_c_node->next;
  }

}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":267
 *         c_node = c_node.next
 * 
 * cdef void _writePrevSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                              char* encoding, bint pretty_print) nogil:
 *     cdef xmlNode* c_sibling
 */

static  void __pyx_f_4lxml_5etree__writePrevSiblings(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, char *__pyx_v_encoding, int __pyx_v_pretty_print) {
  xmlNode *__pyx_v_c_sibling;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":270
 *                              char* encoding, bint pretty_print) nogil:
 *     cdef xmlNode* c_sibling
 *     if c_node.parent is not NULL and _isElement(c_node.parent):             # <<<<<<<<<<<<<<
 *         return
 *     # we are at a root node, so add PI and comment siblings
 */
  __pyx_t_1 = (__pyx_v_c_node->parent != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = _isElement(__pyx_v_c_node->parent);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":271
 *     cdef xmlNode* c_sibling
 *     if c_node.parent is not NULL and _isElement(c_node.parent):
 *         return             # <<<<<<<<<<<<<<
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":273
 *         return
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node             # <<<<<<<<<<<<<<
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 */
  __pyx_v_c_sibling = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":274
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node
 *     while c_sibling.prev != NULL and \             # <<<<<<<<<<<<<<
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_sibling->prev != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":275
 *     c_sibling = c_node
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \             # <<<<<<<<<<<<<<
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev
 */
      __pyx_t_1 = (__pyx_v_c_sibling->prev->type == XML_PI_NODE);
      if (!__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":276
 *     while c_sibling.prev != NULL and \
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.prev
 *     while c_sibling != c_node:
 */
        __pyx_t_2 = (__pyx_v_c_sibling->prev->type == XML_COMMENT_NODE);
        __pyx_t_4 = __pyx_t_2;
      } else {
        __pyx_t_4 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":277
 *             (c_sibling.prev.type == tree.XML_PI_NODE or \
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev             # <<<<<<<<<<<<<<
 *     while c_sibling != c_node:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->prev;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":278
 *                  c_sibling.prev.type == tree.XML_COMMENT_NODE):
 *         c_sibling = c_sibling.prev
 *     while c_sibling != c_node:             # <<<<<<<<<<<<<<
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_sibling != __pyx_v_c_node);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":280
 *     while c_sibling != c_node:
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)             # <<<<<<<<<<<<<<
 *         if pretty_print:
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 */
    xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":281
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)
 *         if pretty_print:             # <<<<<<<<<<<<<<
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 *         c_sibling = c_sibling.next
 */
    __pyx_t_1 = __pyx_v_pretty_print;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":282
 *                                pretty_print, encoding)
 *         if pretty_print:
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.next
 * 
 */
      xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_k_34);
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":283
 *         if pretty_print:
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 *         c_sibling = c_sibling.next             # <<<<<<<<<<<<<<
 * 
 * cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->next;
  }

  __pyx_L0:;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":285
 *         c_sibling = c_sibling.next
 * 
 * cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                              char* encoding, bint pretty_print) nogil:
 *     cdef xmlNode* c_sibling
 */

static  void __pyx_f_4lxml_5etree__writeNextSiblings(xmlOutputBuffer *__pyx_v_c_buffer, xmlNode *__pyx_v_c_node, char *__pyx_v_encoding, int __pyx_v_pretty_print) {
  xmlNode *__pyx_v_c_sibling;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":288
 *                              char* encoding, bint pretty_print) nogil:
 *     cdef xmlNode* c_sibling
 *     if c_node.parent is not NULL and _isElement(c_node.parent):             # <<<<<<<<<<<<<<
 *         return
 *     # we are at a root node, so add PI and comment siblings
 */
  __pyx_t_1 = (__pyx_v_c_node->parent != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = _isElement(__pyx_v_c_node->parent);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":289
 *     cdef xmlNode* c_sibling
 *     if c_node.parent is not NULL and _isElement(c_node.parent):
 *         return             # <<<<<<<<<<<<<<
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node.next
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":291
 *         return
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node.next             # <<<<<<<<<<<<<<
 *     while c_sibling != NULL and \
 *             (c_sibling.type == tree.XML_PI_NODE or \
 */
  __pyx_v_c_sibling = __pyx_v_c_node->next;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":292
 *     # we are at a root node, so add PI and comment siblings
 *     c_sibling = c_node.next
 *     while c_sibling != NULL and \             # <<<<<<<<<<<<<<
 *             (c_sibling.type == tree.XML_PI_NODE or \
 *                  c_sibling.type == tree.XML_COMMENT_NODE):
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_c_sibling != NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":293
 *     c_sibling = c_node.next
 *     while c_sibling != NULL and \
 *             (c_sibling.type == tree.XML_PI_NODE or \             # <<<<<<<<<<<<<<
 *                  c_sibling.type == tree.XML_COMMENT_NODE):
 *         if pretty_print:
 */
      __pyx_t_1 = (__pyx_v_c_sibling->type == XML_PI_NODE);
      if (!__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":294
 *     while c_sibling != NULL and \
 *             (c_sibling.type == tree.XML_PI_NODE or \
 *                  c_sibling.type == tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
 *         if pretty_print:
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 */
        __pyx_t_2 = (__pyx_v_c_sibling->type == XML_COMMENT_NODE);
        __pyx_t_4 = __pyx_t_2;
      } else {
        __pyx_t_4 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":295
 *             (c_sibling.type == tree.XML_PI_NODE or \
 *                  c_sibling.type == tree.XML_COMMENT_NODE):
 *         if pretty_print:             # <<<<<<<<<<<<<<
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 */
    __pyx_t_1 = __pyx_v_pretty_print;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":296
 *                  c_sibling.type == tree.XML_COMMENT_NODE):
 *         if pretty_print:
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")             # <<<<<<<<<<<<<<
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)
 */
      xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_k_34);
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":298
 *             tree.xmlOutputBufferWriteString(c_buffer, "\n")
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)             # <<<<<<<<<<<<<<
 *         c_sibling = c_sibling.next
 * 
 */
    xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_sibling, 0, __pyx_v_pretty_print, __pyx_v_encoding);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":299
 *         tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
 *                                pretty_print, encoding)
 *         c_sibling = c_sibling.next             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
    __pyx_v_c_sibling = __pyx_v_c_sibling->next;
  }

  __pyx_L0:;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":309
 *     cdef _ExceptionContext _exc_context
 *     cdef _ErrorLog error_log
 *     def __init__(self, filelike, exc_context=None, compression=None):             # <<<<<<<<<<<<<<
 *         if compression is not None and compression > 0:
 *             filelike = gzip.GzipFile(
 */

static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_15_FilelikeWriter___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filelike = 0;
  PyObject *__pyx_v_exc_context = 0;
  PyObject *__pyx_v_compression = 0;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filelike,&__pyx_n_s__exc_context,&__pyx_n_s__compression,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filelike);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_context);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compression);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_filelike = values[0];
    __pyx_v_exc_context = values[1];
    __pyx_v_compression = values[2];
  } else {
    __pyx_v_exc_context = ((PyObject *)Py_None);
    __pyx_v_compression = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_compression = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_exc_context = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_filelike = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._FilelikeWriter.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_filelike);
  __Pyx_INCREF(__pyx_v_exc_context);
  __Pyx_INCREF(__pyx_v_compression);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":310
 *     cdef _ErrorLog error_log
 *     def __init__(self, filelike, exc_context=None, compression=None):
 *         if compression is not None and compression > 0:             # <<<<<<<<<<<<<<
 *             filelike = gzip.GzipFile(
 *                 fileobj=filelike, mode=u'wb', compresslevel=compression)
 */
  __pyx_t_1 = (__pyx_v_compression != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":311
 *     def __init__(self, filelike, exc_context=None, compression=None):
 *         if compression is not None and compression > 0:
 *             filelike = gzip.GzipFile(             # <<<<<<<<<<<<<<
 *                 fileobj=filelike, mode=u'wb', compresslevel=compression)
 *             self._close_filelike = filelike.close
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":312
 *         if compression is not None and compression > 0:
 *             filelike = gzip.GzipFile(
 *                 fileobj=filelike, mode=u'wb', compresslevel=compression)             # <<<<<<<<<<<<<<
 *             self._close_filelike = filelike.close
 *         self._filelike = filelike
 */
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__fileobj), __pyx_v_filelike) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_u__wb)) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__compresslevel), __pyx_v_compression) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_filelike);
    __pyx_v_filelike = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":313
 *             filelike = gzip.GzipFile(
 *                 fileobj=filelike, mode=u'wb', compresslevel=compression)
 *             self._close_filelike = filelike.close             # <<<<<<<<<<<<<<
 *         self._filelike = filelike
 *         if exc_context is None:
 */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_filelike, __pyx_n_s__close); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_close_filelike);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_close_filelike);
    ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_close_filelike = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":314
 *                 fileobj=filelike, mode=u'wb', compresslevel=compression)
 *             self._close_filelike = filelike.close
 *         self._filelike = filelike             # <<<<<<<<<<<<<<
 *         if exc_context is None:
 *             self._exc_context = _ExceptionContext()
 */
  __Pyx_INCREF(__pyx_v_filelike);
  __Pyx_GIVEREF(__pyx_v_filelike);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_filelike);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_filelike);
  ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_filelike = __pyx_v_filelike;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":315
 *             self._close_filelike = filelike.close
 *         self._filelike = filelike
 *         if exc_context is None:             # <<<<<<<<<<<<<<
 *             self._exc_context = _ExceptionContext()
 *         else:
 */
  __pyx_t_4 = (__pyx_v_exc_context == Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":316
 *         self._filelike = filelike
 *         if exc_context is None:
 *             self._exc_context = _ExceptionContext()             # <<<<<<<<<<<<<<
 *         else:
 *             self._exc_context = exc_context
 */
    __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ExceptionContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context));
    ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":318
 *             self._exc_context = _ExceptionContext()
 *         else:
 *             self._exc_context = exc_context             # <<<<<<<<<<<<<<
 *         self.error_log = _ErrorLog()
 * 
 */
    if (!(likely(((__pyx_v_exc_context) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_exc_context, __pyx_ptype_4lxml_5etree__ExceptionContext))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_INCREF(__pyx_v_exc_context);
    __Pyx_GIVEREF(__pyx_v_exc_context);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context));
    ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context);
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":319
 *         else:
 *             self._exc_context = exc_context
 *         self.error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 * 
 *     cdef tree.xmlOutputBuffer* _createOutputBuffer(
 */
  __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->error_log);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->error_log));
  ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_self)->error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_6);
  __pyx_t_6 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._FilelikeWriter.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_filelike);
  __Pyx_DECREF(__pyx_v_exc_context);
  __Pyx_DECREF(__pyx_v_compression);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":321
 *         self.error_log = _ErrorLog()
 * 
 *     cdef tree.xmlOutputBuffer* _createOutputBuffer(             # <<<<<<<<<<<<<<
 *         self, tree.xmlCharEncodingHandler* enchandler) except NULL:
 *         cdef tree.xmlOutputBuffer* c_buffer
 */

static  xmlOutputBuffer *__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self, xmlCharEncodingHandler *__pyx_v_enchandler) {
  xmlOutputBuffer *__pyx_v_c_buffer;
  xmlOutputBuffer *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_createOutputBuffer");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":326
 *         c_buffer = tree.xmlOutputBufferCreateIO(
 *             _writeFilelikeWriter, _closeFilelikeWriter,
 *             <python.PyObject*>self, enchandler)             # <<<<<<<<<<<<<<
 *         if c_buffer is NULL:
 *             raise IOError, u"Could not create I/O writer context."
 */
  __pyx_v_c_buffer = xmlOutputBufferCreateIO(__pyx_f_4lxml_5etree__writeFilelikeWriter, __pyx_f_4lxml_5etree__closeFilelikeWriter, ((PyObject *)__pyx_v_self), __pyx_v_enchandler);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":327
 *             _writeFilelikeWriter, _closeFilelikeWriter,
 *             <python.PyObject*>self, enchandler)
 *         if c_buffer is NULL:             # <<<<<<<<<<<<<<
 *             raise IOError, u"Could not create I/O writer context."
 *         return c_buffer
 */
  __pyx_t_1 = (__pyx_v_c_buffer == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":328
 *             <python.PyObject*>self, enchandler)
 *         if c_buffer is NULL:
 *             raise IOError, u"Could not create I/O writer context."             # <<<<<<<<<<<<<<
 *         return c_buffer
 * 
 */
    __Pyx_Raise(__pyx_builtin_IOError, ((PyObject *)__pyx_kp_u_216), 0);
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":329
 *         if c_buffer is NULL:
 *             raise IOError, u"Could not create I/O writer context."
 *         return c_buffer             # <<<<<<<<<<<<<<
 * 
 *     cdef int write(self, char* c_buffer, int size):
 */
  __pyx_r = __pyx_v_c_buffer;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._FilelikeWriter._createOutputBuffer");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":331
 *         return c_buffer
 * 
 *     cdef int write(self, char* c_buffer, int size):             # <<<<<<<<<<<<<<
 *         try:
 *             if self._filelike is None:
 */

static  int __pyx_f_4lxml_5etree_15_FilelikeWriter_write(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self, char *__pyx_v_c_buffer, int __pyx_v_size) {
  PyObject *__pyx_v_py_buffer;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("write");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_py_buffer = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":332
 * 
 *     cdef int write(self, char* c_buffer, int size):
 *         try:             # <<<<<<<<<<<<<<
 *             if self._filelike is None:
 *                 raise IOError, u"File is already closed"
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":333
 *     cdef int write(self, char* c_buffer, int size):
 *         try:
 *             if self._filelike is None:             # <<<<<<<<<<<<<<
 *                 raise IOError, u"File is already closed"
 *             py_buffer = python.PyString_FromStringAndSize(c_buffer, size)
 */
      __pyx_t_1 = (__pyx_v_self->_filelike == Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":334
 *         try:
 *             if self._filelike is None:
 *                 raise IOError, u"File is already closed"             # <<<<<<<<<<<<<<
 *             py_buffer = python.PyString_FromStringAndSize(c_buffer, size)
 *             self._filelike.write(py_buffer)
 */
        __Pyx_Raise(__pyx_builtin_IOError, ((PyObject *)__pyx_kp_u_217), 0);
        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":335
 *             if self._filelike is None:
 *                 raise IOError, u"File is already closed"
 *             py_buffer = python.PyString_FromStringAndSize(c_buffer, size)             # <<<<<<<<<<<<<<
 *             self._filelike.write(py_buffer)
 *             return size
 */
      __pyx_t_2 = PyString_FromStringAndSize(__pyx_v_c_buffer, __pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_py_buffer);
      __pyx_v_py_buffer = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":336
 *                 raise IOError, u"File is already closed"
 *             py_buffer = python.PyString_FromStringAndSize(c_buffer, size)
 *             self._filelike.write(py_buffer)             # <<<<<<<<<<<<<<
 *             return size
 *         except:
 */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->_filelike, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_py_buffer);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_py_buffer);
      __Pyx_GIVEREF(__pyx_v_py_buffer);
      __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":337
 *             py_buffer = python.PyString_FromStringAndSize(c_buffer, size)
 *             self._filelike.write(py_buffer)
 *             return size             # <<<<<<<<<<<<<<
 *         except:
 *             self._exc_context._store_raised()
 */
      __pyx_r = __pyx_v_size;
      goto __pyx_L7_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":338
 *             self._filelike.write(py_buffer)
 *             return size
 *         except:             # <<<<<<<<<<<<<<
 *             self._exc_context._store_raised()
 *             return -1
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._FilelikeWriter.write");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":339
 *             return size
 *         except:
 *             self._exc_context._store_raised()             # <<<<<<<<<<<<<<
 *             return -1
 * 
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":340
 *         except:
 *             self._exc_context._store_raised()
 *             return -1             # <<<<<<<<<<<<<<
 * 
 *     cdef int close(self):
 */
      __pyx_r = -1;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_except_return;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._FilelikeWriter.write");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_py_buffer);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":342
 *             return -1
 * 
 *     cdef int close(self):             # <<<<<<<<<<<<<<
 *         try:
 *             if self._close_filelike is not None:
 */

static  int __pyx_f_4lxml_5etree_15_FilelikeWriter_close(struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("close");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":343
 * 
 *     cdef int close(self):
 *         try:             # <<<<<<<<<<<<<<
 *             if self._close_filelike is not None:
 *                 self._close_filelike()
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":344
 *     cdef int close(self):
 *         try:
 *             if self._close_filelike is not None:             # <<<<<<<<<<<<<<
 *                 self._close_filelike()
 *             # we should not close the file here as we didn't open it
 */
      __pyx_t_1 = (__pyx_v_self->_close_filelike != Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":345
 *         try:
 *             if self._close_filelike is not None:
 *                 self._close_filelike()             # <<<<<<<<<<<<<<
 *             # we should not close the file here as we didn't open it
 *             self._filelike = None
 */
        __pyx_t_2 = PyObject_Call(__pyx_v_self->_close_filelike, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":347
 *                 self._close_filelike()
 *             # we should not close the file here as we didn't open it
 *             self._filelike = None             # <<<<<<<<<<<<<<
 *             return 0
 *         except:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_filelike);
      __Pyx_DECREF(__pyx_v_self->_filelike);
      __pyx_v_self->_filelike = Py_None;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":348
 *             # we should not close the file here as we didn't open it
 *             self._filelike = None
 *             return 0             # <<<<<<<<<<<<<<
 *         except:
 *             self._exc_context._store_raised()
 */
      __pyx_r = 0;
      goto __pyx_L7_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":349
 *             self._filelike = None
 *             return 0
 *         except:             # <<<<<<<<<<<<<<
 *             self._exc_context._store_raised()
 *             return -1
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._FilelikeWriter.close");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":350
 *             return 0
 *         except:
 *             self._exc_context._store_raised()             # <<<<<<<<<<<<<<
 *             return -1
 * 
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc_context->__pyx_vtab)->_store_raised(__pyx_v_self->_exc_context);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":351
 *         except:
 *             self._exc_context._store_raised()
 *             return -1             # <<<<<<<<<<<<<<
 * 
 * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):
 */
      __pyx_r = -1;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_except_return;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._FilelikeWriter.close");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":353
 *             return -1
 * 
 * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):             # <<<<<<<<<<<<<<
 *     return (<_FilelikeWriter>ctxt).write(c_buffer, len)
 * 
 */

static  int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_len) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_writeFilelikeWriter");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":354
 * 
 * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):
 *     return (<_FilelikeWriter>ctxt).write(c_buffer, len)             # <<<<<<<<<<<<<<
 * 
 * cdef int _closeFilelikeWriter(void* ctxt):
 */
  __pyx_r = ((struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *)((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt)->__pyx_vtab)->write(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_len);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":356
 *     return (<_FilelikeWriter>ctxt).write(c_buffer, len)
 * 
 * cdef int _closeFilelikeWriter(void* ctxt):             # <<<<<<<<<<<<<<
 *     return (<_FilelikeWriter>ctxt).close()
 * 
 */

static  int __pyx_f_4lxml_5etree__closeFilelikeWriter(void *__pyx_v_ctxt) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("_closeFilelikeWriter");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":357
 * 
 * cdef int _closeFilelikeWriter(void* ctxt):
 *     return (<_FilelikeWriter>ctxt).close()             # <<<<<<<<<<<<<<
 * 
 * cdef _tofilelike(f, _Element element, encoding, method,
 */
  __pyx_r = ((struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *)((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt)->__pyx_vtab)->close(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt));
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":359
 *     return (<_FilelikeWriter>ctxt).close()
 * 
 * cdef _tofilelike(f, _Element element, encoding, method,             # <<<<<<<<<<<<<<
 *                  bint write_xml_declaration, bint write_doctype,
 *                  bint pretty_print, bint with_tail, int standalone,
 */

static  PyObject *__pyx_f_4lxml_5etree__tofilelike(PyObject *__pyx_v_f, struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_encoding, PyObject *__pyx_v_method, int __pyx_v_write_xml_declaration, int __pyx_v_write_doctype, int __pyx_v_pretty_print, int __pyx_v_with_tail, int __pyx_v_standalone, int __pyx_v_compression) {
  PyThreadState *__pyx_v_state;
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_writer;
  xmlOutputBuffer *__pyx_v_c_buffer;
  xmlCharEncodingHandler *__pyx_v_enchandler;
  char *__pyx_v_c_enc;
  int __pyx_v_error_result;
  PyObject *__pyx_v_c_method;
  PyObject *__pyx_v_data;
  PyObject *__pyx_v_bytes_out;
  PyObject *__pyx_v_gzip_file;
  PyObject *__pyx_v_filename8;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  xmlOutputBuffer *__pyx_t_6;
  __Pyx_RefNannySetupContext("_tofilelike");
  __Pyx_INCREF(__pyx_v_f);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_method);
  __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_c_method = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_bytes_out = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_gzip_file = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_filename8 = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":363
 *                  bint pretty_print, bint with_tail, int standalone,
 *                  int compression):
 *     cdef python.PyThreadState* state = NULL             # <<<<<<<<<<<<<<
 *     cdef _FilelikeWriter writer
 *     cdef tree.xmlOutputBuffer* c_buffer
 */
  __pyx_v_state = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":369
 *     cdef char* c_enc
 *     cdef int error_result
 *     if encoding is None:             # <<<<<<<<<<<<<<
 *         c_enc = NULL
 *     else:
 */
  __pyx_t_1 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":370
 *     cdef int error_result
 *     if encoding is None:
 *         c_enc = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         encoding = _utf8(encoding)
 */
    __pyx_v_c_enc = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":372
 *         c_enc = NULL
 *     else:
 *         encoding = _utf8(encoding)             # <<<<<<<<<<<<<<
 *         c_enc = _cstr(encoding)
 *     c_method = _findOutputMethod(method)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_encoding); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_encoding);
    __pyx_v_encoding = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":373
 *     else:
 *         encoding = _utf8(encoding)
 *         c_enc = _cstr(encoding)             # <<<<<<<<<<<<<<
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:
 */
    __pyx_v_c_enc = PyString_AS_STRING(__pyx_v_encoding);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":374
 *         encoding = _utf8(encoding)
 *         c_enc = _cstr(encoding)
 *     c_method = _findOutputMethod(method)             # <<<<<<<<<<<<<<
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         data = _textToString(element._c_node, encoding, with_tail)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__findOutputMethod(__pyx_v_method); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyInt_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_c_method);
  __pyx_v_c_method = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":375
 *         c_enc = _cstr(encoding)
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:             # <<<<<<<<<<<<<<
 *         data = _textToString(element._c_node, encoding, with_tail)
 *         if compression:
 */
  __pyx_t_2 = PyInt_FromLong(__pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_c_method, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":376
 *     c_method = _findOutputMethod(method)
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         data = _textToString(element._c_node, encoding, with_tail)             # <<<<<<<<<<<<<<
 *         if compression:
 *             bytes_out = BytesIO()
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__textToString(__pyx_v_element->_c_node, __pyx_v_encoding, __pyx_v_with_tail); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_data);
    __pyx_v_data = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":377
 *     if c_method == OUTPUT_METHOD_TEXT:
 *         data = _textToString(element._c_node, encoding, with_tail)
 *         if compression:             # <<<<<<<<<<<<<<
 *             bytes_out = BytesIO()
 *             gzip_file = gzip.GzipFile(
 */
    __pyx_t_3 = __pyx_v_compression;
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":378
 *         data = _textToString(element._c_node, encoding, with_tail)
 *         if compression:
 *             bytes_out = BytesIO()             # <<<<<<<<<<<<<<
 *             gzip_file = gzip.GzipFile(
 *                 fileobj=bytes_out, mode=u'wb', compresslevel=compression)
 */
      __pyx_t_4 = PyObject_Call(__pyx_v_4lxml_5etree_BytesIO, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_bytes_out);
      __pyx_v_bytes_out = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":379
 *         if compression:
 *             bytes_out = BytesIO()
 *             gzip_file = gzip.GzipFile(             # <<<<<<<<<<<<<<
 *                 fileobj=bytes_out, mode=u'wb', compresslevel=compression)
 *             try:
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":380
 *             bytes_out = BytesIO()
 *             gzip_file = gzip.GzipFile(
 *                 fileobj=bytes_out, mode=u'wb', compresslevel=compression)             # <<<<<<<<<<<<<<
 *             try:
 *                 gzip_file.write(data)
 */
      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__fileobj), __pyx_v_bytes_out) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_u__wb)) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_5 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__compresslevel), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_gzip_file);
      __pyx_v_gzip_file = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":381
 *             gzip_file = gzip.GzipFile(
 *                 fileobj=bytes_out, mode=u'wb', compresslevel=compression)
 *             try:             # <<<<<<<<<<<<<<
 *                 gzip_file.write(data)
 *             finally:
 */
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":382
 *                 fileobj=bytes_out, mode=u'wb', compresslevel=compression)
 *             try:
 *                 gzip_file.write(data)             # <<<<<<<<<<<<<<
 *             finally:
 *                 gzip_file.close()
 */
        __pyx_t_5 = PyObject_GetAttr(__pyx_v_gzip_file, __pyx_n_s__write); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
        __Pyx_GIVEREF(__pyx_v_data);
        __pyx_t_4 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      /*finally:*/ {
        int __pyx_why;
        PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
        int __pyx_exc_lineno;
        __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
        __pyx_why = 0; goto __pyx_L8;
        __pyx_L7: {
          __pyx_why = 4;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
          __pyx_exc_lineno = __pyx_lineno;
          goto __pyx_L8;
        }
        __pyx_L8:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":384
 *                 gzip_file.write(data)
 *             finally:
 *                 gzip_file.close()             # <<<<<<<<<<<<<<
 *             data = bytes_out
 *         if _isString(f):
 */
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_gzip_file, __pyx_n_s__close); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L10;
        __pyx_L9_error:;
        if (__pyx_why == 4) {
          Py_XDECREF(__pyx_exc_type);
          Py_XDECREF(__pyx_exc_value);
          Py_XDECREF(__pyx_exc_tb);
        }
        goto __pyx_L1_error;
        __pyx_L10:;
        switch (__pyx_why) {
          case 4: {
            __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
            __pyx_lineno = __pyx_exc_lineno;
            __pyx_exc_type = 0;
            __pyx_exc_value = 0;
            __pyx_exc_tb = 0;
            goto __pyx_L1_error;
          }
        }
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":385
 *             finally:
 *                 gzip_file.close()
 *             data = bytes_out             # <<<<<<<<<<<<<<
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)
 */
      __Pyx_INCREF(__pyx_v_bytes_out);
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = __pyx_v_bytes_out;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":386
 *                 gzip_file.close()
 *             data = bytes_out
 *         if _isString(f):             # <<<<<<<<<<<<<<
 *             filename8 = _encodeFilename(f)
 *             f = open(filename8, u'wb')
 */
    __pyx_t_1 = _isString(__pyx_v_f);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":387
 *             data = bytes_out
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)             # <<<<<<<<<<<<<<
 *             f = open(filename8, u'wb')
 *             try:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_filename8);
      __pyx_v_filename8 = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":388
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)
 *             f = open(filename8, u'wb')             # <<<<<<<<<<<<<<
 *             try:
 *                 f.write(data)
 */
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_filename8);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_filename8);
      __Pyx_GIVEREF(__pyx_v_filename8);
      __Pyx_INCREF(((PyObject *)__pyx_n_u__wb));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_u__wb));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_u__wb));
      __pyx_t_4 = PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_f);
      __pyx_v_f = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":389
 *             filename8 = _encodeFilename(f)
 *             f = open(filename8, u'wb')
 *             try:             # <<<<<<<<<<<<<<
 *                 f.write(data)
 *             finally:
 */
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":390
 *             f = open(filename8, u'wb')
 *             try:
 *                 f.write(data)             # <<<<<<<<<<<<<<
 *             finally:
 *                 f.close()
 */
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L13;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L13;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_v_data);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
        __Pyx_GIVEREF(__pyx_v_data);
        __pyx_t_5 = PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L13;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      /*finally:*/ {
        int __pyx_why;
        PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
        int __pyx_exc_lineno;
        __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
        __pyx_why = 0; goto __pyx_L14;
        __pyx_L13: {
          __pyx_why = 4;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
          __pyx_exc_lineno = __pyx_lineno;
          goto __pyx_L14;
        }
        __pyx_L14:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":392
 *                 f.write(data)
 *             finally:
 *                 f.close()             # <<<<<<<<<<<<<<
 *         else:
 *             f.write(data)
 */
        __pyx_t_5 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L16;
        __pyx_L15_error:;
        if (__pyx_why == 4) {
          Py_XDECREF(__pyx_exc_type);
          Py_XDECREF(__pyx_exc_value);
          Py_XDECREF(__pyx_exc_tb);
        }
        goto __pyx_L1_error;
        __pyx_L16:;
        switch (__pyx_why) {
          case 4: {
            __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
            __pyx_lineno = __pyx_exc_lineno;
            __pyx_exc_type = 0;
            __pyx_exc_value = 0;
            __pyx_exc_tb = 0;
            goto __pyx_L1_error;
          }
        }
      }
      goto __pyx_L11;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":394
 *                 f.close()
 *         else:
 *             f.write(data)             # <<<<<<<<<<<<<<
 *         return
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 */
      __pyx_t_2 = PyObject_GetAttr(__pyx_v_f, __pyx_n_s__write); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_data);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":395
 *         else:
 *             f.write(data)
 *         return             # <<<<<<<<<<<<<<
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 *     if enchandler is NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":396
 *             f.write(data)
 *         return
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)             # <<<<<<<<<<<<<<
 *     if enchandler is NULL:
 *         if encoding is not None:
 */
  __pyx_v_enchandler = xmlFindCharEncodingHandler(__pyx_v_c_enc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":397
 *         return
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 *     if enchandler is NULL:             # <<<<<<<<<<<<<<
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')
 */
  __pyx_t_1 = (__pyx_v_enchandler == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":398
 *     enchandler = tree.xmlFindCharEncodingHandler(c_enc)
 *     if enchandler is NULL:
 *         if encoding is not None:             # <<<<<<<<<<<<<<
 *             encoding = encoding.decode(u'UTF-8')
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 */
    __pyx_t_1 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":399
 *     if enchandler is NULL:
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')             # <<<<<<<<<<<<<<
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 * 
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__decode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_kp_u_20));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_20));
      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_20));
      __pyx_t_2 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_encoding);
      __pyx_v_encoding = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L18;
    }
    __pyx_L18:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":400
 *         if encoding is not None:
 *             encoding = encoding.decode(u'UTF-8')
 *         raise LookupError, u"unknown encoding: '%s'" % encoding             # <<<<<<<<<<<<<<
 * 
 *     if _isString(f):
 */
    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_143), __pyx_v_encoding); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_builtin_LookupError, __pyx_t_2, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":402
 *         raise LookupError, u"unknown encoding: '%s'" % encoding
 * 
 *     if _isString(f):             # <<<<<<<<<<<<<<
 *         filename8 = _encodeFilename(f)
 *         c_buffer = tree.xmlOutputBufferCreateFilename(
 */
  __pyx_t_1 = _isString(__pyx_v_f);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":403
 * 
 *     if _isString(f):
 *         filename8 = _encodeFilename(f)             # <<<<<<<<<<<<<<
 *         c_buffer = tree.xmlOutputBufferCreateFilename(
 *             _cstr(filename8), enchandler, compression)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_filename8);
    __pyx_v_filename8 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":405
 *         filename8 = _encodeFilename(f)
 *         c_buffer = tree.xmlOutputBufferCreateFilename(
 *             _cstr(filename8), enchandler, compression)             # <<<<<<<<<<<<<<
 *         if c_buffer is NULL:
 *             return python.PyErr_SetFromErrno(IOError)
 */
    __pyx_v_c_buffer = xmlOutputBufferCreateFilename(PyString_AS_STRING(__pyx_v_filename8), __pyx_v_enchandler, __pyx_v_compression);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":406
 *         c_buffer = tree.xmlOutputBufferCreateFilename(
 *             _cstr(filename8), enchandler, compression)
 *         if c_buffer is NULL:             # <<<<<<<<<<<<<<
 *             return python.PyErr_SetFromErrno(IOError)
 *         state = python.PyEval_SaveThread()
 */
    __pyx_t_1 = (__pyx_v_c_buffer == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":407
 *             _cstr(filename8), enchandler, compression)
 *         if c_buffer is NULL:
 *             return python.PyErr_SetFromErrno(IOError)             # <<<<<<<<<<<<<<
 *         state = python.PyEval_SaveThread()
 *     elif hasattr(f, u'write'):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyErr_SetFromErrno(__pyx_builtin_IOError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L20;
    }
    __pyx_L20:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":408
 *         if c_buffer is NULL:
 *             return python.PyErr_SetFromErrno(IOError)
 *         state = python.PyEval_SaveThread()             # <<<<<<<<<<<<<<
 *     elif hasattr(f, u'write'):
 *         writer   = _FilelikeWriter(f, compression=compression)
 */
    __pyx_v_state = PyEval_SaveThread();
    goto __pyx_L19;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":409
 *             return python.PyErr_SetFromErrno(IOError)
 *         state = python.PyEval_SaveThread()
 *     elif hasattr(f, u'write'):             # <<<<<<<<<<<<<<
 *         writer   = _FilelikeWriter(f, compression=compression)
 *         c_buffer = writer._createOutputBuffer(enchandler)
 */
  __pyx_t_1 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_u__write)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":410
 *         state = python.PyEval_SaveThread()
 *     elif hasattr(f, u'write'):
 *         writer   = _FilelikeWriter(f, compression=compression)             # <<<<<<<<<<<<<<
 *         c_buffer = writer._createOutputBuffer(enchandler)
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_f);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_f);
    __Pyx_GIVEREF(__pyx_v_f);
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    __pyx_t_4 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__compression), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FilelikeWriter)), __pyx_t_2, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_writer));
    __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":411
 *     elif hasattr(f, u'write'):
 *         writer   = _FilelikeWriter(f, compression=compression)
 *         c_buffer = writer._createOutputBuffer(enchandler)             # <<<<<<<<<<<<<<
 *     else:
 *         tree.xmlCharEncCloseFunc(enchandler)
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *)__pyx_v_writer->__pyx_vtab)->_createOutputBuffer(__pyx_v_writer, __pyx_v_enchandler); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_c_buffer = __pyx_t_6;
    goto __pyx_L19;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":413
 *         c_buffer = writer._createOutputBuffer(enchandler)
 *     else:
 *         tree.xmlCharEncCloseFunc(enchandler)             # <<<<<<<<<<<<<<
 *         raise TypeError, \
 *             u"File or filename expected, got '%s'" % funicode(python._fqtypename(f))
 */
    xmlCharEncCloseFunc(__pyx_v_enchandler);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":415
 *         tree.xmlCharEncCloseFunc(enchandler)
 *         raise TypeError, \
 *             u"File or filename expected, got '%s'" % funicode(python._fqtypename(f))             # <<<<<<<<<<<<<<
 * 
 *     _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(_fqtypename(__pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_218), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_5, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L19:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":417
 *             u"File or filename expected, got '%s'" % funicode(python._fqtypename(f))
 * 
 *     _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,             # <<<<<<<<<<<<<<
 *                        write_xml_declaration, write_doctype,
 *                        pretty_print, with_tail, standalone)
 */
  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_c_method); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":419
 *     _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_method,
 *                        write_xml_declaration, write_doctype,
 *                        pretty_print, with_tail, standalone)             # <<<<<<<<<<<<<<
 *     error_result = c_buffer.error
 *     if error_result == xmlerror.XML_ERR_OK:
 */
  __pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_c_buffer, __pyx_v_element->_c_node, __pyx_v_c_enc, __pyx_t_3, __pyx_v_write_xml_declaration, __pyx_v_write_doctype, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":420
 *                        write_xml_declaration, write_doctype,
 *                        pretty_print, with_tail, standalone)
 *     error_result = c_buffer.error             # <<<<<<<<<<<<<<
 *     if error_result == xmlerror.XML_ERR_OK:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 */
  __pyx_v_error_result = __pyx_v_c_buffer->error;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":421
 *                        pretty_print, with_tail, standalone)
 *     error_result = c_buffer.error
 *     if error_result == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 *         if error_result > 0:
 */
  __pyx_t_1 = (__pyx_v_error_result == XML_ERR_OK);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":422
 *     error_result = c_buffer.error
 *     if error_result == xmlerror.XML_ERR_OK:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *         if error_result > 0:
 *             error_result = xmlerror.XML_ERR_OK
 */
    __pyx_v_error_result = xmlOutputBufferClose(__pyx_v_c_buffer);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":423
 *     if error_result == xmlerror.XML_ERR_OK:
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 *         if error_result > 0:             # <<<<<<<<<<<<<<
 *             error_result = xmlerror.XML_ERR_OK
 *     else:
 */
    __pyx_t_1 = (__pyx_v_error_result > 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":424
 *         error_result = tree.xmlOutputBufferClose(c_buffer)
 *         if error_result > 0:
 *             error_result = xmlerror.XML_ERR_OK             # <<<<<<<<<<<<<<
 *     else:
 *         tree.xmlOutputBufferClose(c_buffer)
 */
      __pyx_v_error_result = XML_ERR_OK;
      goto __pyx_L22;
    }
    __pyx_L22:;
    goto __pyx_L21;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":426
 *             error_result = xmlerror.XML_ERR_OK
 *     else:
 *         tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *     if writer is None:
 *         python.PyEval_RestoreThread(state)
 */
    xmlOutputBufferClose(__pyx_v_c_buffer);
  }
  __pyx_L21:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":427
 *     else:
 *         tree.xmlOutputBufferClose(c_buffer)
 *     if writer is None:             # <<<<<<<<<<<<<<
 *         python.PyEval_RestoreThread(state)
 *     else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_writer) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":428
 *         tree.xmlOutputBufferClose(c_buffer)
 *     if writer is None:
 *         python.PyEval_RestoreThread(state)             # <<<<<<<<<<<<<<
 *     else:
 *         writer._exc_context._raise_if_stored()
 */
    PyEval_RestoreThread(__pyx_v_state);
    goto __pyx_L23;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":430
 *         python.PyEval_RestoreThread(state)
 *     else:
 *         writer._exc_context._raise_if_stored()             # <<<<<<<<<<<<<<
 *     if error_result != xmlerror.XML_ERR_OK:
 *         _raiseSerialisationError(error_result)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L23:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":431
 *     else:
 *         writer._exc_context._raise_if_stored()
 *     if error_result != xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *         _raiseSerialisationError(error_result)
 * 
 */
  __pyx_t_1 = (__pyx_v_error_result != XML_ERR_OK);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":432
 *         writer._exc_context._raise_if_stored()
 *     if error_result != xmlerror.XML_ERR_OK:
 *         _raiseSerialisationError(error_result)             # <<<<<<<<<<<<<<
 * 
 * cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L24;
  }
  __pyx_L24:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._tofilelike");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_writer);
  __Pyx_DECREF(__pyx_v_c_method);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_DECREF(__pyx_v_bytes_out);
  __Pyx_DECREF(__pyx_v_gzip_file);
  __Pyx_DECREF(__pyx_v_filename8);
  __Pyx_DECREF(__pyx_v_f);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_method);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":434
 *         _raiseSerialisationError(error_result)
 * 
 * cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,             # <<<<<<<<<<<<<<
 *                      int compression):
 *     cdef _FilelikeWriter writer
 */

static  PyObject *__pyx_f_4lxml_5etree__tofilelikeC14N(PyObject *__pyx_v_f, struct LxmlElement *__pyx_v_element, int __pyx_v_exclusive, int __pyx_v_with_comments, int __pyx_v_compression) {
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *__pyx_v_writer;
  xmlOutputBuffer *__pyx_v_c_buffer;
  char *__pyx_v_c_filename;
  xmlDoc *__pyx_v_c_base_doc;
  xmlDoc *__pyx_v_c_doc;
  int __pyx_v_bytes;
  PyObject *__pyx_v_filename8;
  PyObject *__pyx_v_message;
  PyObject *__pyx_v_errors;
  PyObject *__pyx_r = NULL;
  xmlDoc *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  xmlOutputBuffer *__pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  __Pyx_RefNannySetupContext("_tofilelikeC14N");
  __Pyx_INCREF(__pyx_v_f);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_filename8 = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_errors = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":441
 *     cdef xmlDoc* c_base_doc
 *     cdef xmlDoc* c_doc
 *     cdef int bytes = -1             # <<<<<<<<<<<<<<
 * 
 *     c_base_doc = element._c_node.doc
 */
  __pyx_v_bytes = -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":443
 *     cdef int bytes = -1
 * 
 *     c_base_doc = element._c_node.doc             # <<<<<<<<<<<<<<
 *     c_doc = _fakeRootDoc(c_base_doc, element._c_node)
 *     try:
 */
  __pyx_v_c_base_doc = __pyx_v_element->_c_node->doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":444
 * 
 *     c_base_doc = element._c_node.doc
 *     c_doc = _fakeRootDoc(c_base_doc, element._c_node)             # <<<<<<<<<<<<<<
 *     try:
 *         if _isString(f):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_c_base_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":445
 *     c_base_doc = element._c_node.doc
 *     c_doc = _fakeRootDoc(c_base_doc, element._c_node)
 *     try:             # <<<<<<<<<<<<<<
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":446
 *     c_doc = _fakeRootDoc(c_base_doc, element._c_node)
 *     try:
 *         if _isString(f):             # <<<<<<<<<<<<<<
 *             filename8 = _encodeFilename(f)
 *             c_filename = _cstr(filename8)
 */
    __pyx_t_2 = _isString(__pyx_v_f);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":447
 *     try:
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)             # <<<<<<<<<<<<<<
 *             c_filename = _cstr(filename8)
 *             with nogil:
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_filename8);
      __pyx_v_filename8 = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":448
 *         if _isString(f):
 *             filename8 = _encodeFilename(f)
 *             c_filename = _cstr(filename8)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, NULL,
 */
      __pyx_v_c_filename = PyString_AS_STRING(__pyx_v_filename8);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":449
 *             filename8 = _encodeFilename(f)
 *             c_filename = _cstr(filename8)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, NULL,
 *                                             with_comments, c_filename, compression)
 */
      { PyThreadState *_save;
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":451
 *             with nogil:
 *                 bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, NULL,
 *                                             with_comments, c_filename, compression)             # <<<<<<<<<<<<<<
 *         elif hasattr(f, u'write'):
 *             writer   = _FilelikeWriter(f, compression=compression)
 */
          __pyx_v_bytes = xmlC14NDocSave(__pyx_v_c_doc, NULL, __pyx_v_exclusive, NULL, __pyx_v_with_comments, __pyx_v_c_filename, __pyx_v_compression);
        }
        /*finally:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":449
 *             filename8 = _encodeFilename(f)
 *             c_filename = _cstr(filename8)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, NULL,
 *                                             with_comments, c_filename, compression)
 */
          Py_BLOCK_THREADS
        }
      }
      goto __pyx_L6;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":452
 *                 bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, NULL,
 *                                             with_comments, c_filename, compression)
 *         elif hasattr(f, u'write'):             # <<<<<<<<<<<<<<
 *             writer   = _FilelikeWriter(f, compression=compression)
 *             c_buffer = writer._createOutputBuffer(NULL)
 */
    __pyx_t_2 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_u__write)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L4;}
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":453
 *                                             with_comments, c_filename, compression)
 *         elif hasattr(f, u'write'):
 *             writer   = _FilelikeWriter(f, compression=compression)             # <<<<<<<<<<<<<<
 *             c_buffer = writer._createOutputBuffer(NULL)
 *             writer.error_log.connect()
 */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_f);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_f);
      __Pyx_GIVEREF(__pyx_v_f);
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_5 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__compression), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FilelikeWriter)), __pyx_t_3, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_v_writer));
      __pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_5);
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":454
 *         elif hasattr(f, u'write'):
 *             writer   = _FilelikeWriter(f, compression=compression)
 *             c_buffer = writer._createOutputBuffer(NULL)             # <<<<<<<<<<<<<<
 *             writer.error_log.connect()
 *             bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, NULL,
 */
      __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter *)__pyx_v_writer->__pyx_vtab)->_createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __pyx_v_c_buffer = __pyx_t_6;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":455
 *             writer   = _FilelikeWriter(f, compression=compression)
 *             c_buffer = writer._createOutputBuffer(NULL)
 *             writer.error_log.connect()             # <<<<<<<<<<<<<<
 *             bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, NULL,
 *                                           with_comments, c_buffer)
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_writer->error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(__pyx_v_writer->error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":457
 *             writer.error_log.connect()
 *             bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, NULL,
 *                                           with_comments, c_buffer)             # <<<<<<<<<<<<<<
 *             writer.error_log.disconnect()
 *             if bytes >= 0:
 */
      __pyx_v_bytes = xmlC14NDocSaveTo(__pyx_v_c_doc, NULL, __pyx_v_exclusive, NULL, __pyx_v_with_comments, __pyx_v_c_buffer);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":458
 *             bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, NULL,
 *                                           with_comments, c_buffer)
 *             writer.error_log.disconnect()             # <<<<<<<<<<<<<<
 *             if bytes >= 0:
 *                 bytes = tree.xmlOutputBufferClose(c_buffer)
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_writer->error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(__pyx_v_writer->error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":459
 *                                           with_comments, c_buffer)
 *             writer.error_log.disconnect()
 *             if bytes >= 0:             # <<<<<<<<<<<<<<
 *                 bytes = tree.xmlOutputBufferClose(c_buffer)
 *             else:
 */
      __pyx_t_2 = (__pyx_v_bytes >= 0);
      if (__pyx_t_2) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":460
 *             writer.error_log.disconnect()
 *             if bytes >= 0:
 *                 bytes = tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *             else:
 *                 tree.xmlOutputBufferClose(c_buffer)
 */
        __pyx_v_bytes = xmlOutputBufferClose(__pyx_v_c_buffer);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":462
 *                 bytes = tree.xmlOutputBufferClose(c_buffer)
 *             else:
 *                 tree.xmlOutputBufferClose(c_buffer)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError, \
 */
        xmlOutputBufferClose(__pyx_v_c_buffer);
      }
      __pyx_L10:;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":465
 *         else:
 *             raise TypeError, \
 *                 u"File or filename expected, got '%s'" % funicode(python._fqtypename(f))             # <<<<<<<<<<<<<<
 *     finally:
 *         _destroyFakeDoc(c_base_doc, c_doc)
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree_funicode(_fqtypename(__pyx_v_f)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_218), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_4, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[4]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4;}
    }
    __pyx_L6:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L5;
    __pyx_L4: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":467
 *                 u"File or filename expected, got '%s'" % funicode(python._fqtypename(f))
 *     finally:
 *         _destroyFakeDoc(c_base_doc, c_doc)             # <<<<<<<<<<<<<<
 * 
 *     if writer is not None:
 */
    __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":469
 *         _destroyFakeDoc(c_base_doc, c_doc)
 * 
 *     if writer is not None:             # <<<<<<<<<<<<<<
 *         writer._exc_context._raise_if_stored()
 * 
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_writer) != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":470
 * 
 *     if writer is not None:
 *         writer._exc_context._raise_if_stored()             # <<<<<<<<<<<<<<
 * 
 *     if bytes < 0:
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":472
 *         writer._exc_context._raise_if_stored()
 * 
 *     if bytes < 0:             # <<<<<<<<<<<<<<
 *         message = u"C14N failed"
 *         if writer is not None:
 */
  __pyx_t_2 = (__pyx_v_bytes < 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":473
 * 
 *     if bytes < 0:
 *         message = u"C14N failed"             # <<<<<<<<<<<<<<
 *         if writer is not None:
 *             errors = writer.error_log
 */
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_219));
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = ((PyObject *)__pyx_kp_u_219);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":474
 *     if bytes < 0:
 *         message = u"C14N failed"
 *         if writer is not None:             # <<<<<<<<<<<<<<
 *             errors = writer.error_log
 *             if len(errors):
 */
    __pyx_t_2 = (((PyObject *)__pyx_v_writer) != Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":475
 *         message = u"C14N failed"
 *         if writer is not None:
 *             errors = writer.error_log             # <<<<<<<<<<<<<<
 *             if len(errors):
 *                 message = errors[0].message
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_writer->error_log));
      __Pyx_DECREF(__pyx_v_errors);
      __pyx_v_errors = ((PyObject *)__pyx_v_writer->error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":476
 *         if writer is not None:
 *             errors = writer.error_log
 *             if len(errors):             # <<<<<<<<<<<<<<
 *                 message = errors[0].message
 *         raise C14NError, message
 */
      __pyx_t_8 = PyObject_Length(__pyx_v_errors); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      if (__pyx_t_8) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":477
 *             errors = writer.error_log
 *             if len(errors):
 *                 message = errors[0].message             # <<<<<<<<<<<<<<
 *         raise C14NError, message
 * 
 */
        __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_errors, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__message); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_message);
        __pyx_v_message = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L15;
      }
      __pyx_L15:;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":478
 *             if len(errors):
 *                 message = errors[0].message
 *         raise C14NError, message             # <<<<<<<<<<<<<<
 * 
 * # dump node to file (mainly for debug)
 */
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__C14NError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, __pyx_v_message, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L13;
  }
  __pyx_L13:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._tofilelikeC14N");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_writer);
  __Pyx_DECREF(__pyx_v_filename8);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_errors);
  __Pyx_DECREF(__pyx_v_f);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":482
 * # dump node to file (mainly for debug)
 * 
 * cdef _dumpToFile(f, xmlNode* c_node, bint pretty_print, bint with_tail):             # <<<<<<<<<<<<<<
 *     cdef tree.xmlOutputBuffer* c_buffer
 *     cdef cstd.FILE* c_file
 */

static  PyObject *__pyx_f_4lxml_5etree__dumpToFile(PyObject *__pyx_v_f, xmlNode *__pyx_v_c_node, int __pyx_v_pretty_print, int __pyx_v_with_tail) {
  xmlOutputBuffer *__pyx_v_c_buffer;
  FILE *__pyx_v_c_file;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_dumpToFile");
  __Pyx_INCREF(__pyx_v_f);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":485
 *     cdef tree.xmlOutputBuffer* c_buffer
 *     cdef cstd.FILE* c_file
 *     c_file = python.PyFile_AsFile(f)             # <<<<<<<<<<<<<<
 *     if c_file is NULL:
 *         raise ValueError, u"not a file"
 */
  __pyx_v_c_file = PyFile_AsFile(__pyx_v_f);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":486
 *     cdef cstd.FILE* c_file
 *     c_file = python.PyFile_AsFile(f)
 *     if c_file is NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError, u"not a file"
 *     c_buffer = tree.xmlOutputBufferCreateFile(c_file, NULL)
 */
  __pyx_t_1 = (__pyx_v_c_file == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":487
 *     c_file = python.PyFile_AsFile(f)
 *     if c_file is NULL:
 *         raise ValueError, u"not a file"             # <<<<<<<<<<<<<<
 *     c_buffer = tree.xmlOutputBufferCreateFile(c_file, NULL)
 *     tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, pretty_print, NULL)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_220), 0);
    {__pyx_filename = __pyx_f[4]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":488
 *     if c_file is NULL:
 *         raise ValueError, u"not a file"
 *     c_buffer = tree.xmlOutputBufferCreateFile(c_file, NULL)             # <<<<<<<<<<<<<<
 *     tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, pretty_print, NULL)
 *     if with_tail:
 */
  __pyx_v_c_buffer = xmlOutputBufferCreateFile(__pyx_v_c_file, NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":489
 *         raise ValueError, u"not a file"
 *     c_buffer = tree.xmlOutputBufferCreateFile(c_file, NULL)
 *     tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, pretty_print, NULL)             # <<<<<<<<<<<<<<
 *     if with_tail:
 *         _writeTail(c_buffer, c_node, NULL, 0)
 */
  xmlNodeDumpOutput(__pyx_v_c_buffer, __pyx_v_c_node->doc, __pyx_v_c_node, 0, __pyx_v_pretty_print, NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":490
 *     c_buffer = tree.xmlOutputBufferCreateFile(c_file, NULL)
 *     tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, pretty_print, NULL)
 *     if with_tail:             # <<<<<<<<<<<<<<
 *         _writeTail(c_buffer, c_node, NULL, 0)
 *     if not pretty_print:
 */
  __pyx_t_1 = __pyx_v_with_tail;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":491
 *     tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_node, 0, pretty_print, NULL)
 *     if with_tail:
 *         _writeTail(c_buffer, c_node, NULL, 0)             # <<<<<<<<<<<<<<
 *     if not pretty_print:
 *         # not written yet
 */
    __pyx_f_4lxml_5etree__writeTail(__pyx_v_c_buffer, __pyx_v_c_node, NULL, 0);
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":492
 *     if with_tail:
 *         _writeTail(c_buffer, c_node, NULL, 0)
 *     if not pretty_print:             # <<<<<<<<<<<<<<
 *         # not written yet
 *         tree.xmlOutputBufferWriteString(c_buffer, '\n')
 */
  __pyx_t_1 = (!__pyx_v_pretty_print);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":494
 *     if not pretty_print:
 *         # not written yet
 *         tree.xmlOutputBufferWriteString(c_buffer, '\n')             # <<<<<<<<<<<<<<
 *     tree.xmlOutputBufferFlush(c_buffer)
 */
    xmlOutputBufferWriteString(__pyx_v_c_buffer, __pyx_k_34);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":495
 *         # not written yet
 *         tree.xmlOutputBufferWriteString(c_buffer, '\n')
 *     tree.xmlOutputBufferFlush(c_buffer)             # <<<<<<<<<<<<<<
 */
  xmlOutputBufferFlush(__pyx_v_c_buffer);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._dumpToFile");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":13
 *     ITERPARSE_FILTER_PI        = 32
 * 
 * cdef int _buildIterparseEventFilter(events) except -1:             # <<<<<<<<<<<<<<
 *     cdef int event_filter
 *     event_filter = 0
 */

static  int __pyx_f_4lxml_5etree__buildIterparseEventFilter(PyObject *__pyx_v_events) {
  int __pyx_v_event_filter;
  PyObject *__pyx_v_event;
  int __pyx_r;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_buildIterparseEventFilter");
  __Pyx_INCREF(__pyx_v_events);
  __pyx_v_event = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":15
 * cdef int _buildIterparseEventFilter(events) except -1:
 *     cdef int event_filter
 *     event_filter = 0             # <<<<<<<<<<<<<<
 *     for event in events:
 *         if event == u'start':
 */
  __pyx_v_event_filter = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":16
 *     cdef int event_filter
 *     event_filter = 0
 *     for event in events:             # <<<<<<<<<<<<<<
 *         if event == u'start':
 *             event_filter |= ITERPARSE_FILTER_START
 */
  if (PyList_CheckExact(__pyx_v_events) || PyTuple_CheckExact(__pyx_v_events)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_v_events; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_events); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_v_event);
    __pyx_v_event = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":17
 *     event_filter = 0
 *     for event in events:
 *         if event == u'start':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_START
 *         elif event == u'end':
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__start), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":18
 *     for event in events:
 *         if event == u'start':
 *             event_filter |= ITERPARSE_FILTER_START             # <<<<<<<<<<<<<<
 *         elif event == u'end':
 *             event_filter |= ITERPARSE_FILTER_END
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":19
 *         if event == u'start':
 *             event_filter |= ITERPARSE_FILTER_START
 *         elif event == u'end':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_END
 *         elif event == u'start-ns':
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__end), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":20
 *             event_filter |= ITERPARSE_FILTER_START
 *         elif event == u'end':
 *             event_filter |= ITERPARSE_FILTER_END             # <<<<<<<<<<<<<<
 *         elif event == u'start-ns':
 *             event_filter |= ITERPARSE_FILTER_START_NS
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":21
 *         elif event == u'end':
 *             event_filter |= ITERPARSE_FILTER_END
 *         elif event == u'start-ns':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_START_NS
 *         elif event == u'end-ns':
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_kp_u_221), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":22
 *             event_filter |= ITERPARSE_FILTER_END
 *         elif event == u'start-ns':
 *             event_filter |= ITERPARSE_FILTER_START_NS             # <<<<<<<<<<<<<<
 *         elif event == u'end-ns':
 *             event_filter |= ITERPARSE_FILTER_END_NS
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":23
 *         elif event == u'start-ns':
 *             event_filter |= ITERPARSE_FILTER_START_NS
 *         elif event == u'end-ns':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_END_NS
 *         elif event == u'comment':
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_kp_u_222), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":24
 *             event_filter |= ITERPARSE_FILTER_START_NS
 *         elif event == u'end-ns':
 *             event_filter |= ITERPARSE_FILTER_END_NS             # <<<<<<<<<<<<<<
 *         elif event == u'comment':
 *             event_filter |= ITERPARSE_FILTER_COMMENT
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":25
 *         elif event == u'end-ns':
 *             event_filter |= ITERPARSE_FILTER_END_NS
 *         elif event == u'comment':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_COMMENT
 *         elif event == u'pi':
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__comment), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":26
 *             event_filter |= ITERPARSE_FILTER_END_NS
 *         elif event == u'comment':
 *             event_filter |= ITERPARSE_FILTER_COMMENT             # <<<<<<<<<<<<<<
 *         elif event == u'pi':
 *             event_filter |= ITERPARSE_FILTER_PI
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_COMMENT;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":27
 *         elif event == u'comment':
 *             event_filter |= ITERPARSE_FILTER_COMMENT
 *         elif event == u'pi':             # <<<<<<<<<<<<<<
 *             event_filter |= ITERPARSE_FILTER_PI
 *         else:
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__pi), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":28
 *             event_filter |= ITERPARSE_FILTER_COMMENT
 *         elif event == u'pi':
 *             event_filter |= ITERPARSE_FILTER_PI             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError, u"invalid event name '%s'" % event
 */
      __pyx_v_event_filter |= __pyx_e_4lxml_5etree_ITERPARSE_FILTER_PI;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":30
 *             event_filter |= ITERPARSE_FILTER_PI
 *         else:
 *             raise ValueError, u"invalid event name '%s'" % event             # <<<<<<<<<<<<<<
 *     return event_filter
 * 
 */
      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_223), __pyx_v_event); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[14]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L5:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":31
 *         else:
 *             raise ValueError, u"invalid event name '%s'" % event
 *     return event_filter             # <<<<<<<<<<<<<<
 * 
 * cdef int _countNsDefs(xmlNode* c_node):
 */
  __pyx_r = __pyx_v_event_filter;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._buildIterparseEventFilter");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_DECREF(__pyx_v_events);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":33
 *     return event_filter
 * 
 * cdef int _countNsDefs(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     cdef xmlNs* c_ns
 *     cdef int count
 */

static  int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
  xmlNs *__pyx_v_c_ns;
  int __pyx_v_count;
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_countNsDefs");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":36
 *     cdef xmlNs* c_ns
 *     cdef int count
 *     count = 0             # <<<<<<<<<<<<<<
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":37
 *     cdef int count
 *     count = 0
 *     c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
 *     while c_ns is not NULL:
 *         count = count + 1
 */
  __pyx_v_c_ns = __pyx_v_c_node->nsDef;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":38
 *     count = 0
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
 *         count = count + 1
 *         c_ns = c_ns.next
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_ns != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":39
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:
 *         count = count + 1             # <<<<<<<<<<<<<<
 *         c_ns = c_ns.next
 *     return count
 */
    __pyx_v_count = (__pyx_v_count + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":40
 *     while c_ns is not NULL:
 *         count = count + 1
 *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
 *     return count
 * 
 */
    __pyx_v_c_ns = __pyx_v_c_ns->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":41
 *         count = count + 1
 *         c_ns = c_ns.next
 *     return count             # <<<<<<<<<<<<<<
 * 
 * cdef int _appendStartNsEvents(xmlNode* c_node, list event_list):
 */
  __pyx_r = __pyx_v_count;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":43
 *     return count
 * 
 * cdef int _appendStartNsEvents(xmlNode* c_node, list event_list):             # <<<<<<<<<<<<<<
 *     cdef xmlNs* c_ns
 *     cdef int count
 */

static  int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_event_list) {
  xmlNs *__pyx_v_c_ns;
  int __pyx_v_count;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_v_ns_tuple;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_appendStartNsEvents");
  __Pyx_INCREF(__pyx_v_event_list);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_tuple = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":46
 *     cdef xmlNs* c_ns
 *     cdef int count
 *     count = 0             # <<<<<<<<<<<<<<
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":47
 *     cdef int count
 *     count = 0
 *     c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
 *     while c_ns is not NULL:
 *         if c_ns.prefix is NULL:
 */
  __pyx_v_c_ns = __pyx_v_c_node->nsDef;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":48
 *     count = 0
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
 *         if c_ns.prefix is NULL:
 *             if python.IS_PYTHON3:
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c_ns != NULL);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":49
 *     c_ns = c_node.nsDef
 *     while c_ns is not NULL:
 *         if c_ns.prefix is NULL:             # <<<<<<<<<<<<<<
 *             if python.IS_PYTHON3:
 *                 prefix = u''
 */
    __pyx_t_1 = (__pyx_v_c_ns->prefix == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":50
 *     while c_ns is not NULL:
 *         if c_ns.prefix is NULL:
 *             if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *                 prefix = u''
 *             else:
 */
      __pyx_t_1 = IS_PYTHON3;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":51
 *         if c_ns.prefix is NULL:
 *             if python.IS_PYTHON3:
 *                 prefix = u''             # <<<<<<<<<<<<<<
 *             else:
 *                 prefix = ''
 */
        __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
        __Pyx_DECREF(__pyx_v_prefix);
        __pyx_v_prefix = ((PyObject *)__pyx_kp_u_14);
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":53
 *                 prefix = u''
 *             else:
 *                 prefix = ''             # <<<<<<<<<<<<<<
 *         else:
 *             prefix = funicode(c_ns.prefix)
 */
        __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
        __Pyx_DECREF(__pyx_v_prefix);
        __pyx_v_prefix = ((PyObject *)__pyx_kp_s_14);
      }
      __pyx_L6:;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":55
 *                 prefix = ''
 *         else:
 *             prefix = funicode(c_ns.prefix)             # <<<<<<<<<<<<<<
 *         ns_tuple = (prefix, funicode(c_ns.href))
 *         event_list.append( (u"start-ns", ns_tuple) )
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_2;
      __pyx_t_2 = 0;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":56
 *         else:
 *             prefix = funicode(c_ns.prefix)
 *         ns_tuple = (prefix, funicode(c_ns.href))             # <<<<<<<<<<<<<<
 *         event_list.append( (u"start-ns", ns_tuple) )
 *         count = count + 1
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_prefix);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_prefix);
    __Pyx_GIVEREF(__pyx_v_prefix);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_ns_tuple);
    __pyx_v_ns_tuple = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":57
 *             prefix = funicode(c_ns.prefix)
 *         ns_tuple = (prefix, funicode(c_ns.href))
 *         event_list.append( (u"start-ns", ns_tuple) )             # <<<<<<<<<<<<<<
 *         count = count + 1
 *         c_ns = c_ns.next
 */
    if (unlikely(__pyx_v_event_list == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_221));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_221));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_221));
    __Pyx_INCREF(__pyx_v_ns_tuple);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_ns_tuple);
    __Pyx_GIVEREF(__pyx_v_ns_tuple);
    __pyx_t_4 = PyList_Append(((PyObject *)__pyx_v_event_list), __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":58
 *         ns_tuple = (prefix, funicode(c_ns.href))
 *         event_list.append( (u"start-ns", ns_tuple) )
 *         count = count + 1             # <<<<<<<<<<<<<<
 *         c_ns = c_ns.next
 *     return count
 */
    __pyx_v_count = (__pyx_v_count + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":59
 *         event_list.append( (u"start-ns", ns_tuple) )
 *         count = count + 1
 *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
 *     return count
 * 
 */
    __pyx_v_c_ns = __pyx_v_c_ns->next;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":60
 *         count = count + 1
 *         c_ns = c_ns.next
 *     return count             # <<<<<<<<<<<<<<
 * 
 * cdef class _IterparseContext(_ParserContext):
 */
  __pyx_r = __pyx_v_count;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("lxml.etree._appendStartNsEvents");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_ns_tuple);
  __Pyx_DECREF(__pyx_v_event_list);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":82
 *     cdef char*  _tag_name
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._ns_stack = []
 *         self._pop_ns = self._ns_stack.pop
 */

static int __pyx_pf_4lxml_5etree_17_IterparseContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17_IterparseContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":83
 * 
 *     def __init__(self):
 *         self._ns_stack = []             # <<<<<<<<<<<<<<
 *         self._pop_ns = self._ns_stack.pop
 *         self._node_stack = []
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_ns_stack);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_ns_stack));
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_ns_stack = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":84
 *     def __init__(self):
 *         self._ns_stack = []
 *         self._pop_ns = self._ns_stack.pop             # <<<<<<<<<<<<<<
 *         self._node_stack = []
 *         self._pop_node = self._node_stack.pop
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_ns_stack), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_ns);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_ns);
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_ns = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":85
 *         self._ns_stack = []
 *         self._pop_ns = self._ns_stack.pop
 *         self._node_stack = []             # <<<<<<<<<<<<<<
 *         self._pop_node = self._node_stack.pop
 *         self._events = []
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_node_stack);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_node_stack));
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_node_stack = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":86
 *         self._pop_ns = self._ns_stack.pop
 *         self._node_stack = []
 *         self._pop_node = self._node_stack.pop             # <<<<<<<<<<<<<<
 *         self._events = []
 *         self._event_index = 0
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_node_stack), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_node);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_node);
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_pop_node = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":87
 *         self._node_stack = []
 *         self._pop_node = self._node_stack.pop
 *         self._events = []             # <<<<<<<<<<<<<<
 *         self._event_index = 0
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_events);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_events));
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_events = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":88
 *         self._pop_node = self._node_stack.pop
 *         self._events = []
 *         self._event_index = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
 */
  ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_self)->_event_index = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IterparseContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":90
 *         self._event_index = 0
 * 
 *     cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
 *         u"wrap original SAX2 callbacks"
 *         cdef xmlparser.xmlSAXHandler* sax
 */

static  void __pyx_f_4lxml_5etree_17_IterparseContext__initParserContext(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
  xmlSAXHandler *__pyx_v_sax;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_initParserContext");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":93
 *         u"wrap original SAX2 callbacks"
 *         cdef xmlparser.xmlSAXHandler* sax
 *         _ParserContext._initParserContext(self, c_ctxt)             # <<<<<<<<<<<<<<
 *         sax = c_ctxt.sax
 *         self._origSaxStart = sax.startElementNs
 */
  __pyx_vtabptr_4lxml_5etree__ParserContext->_initParserContext(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_self), __pyx_v_c_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":94
 *         cdef xmlparser.xmlSAXHandler* sax
 *         _ParserContext._initParserContext(self, c_ctxt)
 *         sax = c_ctxt.sax             # <<<<<<<<<<<<<<
 *         self._origSaxStart = sax.startElementNs
 *         self._origSaxStartNoNs = sax.startElement
 */
  __pyx_v_sax = __pyx_v_c_ctxt->sax;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":95
 *         _ParserContext._initParserContext(self, c_ctxt)
 *         sax = c_ctxt.sax
 *         self._origSaxStart = sax.startElementNs             # <<<<<<<<<<<<<<
 *         self._origSaxStartNoNs = sax.startElement
 *         # only override start event handler if needed
 */
  __pyx_v_self->_origSaxStart = __pyx_v_sax->startElementNs;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":96
 *         sax = c_ctxt.sax
 *         self._origSaxStart = sax.startElementNs
 *         self._origSaxStartNoNs = sax.startElement             # <<<<<<<<<<<<<<
 *         # only override start event handler if needed
 *         if self._event_filter == 0 or \
 */
  __pyx_v_self->_origSaxStartNoNs = __pyx_v_sax->startElement;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":98
 *         self._origSaxStartNoNs = sax.startElement
 *         # only override start event handler if needed
 *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
 *                self._event_filter & (ITERPARSE_FILTER_START | \
 *                                      ITERPARSE_FILTER_START_NS | \
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter == 0);
  if (!__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":101
 *                self._event_filter & (ITERPARSE_FILTER_START | \
 *                                      ITERPARSE_FILTER_START_NS | \
 *                                      ITERPARSE_FILTER_END_NS):             # <<<<<<<<<<<<<<
 *             sax.startElementNs = _iterparseSaxStart
 *             sax.startElement = _iterparseSaxStartNoNs
 */
    __pyx_t_2 = (__pyx_v_self->_event_filter & ((__pyx_e_4lxml_5etree_ITERPARSE_FILTER_START | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS) | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":102
 *                                      ITERPARSE_FILTER_START_NS | \
 *                                      ITERPARSE_FILTER_END_NS):
 *             sax.startElementNs = _iterparseSaxStart             # <<<<<<<<<<<<<<
 *             sax.startElement = _iterparseSaxStartNoNs
 * 
 */
    __pyx_v_sax->startElementNs = __pyx_f_4lxml_5etree__iterparseSaxStart;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":103
 *                                      ITERPARSE_FILTER_END_NS):
 *             sax.startElementNs = _iterparseSaxStart
 *             sax.startElement = _iterparseSaxStartNoNs             # <<<<<<<<<<<<<<
 * 
 *         self._origSaxEnd = sax.endElementNs
 */
    __pyx_v_sax->startElement = __pyx_f_4lxml_5etree__iterparseSaxStartNoNs;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":105
 *             sax.startElement = _iterparseSaxStartNoNs
 * 
 *         self._origSaxEnd = sax.endElementNs             # <<<<<<<<<<<<<<
 *         self._origSaxEndNoNs = sax.endElement
 *         # only override end event handler if needed
 */
  __pyx_v_self->_origSaxEnd = __pyx_v_sax->endElementNs;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":106
 * 
 *         self._origSaxEnd = sax.endElementNs
 *         self._origSaxEndNoNs = sax.endElement             # <<<<<<<<<<<<<<
 *         # only override end event handler if needed
 *         if self._event_filter == 0 or \
 */
  __pyx_v_self->_origSaxEndNoNs = __pyx_v_sax->endElement;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":108
 *         self._origSaxEndNoNs = sax.endElement
 *         # only override end event handler if needed
 *         if self._event_filter == 0 or \             # <<<<<<<<<<<<<<
 *                self._event_filter & (ITERPARSE_FILTER_END | \
 *                                      ITERPARSE_FILTER_END_NS):
 */
  __pyx_t_3 = (__pyx_v_self->_event_filter == 0);
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":110
 *         if self._event_filter == 0 or \
 *                self._event_filter & (ITERPARSE_FILTER_END | \
 *                                      ITERPARSE_FILTER_END_NS):             # <<<<<<<<<<<<<<
 *             sax.endElementNs = _iterparseSaxEnd
 *             sax.endElement = _iterparseSaxEndNoNs
 */
    __pyx_t_2 = (__pyx_v_self->_event_filter & (__pyx_e_4lxml_5etree_ITERPARSE_FILTER_END | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS));
    __pyx_t_1 = __pyx_t_2;
  } else {
    __pyx_t_1 = __pyx_t_3;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":111
 *                self._event_filter & (ITERPARSE_FILTER_END | \
 *                                      ITERPARSE_FILTER_END_NS):
 *             sax.endElementNs = _iterparseSaxEnd             # <<<<<<<<<<<<<<
 *             sax.endElement = _iterparseSaxEndNoNs
 * 
 */
    __pyx_v_sax->endElementNs = __pyx_f_4lxml_5etree__iterparseSaxEnd;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":112
 *                                      ITERPARSE_FILTER_END_NS):
 *             sax.endElementNs = _iterparseSaxEnd
 *             sax.endElement = _iterparseSaxEndNoNs             # <<<<<<<<<<<<<<
 * 
 *         self._origSaxComment = sax.comment
 */
    __pyx_v_sax->endElement = __pyx_f_4lxml_5etree__iterparseSaxEndNoNs;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":114
 *             sax.endElement = _iterparseSaxEndNoNs
 * 
 *         self._origSaxComment = sax.comment             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_COMMENT:
 *             sax.comment = _iterparseSaxComment
 */
  __pyx_v_self->_origSaxComment = __pyx_v_sax->comment;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":115
 * 
 *         self._origSaxComment = sax.comment
 *         if self._event_filter & ITERPARSE_FILTER_COMMENT:             # <<<<<<<<<<<<<<
 *             sax.comment = _iterparseSaxComment
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_COMMENT);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":116
 *         self._origSaxComment = sax.comment
 *         if self._event_filter & ITERPARSE_FILTER_COMMENT:
 *             sax.comment = _iterparseSaxComment             # <<<<<<<<<<<<<<
 * 
 *         self._origSaxPI = sax.processingInstruction
 */
    __pyx_v_sax->comment = __pyx_f_4lxml_5etree__iterparseSaxComment;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":118
 *             sax.comment = _iterparseSaxComment
 * 
 *         self._origSaxPI = sax.processingInstruction             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_PI:
 *             sax.processingInstruction = _iterparseSaxPI
 */
  __pyx_v_self->_origSaxPI = __pyx_v_sax->processingInstruction;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":119
 * 
 *         self._origSaxPI = sax.processingInstruction
 *         if self._event_filter & ITERPARSE_FILTER_PI:             # <<<<<<<<<<<<<<
 *             sax.processingInstruction = _iterparseSaxPI
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_PI);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":120
 *         self._origSaxPI = sax.processingInstruction
 *         if self._event_filter & ITERPARSE_FILTER_PI:
 *             sax.processingInstruction = _iterparseSaxPI             # <<<<<<<<<<<<<<
 * 
 *     cdef _setEventFilter(self, events, tag):
 */
    __pyx_v_sax->processingInstruction = __pyx_f_4lxml_5etree__iterparseSaxPI;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":122
 *             sax.processingInstruction = _iterparseSaxPI
 * 
 *     cdef _setEventFilter(self, events, tag):             # <<<<<<<<<<<<<<
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         if tag is None or tag == u'*':
 */

static  PyObject *__pyx_f_4lxml_5etree_17_IterparseContext__setEventFilter(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self, PyObject *__pyx_v_events, PyObject *__pyx_v_tag) {
  PyObject *__pyx_v_href;
  PyObject *__pyx_v_name;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_setEventFilter");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_events);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_href = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":123
 * 
 *     cdef _setEventFilter(self, events, tag):
 *         self._event_filter = _buildIterparseEventFilter(events)             # <<<<<<<<<<<<<<
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__buildIterparseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_event_filter = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":124
 *     cdef _setEventFilter(self, events, tag):
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         if tag is None or tag == u'*':             # <<<<<<<<<<<<<<
 *             self._tag_href  = NULL
 *             self._tag_name  = NULL
 */
  __pyx_t_2 = (__pyx_v_tag == Py_None);
  if (!__pyx_t_2) {
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_tag, ((PyObject *)__pyx_kp_u_100), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_2;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":125
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL             # <<<<<<<<<<<<<<
 *             self._tag_name  = NULL
 *         else:
 */
    __pyx_v_self->_tag_href = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":126
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL
 *             self._tag_name  = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             self._tag_tuple = _getNsTag(tag)
 */
    __pyx_v_self->_tag_name = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":128
 *             self._tag_name  = NULL
 *         else:
 *             self._tag_tuple = _getNsTag(tag)             # <<<<<<<<<<<<<<
 *             href, name = self._tag_tuple
 *             if href is None or href == '*':
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_tag_tuple);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_tag_tuple));
    __pyx_v_self->_tag_tuple = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":129
 *         else:
 *             self._tag_tuple = _getNsTag(tag)
 *             href, name = self._tag_tuple             # <<<<<<<<<<<<<<
 *             if href is None or href == '*':
 *                 self._tag_href = NULL
 */
    if (likely(((PyObject *)__pyx_v_self->_tag_tuple) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_self->_tag_tuple)) == 2)) {
      PyObject* tuple = ((PyObject *)__pyx_v_self->_tag_tuple);
      __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
      __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = __pyx_t_3;
      __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __Pyx_UnpackTupleError(((PyObject *)__pyx_v_self->_tag_tuple), 2);
      {__pyx_filename = __pyx_f[14]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":130
 *             self._tag_tuple = _getNsTag(tag)
 *             href, name = self._tag_tuple
 *             if href is None or href == '*':             # <<<<<<<<<<<<<<
 *                 self._tag_href = NULL
 *             else:
 */
    __pyx_t_5 = (__pyx_v_href == Py_None);
    if (!__pyx_t_5) {
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_href, ((PyObject *)__pyx_kp_s_100), Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = __pyx_t_2;
    } else {
      __pyx_t_4 = __pyx_t_5;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":131
 *             href, name = self._tag_tuple
 *             if href is None or href == '*':
 *                 self._tag_href = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._tag_href = _cstr(href)
 */
      __pyx_v_self->_tag_href = NULL;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":133
 *                 self._tag_href = NULL
 *             else:
 *                 self._tag_href = _cstr(href)             # <<<<<<<<<<<<<<
 *             if name is None or name == '*':
 *                 self._tag_name = NULL
 */
      __pyx_v_self->_tag_href = PyString_AS_STRING(__pyx_v_href);
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":134
 *             else:
 *                 self._tag_href = _cstr(href)
 *             if name is None or name == '*':             # <<<<<<<<<<<<<<
 *                 self._tag_name = NULL
 *             else:
 */
    __pyx_t_4 = (__pyx_v_name == Py_None);
    if (!__pyx_t_4) {
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_name, ((PyObject *)__pyx_kp_s_100), Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_2 = __pyx_t_5;
    } else {
      __pyx_t_2 = __pyx_t_4;
    }
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":135
 *                 self._tag_href = _cstr(href)
 *             if name is None or name == '*':
 *                 self._tag_name = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._tag_name = _cstr(name)
 */
      __pyx_v_self->_tag_name = NULL;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":137
 *                 self._tag_name = NULL
 *             else:
 *                 self._tag_name = _cstr(name)             # <<<<<<<<<<<<<<
 *             if self._tag_href is NULL and self._tag_name is NULL:
 *                 self._tag_tuple = None
 */
      __pyx_v_self->_tag_name = PyString_AS_STRING(__pyx_v_name);
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":138
 *             else:
 *                 self._tag_name = _cstr(name)
 *             if self._tag_href is NULL and self._tag_name is NULL:             # <<<<<<<<<<<<<<
 *                 self._tag_tuple = None
 * 
 */
    __pyx_t_2 = (__pyx_v_self->_tag_href == NULL);
    if (__pyx_t_2) {
      __pyx_t_4 = (__pyx_v_self->_tag_name == NULL);
      __pyx_t_5 = __pyx_t_4;
    } else {
      __pyx_t_5 = __pyx_t_2;
    }
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":139
 *                 self._tag_name = _cstr(name)
 *             if self._tag_href is NULL and self._tag_name is NULL:
 *                 self._tag_tuple = None             # <<<<<<<<<<<<<<
 * 
 *     cdef int startNode(self, xmlNode* c_node) except -1:
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_tag_tuple);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_tag_tuple));
      __pyx_v_self->_tag_tuple = ((PyObject *)Py_None);
      goto __pyx_L6;
    }
    __pyx_L6:;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._IterparseContext._setEventFilter");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_href);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_events);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":141
 *                 self._tag_tuple = None
 * 
 *     cdef int startNode(self, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
 *         cdef xmlNs* c_ns
 *         cdef int ns_count
 */

static  int __pyx_f_4lxml_5etree_17_IterparseContext_startNode(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self, xmlNode *__pyx_v_c_node) {
  int __pyx_v_ns_count;
  PyObject *__pyx_v_node;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("startNode");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_node = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":144
 *         cdef xmlNs* c_ns
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:             # <<<<<<<<<<<<<<
 *             ns_count = _appendStartNsEvents(c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":145
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:
 *             ns_count = _appendStartNsEvents(c_node, self._events)             # <<<<<<<<<<<<<<
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = _countNsDefs(c_node)
 */
    __pyx_v_ns_count = __pyx_f_4lxml_5etree__appendStartNsEvents(__pyx_v_c_node, __pyx_v_self->_events);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":146
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:
 *             ns_count = _appendStartNsEvents(c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *             ns_count = _countNsDefs(c_node)
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":147
 *             ns_count = _appendStartNsEvents(c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = _countNsDefs(c_node)             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             self._ns_stack.append(ns_count)
 */
    __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_c_node);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":148
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = _countNsDefs(c_node)
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *             self._ns_stack.append(ns_count)
 *         if self._root is None:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":149
 *             ns_count = _countNsDefs(c_node)
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             self._ns_stack.append(ns_count)             # <<<<<<<<<<<<<<
 *         if self._root is None:
 *             if self._doc is None:
 */
    if (unlikely(__pyx_v_self->_ns_stack == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_2 = PyInt_FromLong(__pyx_v_ns_count); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_ns_stack), __pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":150
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             self._ns_stack.append(ns_count)
 *         if self._root is None:             # <<<<<<<<<<<<<<
 *             if self._doc is None:
 *                 self._doc = _documentFactory(c_node.doc, None)
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_self->_root) == Py_None);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":151
 *             self._ns_stack.append(ns_count)
 *         if self._root is None:
 *             if self._doc is None:             # <<<<<<<<<<<<<<
 *                 self._doc = _documentFactory(c_node.doc, None)
 *             self._root = self._doc.getroot()
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":152
 *         if self._root is None:
 *             if self._doc is None:
 *                 self._doc = _documentFactory(c_node.doc, None)             # <<<<<<<<<<<<<<
 *             self._root = self._doc.getroot()
 *         if self._tag_tuple is None or \
 */
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_node->doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_self->_doc);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
      __pyx_v_self->_doc = ((struct LxmlDocument *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":153
 *             if self._doc is None:
 *                 self._doc = _documentFactory(c_node.doc, None)
 *             self._root = self._doc.getroot()             # <<<<<<<<<<<<<<
 *         if self._tag_tuple is None or \
 *                _tagMatches(c_node, self._tag_href, self._tag_name):
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->_doc->__pyx_vtab)->getroot(__pyx_v_self->_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_root);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_root));
    __pyx_v_self->_root = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":154
 *                 self._doc = _documentFactory(c_node.doc, None)
 *             self._root = self._doc.getroot()
 *         if self._tag_tuple is None or \             # <<<<<<<<<<<<<<
 *                _tagMatches(c_node, self._tag_href, self._tag_name):
 *             node = _elementFactory(self._doc, c_node)
 */
  __pyx_t_3 = (__pyx_v_self->_tag_tuple == ((PyObject *)Py_None));
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":155
 *             self._root = self._doc.getroot()
 *         if self._tag_tuple is None or \
 *                _tagMatches(c_node, self._tag_href, self._tag_name):             # <<<<<<<<<<<<<<
 *             node = _elementFactory(self._doc, c_node)
 *             if self._event_filter & ITERPARSE_FILTER_END:
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_self->_tag_href, __pyx_v_self->_tag_name);
    __pyx_t_5 = __pyx_t_4;
  } else {
    __pyx_t_5 = __pyx_t_3;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":156
 *         if self._tag_tuple is None or \
 *                _tagMatches(c_node, self._tag_href, self._tag_name):
 *             node = _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 *             if self._event_filter & ITERPARSE_FILTER_END:
 *                 self._node_stack.append(node)
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_self->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_node);
    __pyx_v_node = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":157
 *                _tagMatches(c_node, self._tag_href, self._tag_name):
 *             node = _elementFactory(self._doc, c_node)
 *             if self._event_filter & ITERPARSE_FILTER_END:             # <<<<<<<<<<<<<<
 *                 self._node_stack.append(node)
 *             if self._event_filter & ITERPARSE_FILTER_START:
 */
    __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":158
 *             node = _elementFactory(self._doc, c_node)
 *             if self._event_filter & ITERPARSE_FILTER_END:
 *                 self._node_stack.append(node)             # <<<<<<<<<<<<<<
 *             if self._event_filter & ITERPARSE_FILTER_START:
 *                 self._events.append( (u"start", node) )
 */
      if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_node_stack), __pyx_v_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":159
 *             if self._event_filter & ITERPARSE_FILTER_END:
 *                 self._node_stack.append(node)
 *             if self._event_filter & ITERPARSE_FILTER_START:             # <<<<<<<<<<<<<<
 *                 self._events.append( (u"start", node) )
 *         return 0
 */
    __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":160
 *                 self._node_stack.append(node)
 *             if self._event_filter & ITERPARSE_FILTER_START:
 *                 self._events.append( (u"start", node) )             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      if (unlikely(__pyx_v_self->_events == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_n_u__start));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_u__start));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_u__start));
      __Pyx_INCREF(__pyx_v_node);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_node);
      __Pyx_GIVEREF(__pyx_v_node);
      __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":161
 *             if self._event_filter & ITERPARSE_FILTER_START:
 *                 self._events.append( (u"start", node) )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int endNode(self, xmlNode* c_node) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IterparseContext.startNode");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":163
 *         return 0
 * 
 *     cdef int endNode(self, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
 *         cdef xmlNs* c_ns
 *         cdef int ns_count
 */

static  int __pyx_f_4lxml_5etree_17_IterparseContext_endNode(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self, xmlNode *__pyx_v_c_node) {
  int __pyx_v_ns_count;
  PyObject *__pyx_v_node;
  PyObject *__pyx_v_event;
  PyObject *__pyx_v_i;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("endNode");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_node = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_event = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":166
 *         cdef xmlNs* c_ns
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_END:             # <<<<<<<<<<<<<<
 *             if self._tag_tuple is None or \
 *                    _tagMatches(c_node, self._tag_href, self._tag_name):
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":167
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_END:
 *             if self._tag_tuple is None or \             # <<<<<<<<<<<<<<
 *                    _tagMatches(c_node, self._tag_href, self._tag_name):
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 */
    __pyx_t_2 = (__pyx_v_self->_tag_tuple == ((PyObject *)Py_None));
    if (!__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":168
 *         if self._event_filter & ITERPARSE_FILTER_END:
 *             if self._tag_tuple is None or \
 *                    _tagMatches(c_node, self._tag_href, self._tag_name):             # <<<<<<<<<<<<<<
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 *                                          ITERPARSE_FILTER_START_NS | \
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_self->_tag_href, __pyx_v_self->_tag_name);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":171
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 *                                          ITERPARSE_FILTER_START_NS | \
 *                                          ITERPARSE_FILTER_END_NS):             # <<<<<<<<<<<<<<
 *                     node = self._pop_node()
 *                 else:
 */
      __pyx_t_1 = (__pyx_v_self->_event_filter & ((__pyx_e_4lxml_5etree_ITERPARSE_FILTER_START | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS) | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS));
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":172
 *                                          ITERPARSE_FILTER_START_NS | \
 *                                          ITERPARSE_FILTER_END_NS):
 *                     node = self._pop_node()             # <<<<<<<<<<<<<<
 *                 else:
 *                     if self._root is None:
 */
        __pyx_t_5 = PyObject_Call(__pyx_v_self->_pop_node, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_node);
        __pyx_v_node = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L5;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":174
 *                     node = self._pop_node()
 *                 else:
 *                     if self._root is None:             # <<<<<<<<<<<<<<
 *                         if self._doc is None:
 *                             self._doc = _documentFactory(c_node.doc, None)
 */
        __pyx_t_4 = (((PyObject *)__pyx_v_self->_root) == Py_None);
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":175
 *                 else:
 *                     if self._root is None:
 *                         if self._doc is None:             # <<<<<<<<<<<<<<
 *                             self._doc = _documentFactory(c_node.doc, None)
 *                         self._root = self._doc.getroot()
 */
          __pyx_t_4 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
          if (__pyx_t_4) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":176
 *                     if self._root is None:
 *                         if self._doc is None:
 *                             self._doc = _documentFactory(c_node.doc, None)             # <<<<<<<<<<<<<<
 *                         self._root = self._doc.getroot()
 *                     node = _elementFactory(self._doc, c_node)
 */
            __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_node->doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_GOTREF(__pyx_v_self->_doc);
            __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
            __pyx_v_self->_doc = ((struct LxmlDocument *)__pyx_t_5);
            __pyx_t_5 = 0;
            goto __pyx_L7;
          }
          __pyx_L7:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":177
 *                         if self._doc is None:
 *                             self._doc = _documentFactory(c_node.doc, None)
 *                         self._root = self._doc.getroot()             # <<<<<<<<<<<<<<
 *                     node = _elementFactory(self._doc, c_node)
 *                 self._events.append( (u"end", node) )
 */
          __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->_doc->__pyx_vtab)->getroot(__pyx_v_self->_doc); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_5);
          if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GIVEREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_v_self->_root);
          __Pyx_DECREF(((PyObject *)__pyx_v_self->_root));
          __pyx_v_self->_root = ((struct LxmlElement *)__pyx_t_5);
          __pyx_t_5 = 0;
          goto __pyx_L6;
        }
        __pyx_L6:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":178
 *                             self._doc = _documentFactory(c_node.doc, None)
 *                         self._root = self._doc.getroot()
 *                     node = _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 *                 self._events.append( (u"end", node) )
 * 
 */
        __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_self->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_node);
        __pyx_v_node = __pyx_t_5;
        __pyx_t_5 = 0;
      }
      __pyx_L5:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":179
 *                         self._root = self._doc.getroot()
 *                     node = _elementFactory(self._doc, c_node)
 *                 self._events.append( (u"end", node) )             # <<<<<<<<<<<<<<
 * 
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 */
      if (unlikely(__pyx_v_self->_events == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_n_u__end));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_u__end));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_u__end));
      __Pyx_INCREF(__pyx_v_node);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_node);
      __Pyx_GIVEREF(__pyx_v_node);
      __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_t_5); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":181
 *                 self._events.append( (u"end", node) )
 * 
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *             ns_count = self._pop_ns()
 *             if ns_count > 0:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":182
 * 
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = self._pop_ns()             # <<<<<<<<<<<<<<
 *             if ns_count > 0:
 *                 event = (u"end-ns", None)
 */
    __pyx_t_5 = PyObject_Call(__pyx_v_self->_pop_ns, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_t_5); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_ns_count = __pyx_t_1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":183
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = self._pop_ns()
 *             if ns_count > 0:             # <<<<<<<<<<<<<<
 *                 event = (u"end-ns", None)
 *                 for i from 0 <= i < ns_count:
 */
    __pyx_t_4 = (__pyx_v_ns_count > 0);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":184
 *             ns_count = self._pop_ns()
 *             if ns_count > 0:
 *                 event = (u"end-ns", None)             # <<<<<<<<<<<<<<
 *                 for i from 0 <= i < ns_count:
 *                     self._events.append(event)
 */
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_kp_u_222));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_222));
      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_222));
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_5, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_DECREF(__pyx_v_event);
      __pyx_v_event = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":185
 *             if ns_count > 0:
 *                 event = (u"end-ns", None)
 *                 for i from 0 <= i < ns_count:             # <<<<<<<<<<<<<<
 *                     self._events.append(event)
 *         return 0
 */
      __pyx_t_1 = __pyx_v_ns_count;
      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6++) {
        __pyx_t_5 = PyInt_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_v_i);
        __pyx_v_i = __pyx_t_5;
        __pyx_t_5 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":186
 *                 event = (u"end-ns", None)
 *                 for i from 0 <= i < ns_count:
 *                     self._events.append(event)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
        if (unlikely(__pyx_v_self->_events == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
        }
        __pyx_t_7 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_v_event); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __pyx_t_6 = __Pyx_PyInt_AsLong(__pyx_v_i); if (unlikely((__pyx_t_6 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":185
 *             if ns_count > 0:
 *                 event = (u"end-ns", None)
 *                 for i from 0 <= i < ns_count:             # <<<<<<<<<<<<<<
 *                     self._events.append(event)
 *         return 0
 */
      __pyx_t_5 = PyInt_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_i);
      __pyx_v_i = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":187
 *                 for i from 0 <= i < ns_count:
 *                     self._events.append(event)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._IterparseContext.endNode");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_node);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_DECREF(__pyx_v_i);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":189
 *         return 0
 * 
 *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
 *         cdef _Element root
 *         if self._doc is None:
 */

static  int __pyx_f_4lxml_5etree_17_IterparseContext_pushEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self, PyObject *__pyx_v_event, xmlNode *__pyx_v_c_node) {
  struct LxmlElement *__pyx_v_root;
  PyObject *__pyx_v_node;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("pushEvent");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_event);
  __pyx_v_root = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_node = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":191
 *     cdef int pushEvent(self, event, xmlNode* c_node) except -1:
 *         cdef _Element root
 *         if self._doc is None:             # <<<<<<<<<<<<<<
 *             self._doc = _documentFactory(c_node.doc, None)
 *             root = self._doc.getroot()
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":192
 *         cdef _Element root
 *         if self._doc is None:
 *             self._doc = _documentFactory(c_node.doc, None)             # <<<<<<<<<<<<<<
 *             root = self._doc.getroot()
 *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_node->doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_doc);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
    __pyx_v_self->_doc = ((struct LxmlDocument *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":193
 *         if self._doc is None:
 *             self._doc = _documentFactory(c_node.doc, None)
 *             root = self._doc.getroot()             # <<<<<<<<<<<<<<
 *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
 *                 self._root = root
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_self->_doc->__pyx_vtab)->getroot(__pyx_v_self->_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_root));
    __pyx_v_root = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":194
 *             self._doc = _documentFactory(c_node.doc, None)
 *             root = self._doc.getroot()
 *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                 self._root = root
 *         node = _elementFactory(self._doc, c_node)
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_root) != Py_None);
    if (__pyx_t_1) {
      __pyx_t_3 = (__pyx_v_root->_c_node->type == XML_ELEMENT_NODE);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":195
 *             root = self._doc.getroot()
 *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
 *                 self._root = root             # <<<<<<<<<<<<<<
 *         node = _elementFactory(self._doc, c_node)
 *         self._events.append( (event, node) )
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_root));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
      __Pyx_GOTREF(__pyx_v_self->_root);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_root));
      __pyx_v_self->_root = __pyx_v_root;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":196
 *             if root is not None and root._c_node.type == tree.XML_ELEMENT_NODE:
 *                 self._root = root
 *         node = _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 *         self._events.append( (event, node) )
 *         return 0
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_self->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_node);
  __pyx_v_node = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":197
 *                 self._root = root
 *         node = _elementFactory(self._doc, c_node)
 *         self._events.append( (event, node) )             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  if (unlikely(__pyx_v_self->_events == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_event);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_event);
  __Pyx_GIVEREF(__pyx_v_event);
  __Pyx_INCREF(__pyx_v_node);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_node);
  __Pyx_GIVEREF(__pyx_v_node);
  __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":198
 *         node = _elementFactory(self._doc, c_node)
 *         self._events.append( (event, node) )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef void _assureDocGetsFreed(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IterparseContext.pushEvent");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_root);
  __Pyx_DECREF(__pyx_v_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":200
 *         return 0
 * 
 *     cdef void _assureDocGetsFreed(self):             # <<<<<<<<<<<<<<
 *         if self._c_ctxt.myDoc is not NULL and self._doc is None:
 *             tree.xmlFreeDoc(self._c_ctxt.myDoc)
 */

static  void __pyx_f_4lxml_5etree_17_IterparseContext__assureDocGetsFreed(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_assureDocGetsFreed");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":201
 * 
 *     cdef void _assureDocGetsFreed(self):
 *         if self._c_ctxt.myDoc is not NULL and self._doc is None:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(self._c_ctxt.myDoc)
 *             self._c_ctxt.myDoc = NULL
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base._c_ctxt->myDoc != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":202
 *     cdef void _assureDocGetsFreed(self):
 *         if self._c_ctxt.myDoc is not NULL and self._doc is None:
 *             tree.xmlFreeDoc(self._c_ctxt.myDoc)             # <<<<<<<<<<<<<<
 *             self._c_ctxt.myDoc = NULL
 * 
 */
    xmlFreeDoc(__pyx_v_self->__pyx_base._c_ctxt->myDoc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":203
 *         if self._c_ctxt.myDoc is not NULL and self._doc is None:
 *             tree.xmlFreeDoc(self._c_ctxt.myDoc)
 *             self._c_ctxt.myDoc = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_v_self->__pyx_base._c_ctxt->myDoc = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":206
 * 
 * 
 * cdef inline void _pushSaxStartEvent(_IterparseContext context,             # <<<<<<<<<<<<<<
 *                                     xmlNode* c_node):
 *     try:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxStartEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context, xmlNode *__pyx_v_c_node) {
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_pushSaxStartEvent");
  __Pyx_INCREF((PyObject *)__pyx_v_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":208
 * cdef inline void _pushSaxStartEvent(_IterparseContext context,
 *                                     xmlNode* c_node):
 *     try:             # <<<<<<<<<<<<<<
 *         if context._c_ctxt.html:
 *             _fixHtmlDictNodeNames(context._c_ctxt.dict, c_node)
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":209
 *                                     xmlNode* c_node):
 *     try:
 *         if context._c_ctxt.html:             # <<<<<<<<<<<<<<
 *             _fixHtmlDictNodeNames(context._c_ctxt.dict, c_node)
 *         context.startNode(c_node)
 */
      __pyx_t_1 = __pyx_v_context->__pyx_base._c_ctxt->html;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":210
 *     try:
 *         if context._c_ctxt.html:
 *             _fixHtmlDictNodeNames(context._c_ctxt.dict, c_node)             # <<<<<<<<<<<<<<
 *         context.startNode(c_node)
 *     except:
 */
        __pyx_f_4lxml_5etree__fixHtmlDictNodeNames(__pyx_v_context->__pyx_base._c_ctxt->dict, __pyx_v_c_node);
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":211
 *         if context._c_ctxt.html:
 *             _fixHtmlDictNodeNames(context._c_ctxt.dict, c_node)
 *         context.startNode(c_node)             # <<<<<<<<<<<<<<
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->startNode(__pyx_v_context, __pyx_v_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":212
 *             _fixHtmlDictNodeNames(context._c_ctxt.dict, c_node)
 *         context.startNode(c_node)
 *     except:             # <<<<<<<<<<<<<<
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._pushSaxStartEvent");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":213
 *         context.startNode(c_node)
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 */
      __pyx_t_1 = (__pyx_v_context->__pyx_base._c_ctxt->errNo == XML_ERR_OK);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":214
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()
 */
        __pyx_v_context->__pyx_base._c_ctxt->errNo = XML_ERR_INTERNAL_ERROR;
        goto __pyx_L14;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":215
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1             # <<<<<<<<<<<<<<
 *         context._store_raised()
 * 
 */
      __pyx_v_context->__pyx_base._c_ctxt->disableSAX = 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":216
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()             # <<<<<<<<<<<<<<
 * 
 * cdef inline void _pushSaxEndEvent(_IterparseContext context,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("lxml.etree._pushSaxStartEvent");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":218
 *         context._store_raised()
 * 
 * cdef inline void _pushSaxEndEvent(_IterparseContext context,             # <<<<<<<<<<<<<<
 *                                   xmlNode* c_node):
 *     try:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxEndEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context, xmlNode *__pyx_v_c_node) {
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_pushSaxEndEvent");
  __Pyx_INCREF((PyObject *)__pyx_v_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":220
 * cdef inline void _pushSaxEndEvent(_IterparseContext context,
 *                                   xmlNode* c_node):
 *     try:             # <<<<<<<<<<<<<<
 *         context.endNode(c_node)
 *     except:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":221
 *                                   xmlNode* c_node):
 *     try:
 *         context.endNode(c_node)             # <<<<<<<<<<<<<<
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->endNode(__pyx_v_context, __pyx_v_c_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":222
 *     try:
 *         context.endNode(c_node)
 *     except:             # <<<<<<<<<<<<<<
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._pushSaxEndEvent");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":223
 *         context.endNode(c_node)
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 */
      __pyx_t_5 = (__pyx_v_context->__pyx_base._c_ctxt->errNo == XML_ERR_OK);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":224
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()
 */
        __pyx_v_context->__pyx_base._c_ctxt->errNo = XML_ERR_INTERNAL_ERROR;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":225
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1             # <<<<<<<<<<<<<<
 *         context._store_raised()
 * 
 */
      __pyx_v_context->__pyx_base._c_ctxt->disableSAX = 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":226
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()             # <<<<<<<<<<<<<<
 * 
 * cdef inline void _pushSaxEvent(_IterparseContext context,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._pushSaxEndEvent");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":228
 *         context._store_raised()
 * 
 * cdef inline void _pushSaxEvent(_IterparseContext context,             # <<<<<<<<<<<<<<
 *                                event, xmlNode* c_node):
 *     try:
 */

static CYTHON_INLINE void __pyx_f_4lxml_5etree__pushSaxEvent(struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context, PyObject *__pyx_v_event, xmlNode *__pyx_v_c_node) {
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_pushSaxEvent");
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF(__pyx_v_event);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":230
 * cdef inline void _pushSaxEvent(_IterparseContext context,
 *                                event, xmlNode* c_node):
 *     try:             # <<<<<<<<<<<<<<
 *         context.pushEvent(event, c_node)
 *     except:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":231
 *                                event, xmlNode* c_node):
 *     try:
 *         context.pushEvent(event, c_node)             # <<<<<<<<<<<<<<
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->pushEvent(__pyx_v_context, __pyx_v_event, __pyx_v_c_node); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":232
 *     try:
 *         context.pushEvent(event, c_node)
 *     except:             # <<<<<<<<<<<<<<
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._pushSaxEvent");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":233
 *         context.pushEvent(event, c_node)
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:             # <<<<<<<<<<<<<<
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 */
      __pyx_t_5 = (__pyx_v_context->__pyx_base._c_ctxt->errNo == XML_ERR_OK);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":234
 *     except:
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()
 */
        __pyx_v_context->__pyx_base._c_ctxt->errNo = XML_ERR_INTERNAL_ERROR;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":235
 *         if context._c_ctxt.errNo == xmlerror.XML_ERR_OK:
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1             # <<<<<<<<<<<<<<
 *         context._store_raised()
 * 
 */
      __pyx_v_context->__pyx_base._c_ctxt->disableSAX = 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":236
 *             context._c_ctxt.errNo = xmlerror.XML_ERR_INTERNAL_ERROR
 *         context._c_ctxt.disableSAX = 1
 *         context._store_raised()             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxStart(void* ctxt, char* localname, char* prefix,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._pushSaxEvent");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":238
 *         context._store_raised()
 * 
 * cdef void _iterparseSaxStart(void* ctxt, char* localname, char* prefix,             # <<<<<<<<<<<<<<
 *                              char* URI, int nb_namespaces, char** namespaces,
 *                              int nb_attributes, int nb_defaulted,
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxStart(void *__pyx_v_ctxt, char *__pyx_v_localname, char *__pyx_v_prefix, char *__pyx_v_URI, int __pyx_v_nb_namespaces, char **__pyx_v_namespaces, int __pyx_v_nb_attributes, int __pyx_v_nb_defaulted, char **__pyx_v_attributes) {
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  __Pyx_RefNannySetupContext("_iterparseSaxStart");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":244
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxStart(
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":245
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     context._origSaxStart(
 *         ctxt, localname, prefix, URI,
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":249
 *         ctxt, localname, prefix, URI,
 *         nb_namespaces, namespaces,
 *         nb_attributes, nb_defaulted, attributes)             # <<<<<<<<<<<<<<
 *     _pushSaxStartEvent(context, c_ctxt.node)
 * 
 */
  __pyx_v_context->_origSaxStart(__pyx_v_ctxt, __pyx_v_localname, __pyx_v_prefix, __pyx_v_URI, __pyx_v_nb_namespaces, __pyx_v_namespaces, __pyx_v_nb_attributes, __pyx_v_nb_defaulted, __pyx_v_attributes);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":250
 *         nb_namespaces, namespaces,
 *         nb_attributes, nb_defaulted, attributes)
 *     _pushSaxStartEvent(context, c_ctxt.node)             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxEnd(void* ctxt, char* localname, char* prefix, char* URI):
 */
  __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt->node);

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":252
 *     _pushSaxStartEvent(context, c_ctxt.node)
 * 
 * cdef void _iterparseSaxEnd(void* ctxt, char* localname, char* prefix, char* URI):             # <<<<<<<<<<<<<<
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxEnd(void *__pyx_v_ctxt, char *__pyx_v_localname, char *__pyx_v_prefix, char *__pyx_v_URI) {
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  __Pyx_RefNannySetupContext("_iterparseSaxEnd");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":255
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":256
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     _pushSaxEndEvent(context, c_ctxt.node)
 *     context._origSaxEnd(ctxt, localname, prefix, URI)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":257
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)             # <<<<<<<<<<<<<<
 *     context._origSaxEnd(ctxt, localname, prefix, URI)
 * 
 */
  __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, __pyx_v_c_ctxt->node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":258
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)
 *     context._origSaxEnd(ctxt, localname, prefix, URI)             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxStartNoNs(void* ctxt, char* name, char** attributes):
 */
  __pyx_v_context->_origSaxEnd(__pyx_v_ctxt, __pyx_v_localname, __pyx_v_prefix, __pyx_v_URI);

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":260
 *     context._origSaxEnd(ctxt, localname, prefix, URI)
 * 
 * cdef void _iterparseSaxStartNoNs(void* ctxt, char* name, char** attributes):             # <<<<<<<<<<<<<<
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxStartNoNs(void *__pyx_v_ctxt, char *__pyx_v_name, char **__pyx_v_attributes) {
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  __Pyx_RefNannySetupContext("_iterparseSaxStartNoNs");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":263
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxStartNoNs(ctxt, name, attributes)
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":264
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     context._origSaxStartNoNs(ctxt, name, attributes)
 *     _pushSaxStartEvent(context, c_ctxt.node)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":265
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxStartNoNs(ctxt, name, attributes)             # <<<<<<<<<<<<<<
 *     _pushSaxStartEvent(context, c_ctxt.node)
 * 
 */
  __pyx_v_context->_origSaxStartNoNs(__pyx_v_ctxt, __pyx_v_name, __pyx_v_attributes);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":266
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxStartNoNs(ctxt, name, attributes)
 *     _pushSaxStartEvent(context, c_ctxt.node)             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxEndNoNs(void* ctxt, char* name):
 */
  __pyx_f_4lxml_5etree__pushSaxStartEvent(__pyx_v_context, __pyx_v_c_ctxt->node);

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":268
 *     _pushSaxStartEvent(context, c_ctxt.node)
 * 
 * cdef void _iterparseSaxEndNoNs(void* ctxt, char* name):             # <<<<<<<<<<<<<<
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxEndNoNs(void *__pyx_v_ctxt, char *__pyx_v_name) {
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  __Pyx_RefNannySetupContext("_iterparseSaxEndNoNs");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":271
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":272
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     _pushSaxEndEvent(context, c_ctxt.node)
 *     context._origSaxEndNoNs(ctxt, name)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":273
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)             # <<<<<<<<<<<<<<
 *     context._origSaxEndNoNs(ctxt, name)
 * 
 */
  __pyx_f_4lxml_5etree__pushSaxEndEvent(__pyx_v_context, __pyx_v_c_ctxt->node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":274
 *     context = <_IterparseContext>c_ctxt._private
 *     _pushSaxEndEvent(context, c_ctxt.node)
 *     context._origSaxEndNoNs(ctxt, name)             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxComment(void* ctxt, char* text):
 */
  __pyx_v_context->_origSaxEndNoNs(__pyx_v_ctxt, __pyx_v_name);

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":276
 *     context._origSaxEndNoNs(ctxt, name)
 * 
 * cdef void _iterparseSaxComment(void* ctxt, char* text):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxComment(void *__pyx_v_ctxt, char *__pyx_v_text) {
  xmlNode *__pyx_v_c_node;
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_iterparseSaxComment");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":280
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxComment(ctxt, text)
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":281
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     context._origSaxComment(ctxt, text)
 *     c_node = _iterparseFindLastNode(c_ctxt)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":282
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxComment(ctxt, text)             # <<<<<<<<<<<<<<
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:
 */
  __pyx_v_context->_origSaxComment(__pyx_v_ctxt, __pyx_v_text);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":283
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxComment(ctxt, text)
 *     c_node = _iterparseFindLastNode(c_ctxt)             # <<<<<<<<<<<<<<
 *     if c_node is not NULL:
 *         _pushSaxEvent(context, u"comment", c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__iterparseFindLastNode(__pyx_v_c_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":284
 *     context._origSaxComment(ctxt, text)
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:             # <<<<<<<<<<<<<<
 *         _pushSaxEvent(context, u"comment", c_node)
 * 
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":285
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:
 *         _pushSaxEvent(context, u"comment", c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef void _iterparseSaxPI(void* ctxt, char* target, char* data):
 */
    __pyx_f_4lxml_5etree__pushSaxEvent(__pyx_v_context, ((PyObject *)__pyx_n_u__comment), __pyx_v_c_node);
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":287
 *         _pushSaxEvent(context, u"comment", c_node)
 * 
 * cdef void _iterparseSaxPI(void* ctxt, char* target, char* data):             # <<<<<<<<<<<<<<
 *     cdef xmlNode* c_node
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 */

static  void __pyx_f_4lxml_5etree__iterparseSaxPI(void *__pyx_v_ctxt, char *__pyx_v_target, char *__pyx_v_data) {
  xmlNode *__pyx_v_c_node;
  xmlParserCtxt *__pyx_v_c_ctxt;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_iterparseSaxPI");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":291
 *     cdef xmlparser.xmlParserCtxt* c_ctxt
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt             # <<<<<<<<<<<<<<
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxPI(ctxt, target, data)
 */
  __pyx_v_c_ctxt = ((xmlParserCtxt *)__pyx_v_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":292
 *     cdef _IterparseContext context
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private             # <<<<<<<<<<<<<<
 *     context._origSaxPI(ctxt, target, data)
 *     c_node = _iterparseFindLastNode(c_ctxt)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_v_c_ctxt->_private);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":293
 *     c_ctxt = <xmlparser.xmlParserCtxt*>ctxt
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxPI(ctxt, target, data)             # <<<<<<<<<<<<<<
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:
 */
  __pyx_v_context->_origSaxPI(__pyx_v_ctxt, __pyx_v_target, __pyx_v_data);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":294
 *     context = <_IterparseContext>c_ctxt._private
 *     context._origSaxPI(ctxt, target, data)
 *     c_node = _iterparseFindLastNode(c_ctxt)             # <<<<<<<<<<<<<<
 *     if c_node is not NULL:
 *         _pushSaxEvent(context, u"pi", c_node)
 */
  __pyx_v_c_node = __pyx_f_4lxml_5etree__iterparseFindLastNode(__pyx_v_c_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":295
 *     context._origSaxPI(ctxt, target, data)
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:             # <<<<<<<<<<<<<<
 *         _pushSaxEvent(context, u"pi", c_node)
 * 
 */
  __pyx_t_1 = (__pyx_v_c_node != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":296
 *     c_node = _iterparseFindLastNode(c_ctxt)
 *     if c_node is not NULL:
 *         _pushSaxEvent(context, u"pi", c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef inline xmlNode* _iterparseFindLastNode(xmlparser.xmlParserCtxt* c_ctxt):
 */
    __pyx_f_4lxml_5etree__pushSaxEvent(__pyx_v_context, ((PyObject *)__pyx_n_u__pi), __pyx_v_c_node);
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":298
 *         _pushSaxEvent(context, u"pi", c_node)
 * 
 * cdef inline xmlNode* _iterparseFindLastNode(xmlparser.xmlParserCtxt* c_ctxt):             # <<<<<<<<<<<<<<
 *     # this mimics what libxml2 creates for comments/PIs
 *     if c_ctxt.inSubset == 1:
 */

static CYTHON_INLINE xmlNode *__pyx_f_4lxml_5etree__iterparseFindLastNode(xmlParserCtxt *__pyx_v_c_ctxt) {
  xmlNode *__pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_iterparseFindLastNode");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":300
 * cdef inline xmlNode* _iterparseFindLastNode(xmlparser.xmlParserCtxt* c_ctxt):
 *     # this mimics what libxml2 creates for comments/PIs
 *     if c_ctxt.inSubset == 1:             # <<<<<<<<<<<<<<
 *         return c_ctxt.myDoc.intSubset.last
 *     elif c_ctxt.inSubset == 2:
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->inSubset == 1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":301
 *     # this mimics what libxml2 creates for comments/PIs
 *     if c_ctxt.inSubset == 1:
 *         return c_ctxt.myDoc.intSubset.last             # <<<<<<<<<<<<<<
 *     elif c_ctxt.inSubset == 2:
 *         return c_ctxt.myDoc.extSubset.last
 */
    __pyx_r = __pyx_v_c_ctxt->myDoc->intSubset->last;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":302
 *     if c_ctxt.inSubset == 1:
 *         return c_ctxt.myDoc.intSubset.last
 *     elif c_ctxt.inSubset == 2:             # <<<<<<<<<<<<<<
 *         return c_ctxt.myDoc.extSubset.last
 *     elif c_ctxt.node is NULL:
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->inSubset == 2);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":303
 *         return c_ctxt.myDoc.intSubset.last
 *     elif c_ctxt.inSubset == 2:
 *         return c_ctxt.myDoc.extSubset.last             # <<<<<<<<<<<<<<
 *     elif c_ctxt.node is NULL:
 *         return c_ctxt.myDoc.last
 */
    __pyx_r = __pyx_v_c_ctxt->myDoc->extSubset->last;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":304
 *     elif c_ctxt.inSubset == 2:
 *         return c_ctxt.myDoc.extSubset.last
 *     elif c_ctxt.node is NULL:             # <<<<<<<<<<<<<<
 *         return c_ctxt.myDoc.last
 *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":305
 *         return c_ctxt.myDoc.extSubset.last
 *     elif c_ctxt.node is NULL:
 *         return c_ctxt.myDoc.last             # <<<<<<<<<<<<<<
 *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
 *         return c_ctxt.node.last
 */
    __pyx_r = __pyx_v_c_ctxt->myDoc->last;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":306
 *     elif c_ctxt.node is NULL:
 *         return c_ctxt.myDoc.last
 *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         return c_ctxt.node.last
 *     else:
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":307
 *         return c_ctxt.myDoc.last
 *     elif c_ctxt.node.type == tree.XML_ELEMENT_NODE:
 *         return c_ctxt.node.last             # <<<<<<<<<<<<<<
 *     else:
 *         return c_ctxt.node.next
 */
    __pyx_r = __pyx_v_c_ctxt->node->last;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":309
 *         return c_ctxt.node.last
 *     else:
 *         return c_ctxt.node.next             # <<<<<<<<<<<<<<
 * 
 * cdef class iterparse(_BaseParser):
 */
    __pyx_r = __pyx_v_c_ctxt->node->next;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":363
 *     cdef int (*_parse_chunk)(xmlparser.xmlParserCtxt* ctxt,
 *                              char* chunk, int size, int terminate) nogil
 *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
 *                  attribute_defaults=False, dtd_validation=False,
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 */

static int __pyx_pf_4lxml_5etree_9iterparse___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_9iterparse___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_events = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_attribute_defaults = 0;
  PyObject *__pyx_v_dtd_validation = 0;
  PyObject *__pyx_v_load_dtd = 0;
  PyObject *__pyx_v_no_network = 0;
  PyObject *__pyx_v_remove_blank_text = 0;
  PyObject *__pyx_v_compact = 0;
  PyObject *__pyx_v_resolve_entities = 0;
  PyObject *__pyx_v_remove_comments = 0;
  PyObject *__pyx_v_remove_pis = 0;
  PyObject *__pyx_v_strip_cdata = 0;
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_html = 0;
  PyObject *__pyx_v_huge_tree = 0;
  struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_schema = 0;
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  int __pyx_v_parse_options;
  PyObject *__pyx_v_filename;
  PyObject *__pyx_v_error;
  PyObject *__pyx_v_event;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__events,&__pyx_n_s__tag,&__pyx_n_s__attribute_defaults,&__pyx_n_s__dtd_validation,&__pyx_n_s__load_dtd,&__pyx_n_s__no_network,&__pyx_n_s__remove_blank_text,&__pyx_n_s__compact,&__pyx_n_s__resolve_entities,&__pyx_n_s__remove_comments,&__pyx_n_s__remove_pis,&__pyx_n_s__strip_cdata,&__pyx_n_s__encoding,&__pyx_n_s__html,&__pyx_n_s__huge_tree,&__pyx_n_s__schema,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":368
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,
 *                  html=False, huge_tree=False, XMLSchema schema=None):             # <<<<<<<<<<<<<<
 *         cdef _IterparseContext context
 *         cdef char* c_encoding
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    values[1] = __pyx_k_224;
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_225;
    values[4] = __pyx_k_226;
    values[5] = __pyx_k_227;
    values[6] = __pyx_k_228;
    values[7] = __pyx_k_229;
    values[8] = __pyx_k_230;
    values[9] = __pyx_k_231;
    values[10] = __pyx_k_232;
    values[11] = __pyx_k_233;
    values[12] = __pyx_k_234;
    values[13] = ((PyObject *)Py_None);
    values[14] = __pyx_k_235;
    values[15] = __pyx_k_236;
    values[16] = (PyObject*)((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__events);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attribute_defaults);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dtd_validation);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__load_dtd);
      if (value) { values[5] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__no_network);
      if (value) { values[6] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_blank_text);
      if (value) { values[7] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compact);
      if (value) { values[8] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__resolve_entities);
      if (value) { values[9] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_comments);
      if (value) { values[10] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remove_pis);
      if (value) { values[11] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strip_cdata);
      if (value) { values[12] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding);
      if (value) { values[13] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__html);
      if (value) { values[14] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__huge_tree);
      if (value) { values[15] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__schema);
      if (value) { values[16] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_source = values[0];
    __pyx_v_events = values[1];
    __pyx_v_tag = values[2];
    __pyx_v_attribute_defaults = values[3];
    __pyx_v_dtd_validation = values[4];
    __pyx_v_load_dtd = values[5];
    __pyx_v_no_network = values[6];
    __pyx_v_remove_blank_text = values[7];
    __pyx_v_compact = values[8];
    __pyx_v_resolve_entities = values[9];
    __pyx_v_remove_comments = values[10];
    __pyx_v_remove_pis = values[11];
    __pyx_v_strip_cdata = values[12];
    __pyx_v_encoding = values[13];
    __pyx_v_html = values[14];
    __pyx_v_huge_tree = values[15];
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)values[16]);
  } else {
    __pyx_v_events = __pyx_k_224;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":363
 *     cdef int (*_parse_chunk)(xmlparser.xmlParserCtxt* ctxt,
 *                              char* chunk, int size, int terminate) nogil
 *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
 *                  attribute_defaults=False, dtd_validation=False,
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 */
    __pyx_v_tag = ((PyObject *)Py_None);
    __pyx_v_attribute_defaults = __pyx_k_225;
    __pyx_v_dtd_validation = __pyx_k_226;
    __pyx_v_load_dtd = __pyx_k_227;
    __pyx_v_no_network = __pyx_k_228;
    __pyx_v_remove_blank_text = __pyx_k_229;
    __pyx_v_compact = __pyx_k_230;
    __pyx_v_resolve_entities = __pyx_k_231;
    __pyx_v_remove_comments = __pyx_k_232;
    __pyx_v_remove_pis = __pyx_k_233;
    __pyx_v_strip_cdata = __pyx_k_234;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":367
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,             # <<<<<<<<<<<<<<
 *                  html=False, huge_tree=False, XMLSchema schema=None):
 *         cdef _IterparseContext context
 */
    __pyx_v_encoding = ((PyObject *)Py_None);
    __pyx_v_html = __pyx_k_235;
    __pyx_v_huge_tree = __pyx_k_236;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":368
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,
 *                  html=False, huge_tree=False, XMLSchema schema=None):             # <<<<<<<<<<<<<<
 *         cdef _IterparseContext context
 *         cdef char* c_encoding
 */
    __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_events = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_source = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.iterparse.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_events);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_INCREF(__pyx_v_attribute_defaults);
  __Pyx_INCREF(__pyx_v_dtd_validation);
  __Pyx_INCREF(__pyx_v_load_dtd);
  __Pyx_INCREF(__pyx_v_no_network);
  __Pyx_INCREF(__pyx_v_remove_blank_text);
  __Pyx_INCREF(__pyx_v_compact);
  __Pyx_INCREF(__pyx_v_resolve_entities);
  __Pyx_INCREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(__pyx_v_encoding);
  __Pyx_INCREF(__pyx_v_html);
  __Pyx_INCREF(__pyx_v_huge_tree);
  __Pyx_INCREF((PyObject *)__pyx_v_schema);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_filename = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_error = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_event = Py_None; __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":372
 *         cdef char* c_encoding
 *         cdef int parse_options
 *         if not hasattr(source, u'read'):             # <<<<<<<<<<<<<<
 *             filename = _encodeFilename(source)
 *             if not python.IS_PYTHON3:
 */
  __pyx_t_1 = PyObject_HasAttr(__pyx_v_source, ((PyObject *)__pyx_n_u__read)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":373
 *         cdef int parse_options
 *         if not hasattr(source, u'read'):
 *             filename = _encodeFilename(source)             # <<<<<<<<<<<<<<
 *             if not python.IS_PYTHON3:
 *                 source = filename
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_filename);
    __pyx_v_filename = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":374
 *         if not hasattr(source, u'read'):
 *             filename = _encodeFilename(source)
 *             if not python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *                 source = filename
 *             source = open(source, u'rb')
 */
    __pyx_t_2 = (!IS_PYTHON3);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":375
 *             filename = _encodeFilename(source)
 *             if not python.IS_PYTHON3:
 *                 source = filename             # <<<<<<<<<<<<<<
 *             source = open(source, u'rb')
 *         else:
 */
      __Pyx_INCREF(__pyx_v_filename);
      __Pyx_DECREF(__pyx_v_source);
      __pyx_v_source = __pyx_v_filename;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":376
 *             if not python.IS_PYTHON3:
 *                 source = filename
 *             source = open(source, u'rb')             # <<<<<<<<<<<<<<
 *         else:
 *             filename = _encodeFilename(_getFilenameForFile(source))
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_source);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_source);
    __Pyx_GIVEREF(__pyx_v_source);
    __Pyx_INCREF(((PyObject *)__pyx_n_u__rb));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_u__rb));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__rb));
    __pyx_t_4 = PyObject_Call(__pyx_builtin_open, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_source);
    __pyx_v_source = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":378
 *             source = open(source, u'rb')
 *         else:
 *             filename = _encodeFilename(_getFilenameForFile(source))             # <<<<<<<<<<<<<<
 * 
 *         self._source = source
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_filename);
    __pyx_v_filename = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":380
 *             filename = _encodeFilename(_getFilenameForFile(source))
 * 
 *         self._source = source             # <<<<<<<<<<<<<<
 *         if html:
 *             # make sure we're not looking for namespaces
 */
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_GIVEREF(__pyx_v_source);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
  ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source = __pyx_v_source;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":381
 * 
 *         self._source = source
 *         if html:             # <<<<<<<<<<<<<<
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_html); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":383
 *         if html:
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events             # <<<<<<<<<<<<<<
 *                              if event != u'start-ns' and event != u'end-ns' ])
 * 
 */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":384
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events
 *                              if event != u'start-ns' and event != u'end-ns' ])             # <<<<<<<<<<<<<<
 * 
 *         self._events = events
 */
    if (PyList_CheckExact(__pyx_v_events) || PyTuple_CheckExact(__pyx_v_events)) {
      __pyx_t_5 = 0; __pyx_t_4 = __pyx_v_events; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_events); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
    }
    for (;;) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":383
 *         if html:
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events             # <<<<<<<<<<<<<<
 *                              if event != u'start-ns' and event != u'end-ns' ])
 * 
 */
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
      } else {
        __pyx_t_6 = PyIter_Next(__pyx_t_4);
        if (!__pyx_t_6) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_v_event);
      __pyx_v_event = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":384
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events
 *                              if event != u'start-ns' and event != u'end-ns' ])             # <<<<<<<<<<<<<<
 * 
 *         self._events = events
 */
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_kp_u_221), Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_2) {
        __pyx_t_6 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_kp_u_222), Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_7 = __pyx_t_1;
      } else {
        __pyx_t_7 = __pyx_t_2;
      }
      if (__pyx_t_7) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":383
 *         if html:
 *             # make sure we're not looking for namespaces
 *             events = tuple([ event for event in events             # <<<<<<<<<<<<<<
 *                              if event != u'start-ns' and event != u'end-ns' ])
 * 
 */
        __pyx_t_8 = PyList_Append(__pyx_t_3, (PyObject*)__pyx_v_event); if (unlikely(__pyx_t_8)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L11;
      }
      __pyx_L11:;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = ((PyObject *)PyList_AsTuple(__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_events);
    __pyx_v_events = ((PyObject *)__pyx_t_4);
    __pyx_t_4 = 0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":386
 *                              if event != u'start-ns' and event != u'end-ns' ])
 * 
 *         self._events = events             # <<<<<<<<<<<<<<
 *         self._tag = tag
 * 
 */
  __Pyx_INCREF(__pyx_v_events);
  __Pyx_GIVEREF(__pyx_v_events);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_events);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_events);
  ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_events = __pyx_v_events;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":387
 * 
 *         self._events = events
 *         self._tag = tag             # <<<<<<<<<<<<<<
 * 
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 */
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_tag);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_tag);
  ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_tag = __pyx_v_tag;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":389
 *         self._tag = tag
 * 
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS             # <<<<<<<<<<<<<<
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 */
  __pyx_v_parse_options = __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":390
 * 
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 *         if load_dtd:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if dtd_validation:
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_load_dtd); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":391
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if dtd_validation:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_DTDLOAD);
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":392
 *         if load_dtd:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDLOAD
 *         if dtd_validation:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_dtd_validation); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":394
 *         if dtd_validation:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if attribute_defaults:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR | \
 */
    __pyx_v_parse_options = ((__pyx_v_parse_options | XML_PARSE_DTDVALID) | XML_PARSE_DTDLOAD);
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":395
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDVALID | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 *         if attribute_defaults:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":397
 *         if attribute_defaults:
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR | \
 *                             xmlparser.XML_PARSE_DTDLOAD             # <<<<<<<<<<<<<<
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 */
    __pyx_v_parse_options = ((__pyx_v_parse_options | XML_PARSE_DTDATTR) | XML_PARSE_DTDLOAD);
    goto __pyx_L14;
  }
  __pyx_L14:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":398
 *             parse_options = parse_options | xmlparser.XML_PARSE_DTDATTR | \
 *                             xmlparser.XML_PARSE_DTDLOAD
 *         if remove_blank_text:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_remove_blank_text); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":399
 *                             xmlparser.XML_PARSE_DTDLOAD
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS             # <<<<<<<<<<<<<<
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_NOBLANKS);
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":400
 *         if remove_blank_text:
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_huge_tree); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":401
 *             parse_options = parse_options | xmlparser.XML_PARSE_NOBLANKS
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE             # <<<<<<<<<<<<<<
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 */
    __pyx_v_parse_options = (__pyx_v_parse_options | XML_PARSE_HUGE);
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":402
 *         if huge_tree:
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_no_network); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_7);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":403
 *             parse_options = parse_options | xmlparser.XML_PARSE_HUGE
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET             # <<<<<<<<<<<<<<
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NONET);
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":404
 *         if not no_network:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_compact); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = (!__pyx_t_2);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":405
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NONET
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT             # <<<<<<<<<<<<<<
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_COMPACT);
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":406
 *         if not compact:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:
 */
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_resolve_entities); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = (!__pyx_t_7);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":407
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_COMPACT
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT             # <<<<<<<<<<<<<<
 *         if not strip_cdata:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOENT);
    goto __pyx_L19;
  }
  __pyx_L19:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":408
 *         if not resolve_entities:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:             # <<<<<<<<<<<<<<
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strip_cdata); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = (!__pyx_t_2);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":409
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOENT
 *         if not strip_cdata:
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA             # <<<<<<<<<<<<<<
 * 
 *         _BaseParser.__init__(self, parse_options, html, schema,
 */
    __pyx_v_parse_options = (__pyx_v_parse_options ^ XML_PARSE_NOCDATA);
    goto __pyx_L20;
  }
  __pyx_L20:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":411
 *             parse_options = parse_options ^ xmlparser.XML_PARSE_NOCDATA
 * 
 *         _BaseParser.__init__(self, parse_options, html, schema,             # <<<<<<<<<<<<<<
 *                              remove_comments, remove_pis, strip_cdata,
 *                              None, filename, encoding)
 */
  __pyx_t_4 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseParser)), __pyx_n_s____init__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyInt_FromLong(__pyx_v_parse_options); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":413
 *         _BaseParser.__init__(self, parse_options, html, schema,
 *                              remove_comments, remove_pis, strip_cdata,
 *                              None, filename, encoding)             # <<<<<<<<<<<<<<
 * 
 *         if self._for_html:
 */
  __pyx_t_6 = PyTuple_New(10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_html);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_html);
  __Pyx_GIVEREF(__pyx_v_html);
  __Pyx_INCREF(((PyObject *)__pyx_v_schema));
  PyTuple_SET_ITEM(__pyx_t_6, 3, ((PyObject *)__pyx_v_schema));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_schema));
  __Pyx_INCREF(__pyx_v_remove_comments);
  PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_v_remove_comments);
  __Pyx_GIVEREF(__pyx_v_remove_comments);
  __Pyx_INCREF(__pyx_v_remove_pis);
  PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_v_remove_pis);
  __Pyx_GIVEREF(__pyx_v_remove_pis);
  __Pyx_INCREF(__pyx_v_strip_cdata);
  PyTuple_SET_ITEM(__pyx_t_6, 6, __pyx_v_strip_cdata);
  __Pyx_GIVEREF(__pyx_v_strip_cdata);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_6, 7, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_v_filename);
  PyTuple_SET_ITEM(__pyx_t_6, 8, __pyx_v_filename);
  __Pyx_GIVEREF(__pyx_v_filename);
  __Pyx_INCREF(__pyx_v_encoding);
  PyTuple_SET_ITEM(__pyx_t_6, 9, __pyx_v_encoding);
  __Pyx_GIVEREF(__pyx_v_encoding);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":415
 *                              None, filename, encoding)
 * 
 *         if self._for_html:             # <<<<<<<<<<<<<<
 *             self._parse_chunk = htmlparser.htmlParseChunk
 *         else:
 */
  __pyx_t_7 = ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._for_html;
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":416
 * 
 *         if self._for_html:
 *             self._parse_chunk = htmlparser.htmlParseChunk             # <<<<<<<<<<<<<<
 *         else:
 *             self._parse_chunk = xmlparser.xmlParseChunk
 */
    ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_parse_chunk = htmlParseChunk;
    goto __pyx_L21;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":418
 *             self._parse_chunk = htmlparser.htmlParseChunk
 *         else:
 *             self._parse_chunk = xmlparser.xmlParseChunk             # <<<<<<<<<<<<<<
 * 
 *         context = <_IterparseContext>self._getPushParserContext()
 */
    ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_parse_chunk = xmlParseChunk;
  }
  __pyx_L21:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":420
 *             self._parse_chunk = xmlparser.xmlParseChunk
 * 
 *         context = <_IterparseContext>self._getPushParserContext()             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.initParserDict(context._c_ctxt)
 * 
 */
  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_iterparse *)((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_t_3)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":421
 * 
 *         context = <_IterparseContext>self._getPushParserContext()
 *         __GLOBAL_PARSER_CONTEXT.initParserDict(context._c_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         if self._default_encoding is not None:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_context->__pyx_base._c_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":423
 *         __GLOBAL_PARSER_CONTEXT.initParserDict(context._c_ctxt)
 * 
 *         if self._default_encoding is not None:             # <<<<<<<<<<<<<<
 *             if self._for_html:
 *                 error = _htmlCtxtResetPush(
 */
  __pyx_t_7 = (((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._default_encoding != Py_None);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":424
 * 
 *         if self._default_encoding is not None:
 *             if self._for_html:             # <<<<<<<<<<<<<<
 *                 error = _htmlCtxtResetPush(
 *                     context._c_ctxt, NULL, 0,
 */
    __pyx_t_7 = ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._for_html;
    if (__pyx_t_7) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":427
 *                 error = _htmlCtxtResetPush(
 *                     context._c_ctxt, NULL, 0,
 *                     _cstr(self._default_encoding), self._parse_options)             # <<<<<<<<<<<<<<
 *             else:
 *                 xmlparser.xmlCtxtUseOptions(
 */
      __pyx_t_8 = __pyx_f_4lxml_5etree__htmlCtxtResetPush(__pyx_v_context->__pyx_base._c_ctxt, NULL, 0, PyString_AS_STRING(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._default_encoding), ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._parse_options); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_3 = PyInt_FromLong(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_error);
      __pyx_v_error = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L23;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":430
 *             else:
 *                 xmlparser.xmlCtxtUseOptions(
 *                     context._c_ctxt, self._parse_options)             # <<<<<<<<<<<<<<
 *                 error = xmlparser.xmlCtxtResetPush(
 *                     context._c_ctxt, NULL, 0, NULL,
 */
      xmlCtxtUseOptions(__pyx_v_context->__pyx_base._c_ctxt, ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._parse_options);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":433
 *                 error = xmlparser.xmlCtxtResetPush(
 *                     context._c_ctxt, NULL, 0, NULL,
 *                     _cstr(self._default_encoding))             # <<<<<<<<<<<<<<
 * 
 *         context.prepare()
 */
      __pyx_t_3 = PyInt_FromLong(xmlCtxtResetPush(__pyx_v_context->__pyx_base._c_ctxt, NULL, 0, NULL, PyString_AS_STRING(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._default_encoding))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_error);
      __pyx_v_error = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L23:;
    goto __pyx_L22;
  }
  __pyx_L22:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":435
 *                     _cstr(self._default_encoding))
 * 
 *         context.prepare()             # <<<<<<<<<<<<<<
 *         # parser will not be unlocked - no other methods supported
 * 
 */
  __pyx_t_8 = ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.prepare(((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_context)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree.iterparse.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF(__pyx_v_error);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_source);
  __Pyx_DECREF(__pyx_v_events);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_attribute_defaults);
  __Pyx_DECREF(__pyx_v_dtd_validation);
  __Pyx_DECREF(__pyx_v_load_dtd);
  __Pyx_DECREF(__pyx_v_no_network);
  __Pyx_DECREF(__pyx_v_remove_blank_text);
  __Pyx_DECREF(__pyx_v_compact);
  __Pyx_DECREF(__pyx_v_resolve_entities);
  __Pyx_DECREF(__pyx_v_remove_comments);
  __Pyx_DECREF(__pyx_v_remove_pis);
  __Pyx_DECREF(__pyx_v_strip_cdata);
  __Pyx_DECREF(__pyx_v_encoding);
  __Pyx_DECREF(__pyx_v_html);
  __Pyx_DECREF(__pyx_v_huge_tree);
  __Pyx_DECREF((PyObject *)__pyx_v_schema);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":441
 *         u"""The error log of the last (or current) parser run.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()
 */

static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(PyObject *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_v_context;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":443
 *         def __get__(self):
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()             # <<<<<<<<<<<<<<
 *             return context._error_log.copy()
 * 
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_iterparse *)((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":444
 *             cdef _ParserContext context
 *             context = self._getPushParserContext()
 *             return context._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserContext _createContext(self, target):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_context->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.iterparse.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":446
 *             return context._error_log.copy()
 * 
 *     cdef _ParserContext _createContext(self, target):             # <<<<<<<<<<<<<<
 *         cdef _IterparseContext context
 *         context = _IterparseContext()
 */

static  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_f_4lxml_5etree_9iterparse__createContext(struct __pyx_obj_4lxml_5etree_iterparse *__pyx_v_self, PyObject *__pyx_v_target) {
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_createContext");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":448
 *     cdef _ParserContext _createContext(self, target):
 *         cdef _IterparseContext context
 *         context = _IterparseContext()             # <<<<<<<<<<<<<<
 *         context._setEventFilter(self._events, self._tag)
 *         return context
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IterparseContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":449
 *         cdef _IterparseContext context
 *         context = _IterparseContext()
 *         context._setEventFilter(self._events, self._tag)             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_setEventFilter(__pyx_v_context, __pyx_v_self->_events, __pyx_v_self->_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":450
 *         context = _IterparseContext()
 *         context._setEventFilter(self._events, self._tag)
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)__pyx_v_context);
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.iterparse._createContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":452
 *         return context
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         raise TypeError, u"iterparse parsers cannot be copied"
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9iterparse_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9iterparse_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":453
 * 
 *     def copy(self):
 *         raise TypeError, u"iterparse parsers cannot be copied"             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_237), 0);
  {__pyx_filename = __pyx_f[14]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.iterparse.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":455
 *         raise TypeError, u"iterparse parsers cannot be copied"
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9iterparse___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9iterparse___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":456
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":458
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef _IterparseContext context
 *         cdef xmlparser.xmlParserCtxt* pctxt
 */

static PyObject *__pyx_pf_4lxml_5etree_9iterparse___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_9iterparse___next__(PyObject *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__IterparseContext *__pyx_v_context;
  xmlParserCtxt *__pyx_v_pctxt;
  FILE *__pyx_v_c_stream;
  char *__pyx_v_c_data;
  Py_ssize_t __pyx_v_c_data_len;
  int __pyx_v_error;
  int __pyx_v_done;
  PyObject *__pyx_v_item;
  PyObject *__pyx_v_data;
  PyObject *__pyx_v_element;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":465
 *         cdef Py_ssize_t c_data_len
 *         cdef int error, done
 *         if self._source is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":466
 *         cdef int error, done
 *         if self._source is None:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *         context = <_IterparseContext>self._push_parser_context
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[14]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":468
 *             raise StopIteration
 * 
 *         context = <_IterparseContext>self._push_parser_context             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(context._events) > context._event_index:
 *             item = python.PyList_GET_ITEM(context._events, context._event_index)
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IterparseContext *)((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._push_parser_context)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._push_parser_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":469
 * 
 *         context = <_IterparseContext>self._push_parser_context
 *         if python.PyList_GET_SIZE(context._events) > context._event_index:             # <<<<<<<<<<<<<<
 *             item = python.PyList_GET_ITEM(context._events, context._event_index)
 *             python.Py_INCREF(item) # 'borrowed reference' from PyList_GET_ITEM
 */
  __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)__pyx_v_context->_events)) > __pyx_v_context->_event_index);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":470
 *         context = <_IterparseContext>self._push_parser_context
 *         if python.PyList_GET_SIZE(context._events) > context._event_index:
 *             item = python.PyList_GET_ITEM(context._events, context._event_index)             # <<<<<<<<<<<<<<
 *             python.Py_INCREF(item) # 'borrowed reference' from PyList_GET_ITEM
 *             context._event_index += 1
 */
    __pyx_t_2 = PyList_GET_ITEM(((PyObject *)__pyx_v_context->_events), __pyx_v_context->_event_index); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":471
 *         if python.PyList_GET_SIZE(context._events) > context._event_index:
 *             item = python.PyList_GET_ITEM(context._events, context._event_index)
 *             python.Py_INCREF(item) # 'borrowed reference' from PyList_GET_ITEM             # <<<<<<<<<<<<<<
 *             context._event_index += 1
 *             return item
 */
    Py_INCREF(__pyx_v_item);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":472
 *             item = python.PyList_GET_ITEM(context._events, context._event_index)
 *             python.Py_INCREF(item) # 'borrowed reference' from PyList_GET_ITEM
 *             context._event_index += 1             # <<<<<<<<<<<<<<
 *             return item
 * 
 */
    __pyx_v_context->_event_index += 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":473
 *             python.Py_INCREF(item) # 'borrowed reference' from PyList_GET_ITEM
 *             context._event_index += 1
 *             return item             # <<<<<<<<<<<<<<
 * 
 *         del context._events[:]
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_item);
    __pyx_r = __pyx_v_item;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":475
 *             return item
 * 
 *         del context._events[:]             # <<<<<<<<<<<<<<
 *         pctxt = context._c_ctxt
 *         error = done = 0
 */
  if (PySequence_DelSlice(((PyObject *)__pyx_v_context->_events), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":476
 * 
 *         del context._events[:]
 *         pctxt = context._c_ctxt             # <<<<<<<<<<<<<<
 *         error = done = 0
 *         c_stream = python.PyFile_AsFile(self._source)
 */
  __pyx_v_pctxt = __pyx_v_context->__pyx_base._c_ctxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":477
 *         del context._events[:]
 *         pctxt = context._c_ctxt
 *         error = done = 0             # <<<<<<<<<<<<<<
 *         c_stream = python.PyFile_AsFile(self._source)
 *         while python.PyList_GET_SIZE(context._events) == 0:
 */
  __pyx_v_error = 0;
  __pyx_v_done = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":478
 *         pctxt = context._c_ctxt
 *         error = done = 0
 *         c_stream = python.PyFile_AsFile(self._source)             # <<<<<<<<<<<<<<
 *         while python.PyList_GET_SIZE(context._events) == 0:
 *             if c_stream is NULL:
 */
  __pyx_v_c_stream = PyFile_AsFile(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":479
 *         error = done = 0
 *         c_stream = python.PyFile_AsFile(self._source)
 *         while python.PyList_GET_SIZE(context._events) == 0:             # <<<<<<<<<<<<<<
 *             if c_stream is NULL:
 *                 data = self._source.read(__ITERPARSE_CHUNK_SIZE)
 */
  while (1) {
    __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)__pyx_v_context->_events)) == 0);
    if (!__pyx_t_1) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":480
 *         c_stream = python.PyFile_AsFile(self._source)
 *         while python.PyList_GET_SIZE(context._events) == 0:
 *             if c_stream is NULL:             # <<<<<<<<<<<<<<
 *                 data = self._source.read(__ITERPARSE_CHUNK_SIZE)
 *                 if not python.PyString_Check(data):
 */
    __pyx_t_1 = (__pyx_v_c_stream == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":481
 *         while python.PyList_GET_SIZE(context._events) == 0:
 *             if c_stream is NULL:
 *                 data = self._source.read(__ITERPARSE_CHUNK_SIZE)             # <<<<<<<<<<<<<<
 *                 if not python.PyString_Check(data):
 *                     self._source = None
 */
      __pyx_t_2 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source, __pyx_n_s__read); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_int_32768);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_32768);
      __Pyx_GIVEREF(__pyx_int_32768);
      __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_data);
      __pyx_v_data = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":482
 *             if c_stream is NULL:
 *                 data = self._source.read(__ITERPARSE_CHUNK_SIZE)
 *                 if not python.PyString_Check(data):             # <<<<<<<<<<<<<<
 *                     self._source = None
 *                     raise TypeError, u"reading file objects must return plain strings"
 */
      __pyx_t_1 = (!PyString_Check(__pyx_v_data));
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":483
 *                 data = self._source.read(__ITERPARSE_CHUNK_SIZE)
 *                 if not python.PyString_Check(data):
 *                     self._source = None             # <<<<<<<<<<<<<<
 *                     raise TypeError, u"reading file objects must return plain strings"
 *                 c_data_len = python.PyString_GET_SIZE(data)
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
        __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
        ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source = Py_None;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":484
 *                 if not python.PyString_Check(data):
 *                     self._source = None
 *                     raise TypeError, u"reading file objects must return plain strings"             # <<<<<<<<<<<<<<
 *                 c_data_len = python.PyString_GET_SIZE(data)
 *                 c_data = _cstr(data)
 */
        __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_238), 0);
        {__pyx_filename = __pyx_f[14]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":485
 *                     self._source = None
 *                     raise TypeError, u"reading file objects must return plain strings"
 *                 c_data_len = python.PyString_GET_SIZE(data)             # <<<<<<<<<<<<<<
 *                 c_data = _cstr(data)
 *                 done = (c_data_len == 0)
 */
      __pyx_v_c_data_len = PyString_GET_SIZE(__pyx_v_data);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":486
 *                     raise TypeError, u"reading file objects must return plain strings"
 *                 c_data_len = python.PyString_GET_SIZE(data)
 *                 c_data = _cstr(data)             # <<<<<<<<<<<<<<
 *                 done = (c_data_len == 0)
 *                 error = self._parse_chunk(pctxt, c_data, c_data_len, done)
 */
      __pyx_v_c_data = PyString_AS_STRING(__pyx_v_data);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":487
 *                 c_data_len = python.PyString_GET_SIZE(data)
 *                 c_data = _cstr(data)
 *                 done = (c_data_len == 0)             # <<<<<<<<<<<<<<
 *                 error = self._parse_chunk(pctxt, c_data, c_data_len, done)
 *             else:
 */
      __pyx_v_done = (__pyx_v_c_data_len == 0);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":488
 *                 c_data = _cstr(data)
 *                 done = (c_data_len == 0)
 *                 error = self._parse_chunk(pctxt, c_data, c_data_len, done)             # <<<<<<<<<<<<<<
 *             else:
 *                 if self._buffer is None:
 */
      __pyx_v_error = ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_parse_chunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_c_data_len, __pyx_v_done);
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":490
 *                 error = self._parse_chunk(pctxt, c_data, c_data_len, done)
 *             else:
 *                 if self._buffer is None:             # <<<<<<<<<<<<<<
 *                     self._buffer = python.PyString_FromStringAndSize(
 *                         NULL, __ITERPARSE_CHUNK_SIZE)
 */
      __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer == Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":492
 *                 if self._buffer is None:
 *                     self._buffer = python.PyString_FromStringAndSize(
 *                         NULL, __ITERPARSE_CHUNK_SIZE)             # <<<<<<<<<<<<<<
 *                 c_data = _cstr(self._buffer)
 *                 with nogil:
 */
        __pyx_t_4 = PyString_FromStringAndSize(NULL, 32768); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":491
 *             else:
 *                 if self._buffer is None:
 *                     self._buffer = python.PyString_FromStringAndSize(             # <<<<<<<<<<<<<<
 *                         NULL, __ITERPARSE_CHUNK_SIZE)
 *                 c_data = _cstr(self._buffer)
 */
        __Pyx_GIVEREF(__pyx_t_4);
        __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer);
        __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer);
        ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":493
 *                     self._buffer = python.PyString_FromStringAndSize(
 *                         NULL, __ITERPARSE_CHUNK_SIZE)
 *                 c_data = _cstr(self._buffer)             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     c_data_len = cstd.fread(
 */
      __pyx_v_c_data = PyString_AS_STRING(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":494
 *                         NULL, __ITERPARSE_CHUNK_SIZE)
 *                 c_data = _cstr(self._buffer)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     c_data_len = cstd.fread(
 *                         c_data, 1, __ITERPARSE_CHUNK_SIZE, c_stream)
 */
      { PyThreadState *_save;
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":496
 *                 with nogil:
 *                     c_data_len = cstd.fread(
 *                         c_data, 1, __ITERPARSE_CHUNK_SIZE, c_stream)             # <<<<<<<<<<<<<<
 *                     if c_data_len < __ITERPARSE_CHUNK_SIZE:
 *                         if cstd.ferror(c_stream):
 */
          __pyx_v_c_data_len = fread(__pyx_v_c_data, 1, 32768, __pyx_v_c_stream);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":497
 *                     c_data_len = cstd.fread(
 *                         c_data, 1, __ITERPARSE_CHUNK_SIZE, c_stream)
 *                     if c_data_len < __ITERPARSE_CHUNK_SIZE:             # <<<<<<<<<<<<<<
 *                         if cstd.ferror(c_stream):
 *                             error = 1
 */
          __pyx_t_1 = (__pyx_v_c_data_len < 32768);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":498
 *                         c_data, 1, __ITERPARSE_CHUNK_SIZE, c_stream)
 *                     if c_data_len < __ITERPARSE_CHUNK_SIZE:
 *                         if cstd.ferror(c_stream):             # <<<<<<<<<<<<<<
 *                             error = 1
 *                         elif cstd.feof(c_stream):
 */
            __pyx_t_5 = ferror(__pyx_v_c_stream);
            if (__pyx_t_5) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":499
 *                     if c_data_len < __ITERPARSE_CHUNK_SIZE:
 *                         if cstd.ferror(c_stream):
 *                             error = 1             # <<<<<<<<<<<<<<
 *                         elif cstd.feof(c_stream):
 *                             done = 1
 */
              __pyx_v_error = 1;
              goto __pyx_L18;
            }

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":500
 *                         if cstd.ferror(c_stream):
 *                             error = 1
 *                         elif cstd.feof(c_stream):             # <<<<<<<<<<<<<<
 *                             done = 1
 *                 if not error:
 */
            __pyx_t_5 = feof(__pyx_v_c_stream);
            if (__pyx_t_5) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":501
 *                             error = 1
 *                         elif cstd.feof(c_stream):
 *                             done = 1             # <<<<<<<<<<<<<<
 *                 if not error:
 *                     error = self._parse_chunk(
 */
              __pyx_v_done = 1;
              goto __pyx_L18;
            }
            __pyx_L18:;
            goto __pyx_L17;
          }
          __pyx_L17:;
        }
        /*finally:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":494
 *                         NULL, __ITERPARSE_CHUNK_SIZE)
 *                 c_data = _cstr(self._buffer)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     c_data_len = cstd.fread(
 *                         c_data, 1, __ITERPARSE_CHUNK_SIZE, c_stream)
 */
          Py_BLOCK_THREADS
        }
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":502
 *                         elif cstd.feof(c_stream):
 *                             done = 1
 *                 if not error:             # <<<<<<<<<<<<<<
 *                     error = self._parse_chunk(
 *                         pctxt, c_data, c_data_len, done)
 */
      __pyx_t_1 = (!__pyx_v_error);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":504
 *                 if not error:
 *                     error = self._parse_chunk(
 *                         pctxt, c_data, c_data_len, done)             # <<<<<<<<<<<<<<
 *             if error or done:
 *                 self._buffer = None
 */
        __pyx_v_error = ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_parse_chunk(__pyx_v_pctxt, __pyx_v_c_data, __pyx_v_c_data_len, __pyx_v_done);
        goto __pyx_L19;
      }
      __pyx_L19:;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":505
 *                     error = self._parse_chunk(
 *                         pctxt, c_data, c_data_len, done)
 *             if error or done:             # <<<<<<<<<<<<<<
 *                 self._buffer = None
 *                 break
 */
    if (!__pyx_v_error) {
      __pyx_t_1 = __pyx_v_done;
    } else {
      __pyx_t_1 = __pyx_v_error;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":506
 *                         pctxt, c_data, c_data_len, done)
 *             if error or done:
 *                 self._buffer = None             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer);
      __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer);
      ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_buffer = Py_None;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":507
 *             if error or done:
 *                 self._buffer = None
 *                 break             # <<<<<<<<<<<<<<
 * 
 *         if not error and context._validator is not None:
 */
      goto __pyx_L8_break;
      goto __pyx_L20;
    }
    __pyx_L20:;
  }
  __pyx_L8_break:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":509
 *                 break
 * 
 *         if not error and context._validator is not None:             # <<<<<<<<<<<<<<
 *             error = not context._validator.isvalid()
 *         if error:
 */
  __pyx_t_1 = (!__pyx_v_error);
  if (__pyx_t_1) {
    __pyx_t_6 = (((PyObject *)__pyx_v_context->__pyx_base._validator) != Py_None);
    __pyx_t_7 = __pyx_t_6;
  } else {
    __pyx_t_7 = __pyx_t_1;
  }
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":510
 * 
 *         if not error and context._validator is not None:
 *             error = not context._validator.isvalid()             # <<<<<<<<<<<<<<
 *         if error:
 *             self._source = None
 */
    __pyx_v_error = (!((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_context->__pyx_base._validator->__pyx_vtab)->isvalid(__pyx_v_context->__pyx_base._validator));
    goto __pyx_L21;
  }
  __pyx_L21:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":511
 *         if not error and context._validator is not None:
 *             error = not context._validator.isvalid()
 *         if error:             # <<<<<<<<<<<<<<
 *             self._source = None
 *             del context._events[:]
 */
  __pyx_t_5 = __pyx_v_error;
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":512
 *             error = not context._validator.isvalid()
 *         if error:
 *             self._source = None             # <<<<<<<<<<<<<<
 *             del context._events[:]
 *             context._assureDocGetsFreed()
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
    ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source = Py_None;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":513
 *         if error:
 *             self._source = None
 *             del context._events[:]             # <<<<<<<<<<<<<<
 *             context._assureDocGetsFreed()
 *             _raiseParseError(pctxt, self._filename, context._error_log)
 */
    if (PySequence_DelSlice(((PyObject *)__pyx_v_context->_events), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":514
 *             self._source = None
 *             del context._events[:]
 *             context._assureDocGetsFreed()             # <<<<<<<<<<<<<<
 *             _raiseParseError(pctxt, self._filename, context._error_log)
 *         if python.PyList_GET_SIZE(context._events) == 0:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__IterparseContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab)->_assureDocGetsFreed(__pyx_v_context);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":515
 *             del context._events[:]
 *             context._assureDocGetsFreed()
 *             _raiseParseError(pctxt, self._filename, context._error_log)             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(context._events) == 0:
 *             self.root = context._root
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_pctxt, ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->__pyx_base._filename, __pyx_v_context->__pyx_base._error_log); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L22;
  }
  __pyx_L22:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":516
 *             context._assureDocGetsFreed()
 *             _raiseParseError(pctxt, self._filename, context._error_log)
 *         if python.PyList_GET_SIZE(context._events) == 0:             # <<<<<<<<<<<<<<
 *             self.root = context._root
 *             self._source = None
 */
  __pyx_t_7 = (PyList_GET_SIZE(((PyObject *)__pyx_v_context->_events)) == 0);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":517
 *             _raiseParseError(pctxt, self._filename, context._error_log)
 *         if python.PyList_GET_SIZE(context._events) == 0:
 *             self.root = context._root             # <<<<<<<<<<<<<<
 *             self._source = None
 *             raise StopIteration
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_context->_root));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_context->_root));
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->root);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->root);
    ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->root = ((PyObject *)__pyx_v_context->_root);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":518
 *         if python.PyList_GET_SIZE(context._events) == 0:
 *             self.root = context._root
 *             self._source = None             # <<<<<<<<<<<<<<
 *             raise StopIteration
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source);
    ((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self)->_source = Py_None;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":519
 *             self.root = context._root
 *             self._source = None
 *             raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *         context._event_index = 1
 */
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
    {__pyx_filename = __pyx_f[14]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L23;
  }
  __pyx_L23:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":521
 *             raise StopIteration
 * 
 *         context._event_index = 1             # <<<<<<<<<<<<<<
 *         element = python.PyList_GET_ITEM(context._events, 0)
 *         python.Py_INCREF(element) # 'borrowed reference' from PyList_GET_ITEM
 */
  __pyx_v_context->_event_index = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":522
 * 
 *         context._event_index = 1
 *         element = python.PyList_GET_ITEM(context._events, 0)             # <<<<<<<<<<<<<<
 *         python.Py_INCREF(element) # 'borrowed reference' from PyList_GET_ITEM
 *         return element
 */
  __pyx_t_4 = PyList_GET_ITEM(((PyObject *)__pyx_v_context->_events), 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_v_element);
  __pyx_v_element = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":523
 *         context._event_index = 1
 *         element = python.PyList_GET_ITEM(context._events, 0)
 *         python.Py_INCREF(element) # 'borrowed reference' from PyList_GET_ITEM             # <<<<<<<<<<<<<<
 *         return element
 * 
 */
  Py_INCREF(__pyx_v_element);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":524
 *         element = python.PyList_GET_ITEM(context._events, 0)
 *         python.Py_INCREF(element) # 'borrowed reference' from PyList_GET_ITEM
 *         return element             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_element);
  __pyx_r = __pyx_v_element;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.iterparse.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF(__pyx_v_data);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":543
 *     cdef char*  _tag_name
 * 
 *     def __init__(self, element_or_tree, events=(u"end",), tag=None):             # <<<<<<<<<<<<<<
 *         cdef _Element root
 *         cdef int ns_count
 */

static int __pyx_pf_4lxml_5etree_8iterwalk___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_8iterwalk___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_element_or_tree = 0;
  PyObject *__pyx_v_events = 0;
  PyObject *__pyx_v_tag = 0;
  struct LxmlElement *__pyx_v_root;
  int __pyx_v_ns_count;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_or_tree,&__pyx_n_s__events,&__pyx_n_s__tag,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = __pyx_k_239;
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_or_tree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__events);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
      case  2:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tag);
        if (unlikely(value)) { values[2] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element_or_tree = values[0];
    __pyx_v_events = values[1];
    __pyx_v_tag = values[2];
  } else {
    __pyx_v_events = __pyx_k_239;
    __pyx_v_tag = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  3: __pyx_v_tag = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: __pyx_v_events = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_element_or_tree = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.iterwalk.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_element_or_tree);
  __Pyx_INCREF(__pyx_v_events);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_root = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":546
 *         cdef _Element root
 *         cdef int ns_count
 *         root = _rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         self._setTagFilter(tag)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root));
  __pyx_v_root = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":547
 *         cdef int ns_count
 *         root = _rootNodeOrRaise(element_or_tree)
 *         self._event_filter = _buildIterparseEventFilter(events)             # <<<<<<<<<<<<<<
 *         self._setTagFilter(tag)
 *         self._node_stack  = []
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__buildIterparseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_event_filter = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":548
 *         root = _rootNodeOrRaise(element_or_tree)
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         self._setTagFilter(tag)             # <<<<<<<<<<<<<<
 *         self._node_stack  = []
 *         self._pop_node = self._node_stack.pop
 */
  ((struct __pyx_vtabstruct_4lxml_5etree_iterwalk *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->__pyx_vtab)->_setTagFilter(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self), __pyx_v_tag);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":549
 *         self._event_filter = _buildIterparseEventFilter(events)
 *         self._setTagFilter(tag)
 *         self._node_stack  = []             # <<<<<<<<<<<<<<
 *         self._pop_node = self._node_stack.pop
 *         self._events = []
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack));
  ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":550
 *         self._setTagFilter(tag)
 *         self._node_stack  = []
 *         self._pop_node = self._node_stack.pop             # <<<<<<<<<<<<<<
 *         self._events = []
 *         self._pop_event = self._events.pop
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_node);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_node);
  ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_node = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":551
 *         self._node_stack  = []
 *         self._pop_node = self._node_stack.pop
 *         self._events = []             # <<<<<<<<<<<<<<
 *         self._pop_event = self._events.pop
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events));
  ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":552
 *         self._pop_node = self._node_stack.pop
 *         self._events = []
 *         self._pop_event = self._events.pop             # <<<<<<<<<<<<<<
 * 
 *         if self._event_filter != 0:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events), __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_event);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_event);
  ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_event = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":554
 *         self._pop_event = self._events.pop
 * 
 *         if self._event_filter != 0:             # <<<<<<<<<<<<<<
 *             self._index = 0
 *             ns_count = self._start_node(root)
 */
  __pyx_t_3 = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_event_filter != 0);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":555
 * 
 *         if self._event_filter != 0:
 *             self._index = 0             # <<<<<<<<<<<<<<
 *             ns_count = self._start_node(root)
 *             self._node_stack.append( (root, ns_count) )
 */
    ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":556
 *         if self._event_filter != 0:
 *             self._index = 0
 *             ns_count = self._start_node(root)             # <<<<<<<<<<<<<<
 *             self._node_stack.append( (root, ns_count) )
 *         else:
 */
    __pyx_v_ns_count = ((struct __pyx_vtabstruct_4lxml_5etree_iterwalk *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->__pyx_vtab)->_start_node(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self), __pyx_v_root);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":557
 *             self._index = 0
 *             ns_count = self._start_node(root)
 *             self._node_stack.append( (root, ns_count) )             # <<<<<<<<<<<<<<
 *         else:
 *             self._index = -1
 */
    if (unlikely(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_1 = PyInt_FromLong(__pyx_v_ns_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_root));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_2 = PyList_Append(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack), __pyx_t_4); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":559
 *             self._node_stack.append( (root, ns_count) )
 *         else:
 *             self._index = -1             # <<<<<<<<<<<<<<
 * 
 *     cdef void _setTagFilter(self, tag):
 */
    ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index = -1;
  }
  __pyx_L6:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.iterwalk.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_element_or_tree);
  __Pyx_DECREF(__pyx_v_events);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":561
 *             self._index = -1
 * 
 *     cdef void _setTagFilter(self, tag):             # <<<<<<<<<<<<<<
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL
 */

static  void __pyx_f_4lxml_5etree_8iterwalk__setTagFilter(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_v_href;
  PyObject *__pyx_v_name;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_setTagFilter");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_tag);
  __pyx_v_href = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":562
 * 
 *     cdef void _setTagFilter(self, tag):
 *         if tag is None or tag == u'*':             # <<<<<<<<<<<<<<
 *             self._tag_href  = NULL
 *             self._tag_name  = NULL
 */
  __pyx_t_1 = (__pyx_v_tag == Py_None);
  if (!__pyx_t_1) {
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_tag, ((PyObject *)__pyx_kp_u_100), Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":563
 *     cdef void _setTagFilter(self, tag):
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL             # <<<<<<<<<<<<<<
 *             self._tag_name  = NULL
 *         else:
 */
    __pyx_v_self->_tag_href = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":564
 *         if tag is None or tag == u'*':
 *             self._tag_href  = NULL
 *             self._tag_name  = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             self._tag_tuple = _getNsTag(tag)
 */
    __pyx_v_self->_tag_name = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":566
 *             self._tag_name  = NULL
 *         else:
 *             self._tag_tuple = _getNsTag(tag)             # <<<<<<<<<<<<<<
 *             href, name = self._tag_tuple
 *             if href is None or href == u'*':
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_tag_tuple);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_tag_tuple));
    __pyx_v_self->_tag_tuple = ((PyObject *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":567
 *         else:
 *             self._tag_tuple = _getNsTag(tag)
 *             href, name = self._tag_tuple             # <<<<<<<<<<<<<<
 *             if href is None or href == u'*':
 *                 self._tag_href = NULL
 */
    if (likely(((PyObject *)__pyx_v_self->_tag_tuple) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_self->_tag_tuple)) == 2)) {
      PyObject* tuple = ((PyObject *)__pyx_v_self->_tag_tuple);
      __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __Pyx_UnpackTupleError(((PyObject *)__pyx_v_self->_tag_tuple), 2);
      {__pyx_filename = __pyx_f[14]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":568
 *             self._tag_tuple = _getNsTag(tag)
 *             href, name = self._tag_tuple
 *             if href is None or href == u'*':             # <<<<<<<<<<<<<<
 *                 self._tag_href = NULL
 *             else:
 */
    __pyx_t_4 = (__pyx_v_href == Py_None);
    if (!__pyx_t_4) {
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_href, ((PyObject *)__pyx_kp_u_100), Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __pyx_t_1;
    } else {
      __pyx_t_3 = __pyx_t_4;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":569
 *             href, name = self._tag_tuple
 *             if href is None or href == u'*':
 *                 self._tag_href = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._tag_href = _cstr(href)
 */
      __pyx_v_self->_tag_href = NULL;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":571
 *                 self._tag_href = NULL
 *             else:
 *                 self._tag_href = _cstr(href)             # <<<<<<<<<<<<<<
 *             if name is None or name == u'*':
 *                 self._tag_name = NULL
 */
      __pyx_v_self->_tag_href = PyString_AS_STRING(__pyx_v_href);
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":572
 *             else:
 *                 self._tag_href = _cstr(href)
 *             if name is None or name == u'*':             # <<<<<<<<<<<<<<
 *                 self._tag_name = NULL
 *             else:
 */
    __pyx_t_3 = (__pyx_v_name == Py_None);
    if (!__pyx_t_3) {
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_name, ((PyObject *)__pyx_kp_u_100), Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_1 = __pyx_t_4;
    } else {
      __pyx_t_1 = __pyx_t_3;
    }
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":573
 *                 self._tag_href = _cstr(href)
 *             if name is None or name == u'*':
 *                 self._tag_name = NULL             # <<<<<<<<<<<<<<
 *             else:
 *                 self._tag_name = _cstr(name)
 */
      __pyx_v_self->_tag_name = NULL;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":575
 *                 self._tag_name = NULL
 *             else:
 *                 self._tag_name = _cstr(name)             # <<<<<<<<<<<<<<
 *             if self._tag_href is NULL and self._tag_name is NULL:
 *                 self._tag_tuple = None
 */
      __pyx_v_self->_tag_name = PyString_AS_STRING(__pyx_v_name);
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":576
 *             else:
 *                 self._tag_name = _cstr(name)
 *             if self._tag_href is NULL and self._tag_name is NULL:             # <<<<<<<<<<<<<<
 *                 self._tag_tuple = None
 * 
 */
    __pyx_t_1 = (__pyx_v_self->_tag_href == NULL);
    if (__pyx_t_1) {
      __pyx_t_3 = (__pyx_v_self->_tag_name == NULL);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_1;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":577
 *                 self._tag_name = _cstr(name)
 *             if self._tag_href is NULL and self._tag_name is NULL:
 *                 self._tag_tuple = None             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_tag_tuple);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->_tag_tuple));
      __pyx_v_self->_tag_tuple = ((PyObject *)Py_None);
      goto __pyx_L6;
    }
    __pyx_L6:;
  }
  __pyx_L3:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("lxml.etree.iterwalk._setTagFilter");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_href);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":579
 *                 self._tag_tuple = None
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8iterwalk___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8iterwalk___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__iter__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":580
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":582
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_child
 *         cdef _Element node
 */

static PyObject *__pyx_pf_4lxml_5etree_8iterwalk___next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8iterwalk___next__(PyObject *__pyx_v_self) {
  xmlNode *__pyx_v_c_child;
  struct LxmlElement *__pyx_v_node;
  struct LxmlElement *__pyx_v_next_node;
  int __pyx_v_ns_count;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__next__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_next_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":587
 *         cdef _Element next_node
 *         cdef int ns_count
 *         if python.PyList_GET_SIZE(self._events):             # <<<<<<<<<<<<<<
 *             return self._pop_event(0)
 *         ns_count = 0
 */
  __pyx_t_1 = PyList_GET_SIZE(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":588
 *         cdef int ns_count
 *         if python.PyList_GET_SIZE(self._events):
 *             return self._pop_event(0)             # <<<<<<<<<<<<<<
 *         ns_count = 0
 *         # find next node
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    __pyx_t_3 = PyObject_Call(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_event, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":589
 *         if python.PyList_GET_SIZE(self._events):
 *             return self._pop_event(0)
 *         ns_count = 0             # <<<<<<<<<<<<<<
 *         # find next node
 *         while self._index >= 0:
 */
  __pyx_v_ns_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":591
 *         ns_count = 0
 *         # find next node
 *         while self._index >= 0:             # <<<<<<<<<<<<<<
 *             node = self._node_stack[self._index][0]
 * 
 */
  while (1) {
    __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index >= 0);
    if (!__pyx_t_4) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":592
 *         # find next node
 *         while self._index >= 0:
 *             node = self._node_stack[self._index][0]             # <<<<<<<<<<<<<<
 * 
 *             c_child = _findChildForwards(node._c_node, 0)
 */
    __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack), ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":594
 *             node = self._node_stack[self._index][0]
 * 
 *             c_child = _findChildForwards(node._c_node, 0)             # <<<<<<<<<<<<<<
 *             if c_child is not NULL:
 *                 # try children
 */
    __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":595
 * 
 *             c_child = _findChildForwards(node._c_node, 0)
 *             if c_child is not NULL:             # <<<<<<<<<<<<<<
 *                 # try children
 *                 next_node = _elementFactory(node._doc, c_child)
 */
    __pyx_t_4 = (__pyx_v_c_child != NULL);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":597
 *             if c_child is not NULL:
 *                 # try children
 *                 next_node = _elementFactory(node._doc, c_child)             # <<<<<<<<<<<<<<
 *             else:
 *                 # back off
 */
      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_node->_doc, __pyx_v_c_child)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(((PyObject *)__pyx_v_next_node));
      __pyx_v_next_node = ((struct LxmlElement *)__pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L8;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":600
 *             else:
 *                 # back off
 *                 next_node = None             # <<<<<<<<<<<<<<
 *                 while next_node is None:
 *                     # back off through parents
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(((PyObject *)__pyx_v_next_node));
      __pyx_v_next_node = ((struct LxmlElement *)Py_None);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":601
 *                 # back off
 *                 next_node = None
 *                 while next_node is None:             # <<<<<<<<<<<<<<
 *                     # back off through parents
 *                     self._index = self._index - 1
 */
      while (1) {
        __pyx_t_4 = (((PyObject *)__pyx_v_next_node) == Py_None);
        if (!__pyx_t_4) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":603
 *                 while next_node is None:
 *                     # back off through parents
 *                     self._index = self._index - 1             # <<<<<<<<<<<<<<
 *                     node = self._end_node()
 *                     if self._index < 0:
 */
        ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index - 1);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":604
 *                     # back off through parents
 *                     self._index = self._index - 1
 *                     node = self._end_node()             # <<<<<<<<<<<<<<
 *                     if self._index < 0:
 *                         break
 */
        __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_iterwalk *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->__pyx_vtab)->_end_node(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_v_node));
        __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
        __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":605
 *                     self._index = self._index - 1
 *                     node = self._end_node()
 *                     if self._index < 0:             # <<<<<<<<<<<<<<
 *                         break
 *                     next_node = node.getnext()
 */
        __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index < 0);
        if (__pyx_t_4) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":606
 *                     node = self._end_node()
 *                     if self._index < 0:
 *                         break             # <<<<<<<<<<<<<<
 *                     next_node = node.getnext()
 *             if next_node is not None:
 */
          goto __pyx_L10_break;
          goto __pyx_L11;
        }
        __pyx_L11:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":607
 *                     if self._index < 0:
 *                         break
 *                     next_node = node.getnext()             # <<<<<<<<<<<<<<
 *             if next_node is not None:
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 */
        __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_node), __pyx_n_s__getnext); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(((PyObject *)__pyx_v_next_node));
        __pyx_v_next_node = ((struct LxmlElement *)__pyx_t_3);
        __pyx_t_3 = 0;
      }
      __pyx_L10_break:;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":608
 *                         break
 *                     next_node = node.getnext()
 *             if next_node is not None:             # <<<<<<<<<<<<<<
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 *                                          ITERPARSE_FILTER_START_NS):
 */
    __pyx_t_4 = (((PyObject *)__pyx_v_next_node) != Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":610
 *             if next_node is not None:
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 *                                          ITERPARSE_FILTER_START_NS):             # <<<<<<<<<<<<<<
 *                     ns_count = self._start_node(next_node)
 *                 elif self._event_filter & ITERPARSE_FILTER_END_NS:
 */
      __pyx_t_5 = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_event_filter & (__pyx_e_4lxml_5etree_ITERPARSE_FILTER_START | __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS));
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":611
 *                 if self._event_filter & (ITERPARSE_FILTER_START | \
 *                                          ITERPARSE_FILTER_START_NS):
 *                     ns_count = self._start_node(next_node)             # <<<<<<<<<<<<<<
 *                 elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *                     ns_count = _countNsDefs(next_node._c_node)
 */
        __pyx_v_ns_count = ((struct __pyx_vtabstruct_4lxml_5etree_iterwalk *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->__pyx_vtab)->_start_node(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self), __pyx_v_next_node);
        goto __pyx_L13;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":612
 *                                          ITERPARSE_FILTER_START_NS):
 *                     ns_count = self._start_node(next_node)
 *                 elif self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *                     ns_count = _countNsDefs(next_node._c_node)
 *                 self._node_stack.append( (next_node, ns_count) )
 */
      __pyx_t_5 = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":613
 *                     ns_count = self._start_node(next_node)
 *                 elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *                     ns_count = _countNsDefs(next_node._c_node)             # <<<<<<<<<<<<<<
 *                 self._node_stack.append( (next_node, ns_count) )
 *                 self._index = self._index + 1
 */
        __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_next_node->_c_node);
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":614
 *                 elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *                     ns_count = _countNsDefs(next_node._c_node)
 *                 self._node_stack.append( (next_node, ns_count) )             # <<<<<<<<<<<<<<
 *                 self._index = self._index + 1
 *             if python.PyList_GET_SIZE(self._events):
 */
      if (unlikely(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_3 = PyInt_FromLong(__pyx_v_ns_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_v_next_node));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_next_node));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_next_node));
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = PyList_Append(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_node_stack), __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":615
 *                     ns_count = _countNsDefs(next_node._c_node)
 *                 self._node_stack.append( (next_node, ns_count) )
 *                 self._index = self._index + 1             # <<<<<<<<<<<<<<
 *             if python.PyList_GET_SIZE(self._events):
 *                 return self._pop_event(0)
 */
      ((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index = (((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_index + 1);
      goto __pyx_L12;
    }
    __pyx_L12:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":616
 *                 self._node_stack.append( (next_node, ns_count) )
 *                 self._index = self._index + 1
 *             if python.PyList_GET_SIZE(self._events):             # <<<<<<<<<<<<<<
 *                 return self._pop_event(0)
 *         raise StopIteration
 */
    __pyx_t_1 = PyList_GET_SIZE(((PyObject *)((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_events));
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":617
 *                 self._index = self._index + 1
 *             if python.PyList_GET_SIZE(self._events):
 *                 return self._pop_event(0)             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __pyx_t_3 = PyObject_Call(((struct __pyx_obj_4lxml_5etree_iterwalk *)__pyx_v_self)->_pop_event, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
      goto __pyx_L14;
    }
    __pyx_L14:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":618
 *             if python.PyList_GET_SIZE(self._events):
 *                 return self._pop_event(0)
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     cdef int _start_node(self, _Element node):
 */
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0);
  {__pyx_filename = __pyx_f[14]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.iterwalk.__next__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF((PyObject *)__pyx_v_next_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":620
 *         raise StopIteration
 * 
 *     cdef int _start_node(self, _Element node):             # <<<<<<<<<<<<<<
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:
 */

static  int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self, struct LxmlElement *__pyx_v_node) {
  int __pyx_v_ns_count;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_start_node");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":622
 *     cdef int _start_node(self, _Element node):
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:             # <<<<<<<<<<<<<<
 *             ns_count = _appendStartNsEvents(node._c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":623
 *         cdef int ns_count
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:
 *             ns_count = _appendStartNsEvents(node._c_node, self._events)             # <<<<<<<<<<<<<<
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = _countNsDefs(node._c_node)
 */
    __pyx_v_ns_count = __pyx_f_4lxml_5etree__appendStartNsEvents(__pyx_v_node->_c_node, __pyx_v_self->_events);
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":624
 *         if self._event_filter & ITERPARSE_FILTER_START_NS:
 *             ns_count = _appendStartNsEvents(node._c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *             ns_count = _countNsDefs(node._c_node)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":625
 *             ns_count = _appendStartNsEvents(node._c_node, self._events)
 *         elif self._event_filter & ITERPARSE_FILTER_END_NS:
 *             ns_count = _countNsDefs(node._c_node)             # <<<<<<<<<<<<<<
 *         else:
 *             ns_count = 0
 */
    __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_node->_c_node);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":627
 *             ns_count = _countNsDefs(node._c_node)
 *         else:
 *             ns_count = 0             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_START:
 *             if self._tag_tuple is None or \
 */
    __pyx_v_ns_count = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":628
 *         else:
 *             ns_count = 0
 *         if self._event_filter & ITERPARSE_FILTER_START:             # <<<<<<<<<<<<<<
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 */
  __pyx_t_1 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_START);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":629
 *             ns_count = 0
 *         if self._event_filter & ITERPARSE_FILTER_START:
 *             if self._tag_tuple is None or \             # <<<<<<<<<<<<<<
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"start", node) )
 */
    __pyx_t_2 = (__pyx_v_self->_tag_tuple == ((PyObject *)Py_None));
    if (!__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":630
 *         if self._event_filter & ITERPARSE_FILTER_START:
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):             # <<<<<<<<<<<<<<
 *                 self._events.append( (u"start", node) )
 *         return ns_count
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_node->_c_node, __pyx_v_self->_tag_href, __pyx_v_self->_tag_name);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":631
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"start", node) )             # <<<<<<<<<<<<<<
 *         return ns_count
 * 
 */
      if (unlikely(__pyx_v_self->_events == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_n_u__start));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_u__start));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_u__start));
      __Pyx_INCREF(((PyObject *)__pyx_v_node));
      PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_node));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
      __pyx_t_1 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_t_5); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":632
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"start", node) )
 *         return ns_count             # <<<<<<<<<<<<<<
 * 
 *     cdef _Element _end_node(self):
 */
  __pyx_r = __pyx_v_ns_count;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("lxml.etree.iterwalk._start_node");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":634
 *         return ns_count
 * 
 *     cdef _Element _end_node(self):             # <<<<<<<<<<<<<<
 *         cdef _Element node
 *         cdef int i, ns_count
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx_obj_4lxml_5etree_iterwalk *__pyx_v_self) {
  struct LxmlElement *__pyx_v_node;
  int __pyx_v_i;
  int __pyx_v_ns_count;
  PyObject *__pyx_v_event;
  struct LxmlElement *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  __Pyx_RefNannySetupContext("_end_node");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_event = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":637
 *         cdef _Element node
 *         cdef int i, ns_count
 *         node, ns_count = self._pop_node()             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_END:
 *             if self._tag_tuple is None or \
 */
  __pyx_t_1 = PyObject_Call(__pyx_v_self->_pop_node, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_v_ns_count = __pyx_t_4;
  } else {
    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_5, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_5, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_EndUnpack(__pyx_t_5) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_node));
    __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_v_ns_count = __pyx_t_4;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":638
 *         cdef int i, ns_count
 *         node, ns_count = self._pop_node()
 *         if self._event_filter & ITERPARSE_FILTER_END:             # <<<<<<<<<<<<<<
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 */
  __pyx_t_4 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":639
 *         node, ns_count = self._pop_node()
 *         if self._event_filter & ITERPARSE_FILTER_END:
 *             if self._tag_tuple is None or \             # <<<<<<<<<<<<<<
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"end", node) )
 */
    __pyx_t_6 = (__pyx_v_self->_tag_tuple == ((PyObject *)Py_None));
    if (!__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":640
 *         if self._event_filter & ITERPARSE_FILTER_END:
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):             # <<<<<<<<<<<<<<
 *                 self._events.append( (u"end", node) )
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 */
      __pyx_t_7 = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_node->_c_node, __pyx_v_self->_tag_href, __pyx_v_self->_tag_name);
      __pyx_t_8 = __pyx_t_7;
    } else {
      __pyx_t_8 = __pyx_t_6;
    }
    if (__pyx_t_8) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":641
 *             if self._tag_tuple is None or \
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"end", node) )             # <<<<<<<<<<<<<<
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             event = (u"end-ns", None)
 */
      if (unlikely(__pyx_v_self->_events == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_n_u__end));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_u__end));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_u__end));
      __Pyx_INCREF(((PyObject *)__pyx_v_node));
      PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_node));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_node));
      __pyx_t_4 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":642
 *                    _tagMatches(node._c_node, self._tag_href, self._tag_name):
 *                 self._events.append( (u"end", node) )
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:             # <<<<<<<<<<<<<<
 *             event = (u"end-ns", None)
 *             for i from 0 <= i < ns_count:
 */
  __pyx_t_4 = (__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_ITERPARSE_FILTER_END_NS);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":643
 *                 self._events.append( (u"end", node) )
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             event = (u"end-ns", None)             # <<<<<<<<<<<<<<
 *             for i from 0 <= i < ns_count:
 *                 self._events.append(event)
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_222));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_u_222));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_222));
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_DECREF(__pyx_v_event);
    __pyx_v_event = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":644
 *         if self._event_filter & ITERPARSE_FILTER_END_NS:
 *             event = (u"end-ns", None)
 *             for i from 0 <= i < ns_count:             # <<<<<<<<<<<<<<
 *                 self._events.append(event)
 *         return node
 */
    __pyx_t_4 = __pyx_v_ns_count;
    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_4; __pyx_v_i++) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":645
 *             event = (u"end-ns", None)
 *             for i from 0 <= i < ns_count:
 *                 self._events.append(event)             # <<<<<<<<<<<<<<
 *         return node
 */
      if (unlikely(__pyx_v_self->_events == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[14]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_9 = PyList_Append(((PyObject *)__pyx_v_self->_events), __pyx_v_event); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":646
 *             for i from 0 <= i < ns_count:
 *                 self._events.append(event)
 *         return node             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_node));
  __pyx_r = __pyx_v_node;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.iterwalk._end_node");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_event);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":3
 * cdef object _find_id_attributes
 * 
 * def XMLID(text):             # <<<<<<<<<<<<<<
 *     u"""XMLID(text)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_XMLID(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/
static char __pyx_doc_4lxml_5etree_XMLID[] = "XMLID(text)\n\n    Parse the text and return a tuple (root node, ID dictionary).  The root\n    node is the same as returned by the XML() function.  The dictionary\n    contains string-element pairs.  The dictionary keys are the values of 'id'\n    attributes.  The elements referenced by the ID are stored as dictionary\n    values.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_XMLID(PyObject *__pyx_self, PyObject *__pyx_v_text) {
  PyObject *__pyx_v_dic;
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_elem;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("XMLID");
  __pyx_self = __pyx_self;
  __Pyx_INCREF(__pyx_v_text);
  __pyx_v_dic = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_elem = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":14
 *     cdef dict dic
 *     global _find_id_attributes
 *     if _find_id_attributes is None:             # <<<<<<<<<<<<<<
 *         _find_id_attributes = XPath(u'//[inserted by cython to avoid comment start]*[string(@id)]')
 * 
 */
  __pyx_t_1 = (__pyx_v_4lxml_5etree__find_id_attributes == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":15
 *     global _find_id_attributes
 *     if _find_id_attributes is None:
 *         _find_id_attributes = XPath(u'//[inserted by cython to avoid comment start]*[string(@id)]')             # <<<<<<<<<<<<<<
 * 
 *     # ElementTree compatible implementation: parse and look for 'id' attributes
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_240));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_240));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_240));
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPath)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_v_4lxml_5etree__find_id_attributes);
    __Pyx_DECREF(__pyx_v_4lxml_5etree__find_id_attributes);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_v_4lxml_5etree__find_id_attributes = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":18
 * 
 *     # ElementTree compatible implementation: parse and look for 'id' attributes
 *     root = XML(text)             # <<<<<<<<<<<<<<
 *     dic = {}
 *     for elem in _find_id_attributes(root):
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__XML); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_text);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_text);
  __Pyx_GIVEREF(__pyx_v_text);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":19
 *     # ElementTree compatible implementation: parse and look for 'id' attributes
 *     root = XML(text)
 *     dic = {}             # <<<<<<<<<<<<<<
 *     for elem in _find_id_attributes(root):
 *         dic[elem.get(u'id')] = elem
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_DECREF(((PyObject *)__pyx_v_dic));
  __pyx_v_dic = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":20
 *     root = XML(text)
 *     dic = {}
 *     for elem in _find_id_attributes(root):             # <<<<<<<<<<<<<<
 *         dic[elem.get(u'id')] = elem
 *     return (root, dic)
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_root);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_root);
  __Pyx_GIVEREF(__pyx_v_root);
  __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree__find_id_attributes, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_5 = 0; __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4);
  } else {
    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_4))) {
      if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
      if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++;
    } else {
      __pyx_t_2 = PyIter_Next(__pyx_t_4);
      if (!__pyx_t_2) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_v_elem);
    __pyx_v_elem = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":21
 *     dic = {}
 *     for elem in _find_id_attributes(root):
 *         dic[elem.get(u'id')] = elem             # <<<<<<<<<<<<<<
 *     return (root, dic)
 * 
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_elem, __pyx_n_s__get); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_n_u__id));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_u__id));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__id));
    __pyx_t_6 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyDict_SetItem(((PyObject *)__pyx_v_dic), __pyx_t_6, __pyx_v_elem) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":22
 *     for elem in _find_id_attributes(root):
 *         dic[elem.get(u'id')] = elem
 *     return (root, dic)             # <<<<<<<<<<<<<<
 * 
 * def XMLDTDID(text):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_root);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_root);
  __Pyx_GIVEREF(__pyx_v_root);
  __Pyx_INCREF(((PyObject *)__pyx_v_dic));
  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_dic));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_dic));
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree.XMLID");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_dic);
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_elem);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":24
 *     return (root, dic)
 * 
 * def XMLDTDID(text):             # <<<<<<<<<<<<<<
 *     u"""XMLDTDID(text)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_XMLDTDID(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/
static char __pyx_doc_4lxml_5etree_XMLDTDID[] = "XMLDTDID(text)\n\n    Parse the text and return a tuple (root node, ID dictionary).  The root\n    node is the same as returned by the XML() function.  The dictionary\n    contains string-element pairs.  The dictionary keys are the values of ID\n    attributes as defined by the DTD.  The elements referenced by the ID are\n    stored as dictionary values.\n\n    Note that you must not modify the XML tree if you use the ID dictionary.\n    The results are undefined.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_XMLDTDID(PyObject *__pyx_self, PyObject *__pyx_v_text) {
  struct LxmlElement *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("XMLDTDID");
  __pyx_self = __pyx_self;
  __Pyx_INCREF(__pyx_v_text);
  __pyx_v_root = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":37
 *     """
 *     cdef _Element root
 *     root = XML(text)             # <<<<<<<<<<<<<<
 *     # xml:id spec compatible implementation: use DTD ID attributes from libxml2
 *     if root._doc._c_doc.ids is NULL:
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XML); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_text);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_text);
  __Pyx_GIVEREF(__pyx_v_text);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_root));
  __pyx_v_root = ((struct LxmlElement *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":39
 *     root = XML(text)
 *     # xml:id spec compatible implementation: use DTD ID attributes from libxml2
 *     if root._doc._c_doc.ids is NULL:             # <<<<<<<<<<<<<<
 *         return (root, {})
 *     else:
 */
  __pyx_t_4 = (__pyx_v_root->_doc->_c_doc->ids == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":40
 *     # xml:id spec compatible implementation: use DTD ID attributes from libxml2
 *     if root._doc._c_doc.ids is NULL:
 *         return (root, {})             # <<<<<<<<<<<<<<
 *     else:
 *         return (root, _IDDict(root))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_root));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_3));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":42
 *         return (root, {})
 *     else:
 *         return (root, _IDDict(root))             # <<<<<<<<<<<<<<
 * 
 * def parseid(source, parser=None, *, base_url=None):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_root));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IDDict)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_root));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.XMLDTDID");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_root);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":44
 *         return (root, _IDDict(root))
 * 
 * def parseid(source, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
 *     u"""parseid(source, parser=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_parseid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_parseid[] = "parseid(source, parser=None)\n\n    Parses the source into a tuple containing an ElementTree object and an\n    ID dictionary.  If no parser is provided as second argument, the default\n    parser is used.\n\n    Note that you must not modify the XML tree if you use the ID dictionary.\n    The results are undefined.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_parseid(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_parser = 0;
  PyObject *__pyx_v_base_url = 0;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
  __Pyx_RefNannySetupContext("parseid");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__source);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base_url);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "parseid") < 0)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_source = values[0];
    __pyx_v_parser = values[1];
    __pyx_v_base_url = values[2];
  } else {
    __pyx_v_parser = ((PyObject *)Py_None);
    __pyx_v_base_url = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_parser = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_source = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parseid", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.parseid");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":55
 *     """
 *     cdef _Document doc
 *     doc = _parseDocument(source, parser, base_url)             # <<<<<<<<<<<<<<
 *     return (_elementTreeFactory(doc, None), _IDDict(doc))
 * 
 */
  if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_base_url)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":56
 *     cdef _Document doc
 *     doc = _parseDocument(source, parser, base_url)
 *     return (_elementTreeFactory(doc, None), _IDDict(doc))             # <<<<<<<<<<<<<<
 * 
 * cdef class _IDDict:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IDDict)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.parseid");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":69
 *     cdef object _keys
 *     cdef object _items
 *     def __init__(self, etree):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         doc = _documentOrRaise(etree)
 */

static int __pyx_pf_4lxml_5etree_7_IDDict___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_7_IDDict___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  struct LxmlDocument *__pyx_v_doc;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._IDDict.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":71
 *     def __init__(self, etree):
 *         cdef _Document doc
 *         doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *         if doc._c_doc.ids is NULL:
 *             raise ValueError, u"No ID dictionary available."
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":72
 *         cdef _Document doc
 *         doc = _documentOrRaise(etree)
 *         if doc._c_doc.ids is NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"No ID dictionary available."
 *         self._doc = doc
 */
  __pyx_t_2 = (__pyx_v_doc->_c_doc->ids == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":73
 *         doc = _documentOrRaise(etree)
 *         if doc._c_doc.ids is NULL:
 *             raise ValueError, u"No ID dictionary available."             # <<<<<<<<<<<<<<
 *         self._doc = doc
 *         self._keys  = None
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_241), 0);
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":74
 *         if doc._c_doc.ids is NULL:
 *             raise ValueError, u"No ID dictionary available."
 *         self._doc = doc             # <<<<<<<<<<<<<<
 *         self._keys  = None
 *         self._items = None
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc));
  ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc = __pyx_v_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":75
 *             raise ValueError, u"No ID dictionary available."
 *         self._doc = doc
 *         self._keys  = None             # <<<<<<<<<<<<<<
 *         self._items = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
  ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":76
 *         self._doc = doc
 *         self._keys  = None
 *         self._items = None             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
  ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items = Py_None;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":78
 *         self._items = None
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return _IDDict(self._doc)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_copy(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_copy(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":79
 * 
 *     def copy(self):
 *         return _IDDict(self._doc)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, id_name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc));
  __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc));
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IDDict)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.copy");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":81
 *         return _IDDict(self._doc)
 * 
 *     def __getitem__(self, id_name):             # <<<<<<<<<<<<<<
 *         cdef tree.xmlHashTable* c_ids
 *         cdef tree.xmlID* c_id
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name) {
  xmlHashTable *__pyx_v_c_ids;
  xmlID *__pyx_v_c_id;
  xmlAttr *__pyx_v_c_attr;
  PyObject *__pyx_v_id_utf;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("__getitem__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_id_name);
  __pyx_v_id_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":85
 *         cdef tree.xmlID* c_id
 *         cdef xmlAttr* c_attr
 *         c_ids = self._doc._c_doc.ids             # <<<<<<<<<<<<<<
 *         id_utf = _utf8(id_name)
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _cstr(id_utf))
 */
  __pyx_v_c_ids = ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc->_c_doc->ids;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":86
 *         cdef xmlAttr* c_attr
 *         c_ids = self._doc._c_doc.ids
 *         id_utf = _utf8(id_name)             # <<<<<<<<<<<<<<
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _cstr(id_utf))
 *         if c_id is NULL:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_id_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_id_utf);
  __pyx_v_id_utf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":87
 *         c_ids = self._doc._c_doc.ids
 *         id_utf = _utf8(id_name)
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _cstr(id_utf))             # <<<<<<<<<<<<<<
 *         if c_id is NULL:
 *             raise KeyError, u"key not found."
 */
  __pyx_v_c_id = ((xmlID *)xmlHashLookup(__pyx_v_c_ids, PyString_AS_STRING(__pyx_v_id_utf)));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":88
 *         id_utf = _utf8(id_name)
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _cstr(id_utf))
 *         if c_id is NULL:             # <<<<<<<<<<<<<<
 *             raise KeyError, u"key not found."
 *         c_attr = c_id.attr
 */
  __pyx_t_2 = (__pyx_v_c_id == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":89
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(c_ids, _cstr(id_utf))
 *         if c_id is NULL:
 *             raise KeyError, u"key not found."             # <<<<<<<<<<<<<<
 *         c_attr = c_id.attr
 *         if c_attr is NULL or c_attr.parent is NULL:
 */
    __Pyx_Raise(__pyx_builtin_KeyError, ((PyObject *)__pyx_kp_u_242), 0);
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":90
 *         if c_id is NULL:
 *             raise KeyError, u"key not found."
 *         c_attr = c_id.attr             # <<<<<<<<<<<<<<
 *         if c_attr is NULL or c_attr.parent is NULL:
 *             raise KeyError, u"ID attribute not found."
 */
  __pyx_v_c_attr = __pyx_v_c_id->attr;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":91
 *             raise KeyError, u"key not found."
 *         c_attr = c_id.attr
 *         if c_attr is NULL or c_attr.parent is NULL:             # <<<<<<<<<<<<<<
 *             raise KeyError, u"ID attribute not found."
 *         return _elementFactory(self._doc, c_attr.parent)
 */
  __pyx_t_2 = (__pyx_v_c_attr == NULL);
  if (!__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_c_attr->parent == NULL);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":92
 *         c_attr = c_id.attr
 *         if c_attr is NULL or c_attr.parent is NULL:
 *             raise KeyError, u"ID attribute not found."             # <<<<<<<<<<<<<<
 *         return _elementFactory(self._doc, c_attr.parent)
 * 
 */
    __Pyx_Raise(__pyx_builtin_KeyError, ((PyObject *)__pyx_kp_u_243), 0);
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":93
 *         if c_attr is NULL or c_attr.parent is NULL:
 *             raise KeyError, u"ID attribute not found."
 *         return _elementFactory(self._doc, c_attr.parent)             # <<<<<<<<<<<<<<
 * 
 *     def get(self, id_name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc, __pyx_v_c_attr->parent)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict.__getitem__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_id_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_id_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":95
 *         return _elementFactory(self._doc, c_attr.parent)
 * 
 *     def get(self, id_name):             # <<<<<<<<<<<<<<
 *         return self[id_name]
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_get(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_get(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":96
 * 
 *     def get(self, id_name):
 *         return self[id_name]             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, id_name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetItem(__pyx_v_self, __pyx_v_id_name); if (!__pyx_t_1) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":98
 *         return self[id_name]
 * 
 *     def __contains__(self, id_name):             # <<<<<<<<<<<<<<
 *         cdef tree.xmlID* c_id
 *         id_utf = _utf8(id_name)
 */

static int __pyx_pf_4lxml_5etree_7_IDDict___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name); /*proto*/
static int __pyx_pf_4lxml_5etree_7_IDDict___contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name) {
  xmlID *__pyx_v_c_id;
  PyObject *__pyx_v_id_utf;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__contains__");
  __pyx_v_id_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":100
 *     def __contains__(self, id_name):
 *         cdef tree.xmlID* c_id
 *         id_utf = _utf8(id_name)             # <<<<<<<<<<<<<<
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(
 *             self._doc._c_doc.ids, _cstr(id_utf))
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_id_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_id_utf);
  __pyx_v_id_utf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":102
 *         id_utf = _utf8(id_name)
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(
 *             self._doc._c_doc.ids, _cstr(id_utf))             # <<<<<<<<<<<<<<
 *         return c_id is not NULL
 * 
 */
  __pyx_v_c_id = ((xmlID *)xmlHashLookup(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_doc->_c_doc->ids, PyString_AS_STRING(__pyx_v_id_utf)));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":103
 *         c_id = <tree.xmlID*>tree.xmlHashLookup(
 *             self._doc._c_doc.ids, _cstr(id_utf))
 *         return c_id is not NULL             # <<<<<<<<<<<<<<
 * 
 *     def has_key(self, id_name):
 */
  __pyx_r = (__pyx_v_c_id != NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict.__contains__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_id_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":105
 *         return c_id is not NULL
 * 
 *     def has_key(self, id_name):             # <<<<<<<<<<<<<<
 *         return id_name in self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_id_name) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("has_key");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":106
 * 
 *     def has_key(self, id_name):
 *         return id_name in self             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PySequence_Contains(__pyx_v_self, __pyx_v_id_name))); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.has_key");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":108
 *         return id_name in self
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return repr(dict(self))
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":109
 * 
 *     def __repr__(self):
 *         return repr(dict(self))             # <<<<<<<<<<<<<<
 * 
 *     def keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyDict_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Repr(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":111
 *         return repr(dict(self))
 * 
 *     def keys(self):             # <<<<<<<<<<<<<<
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_keys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_keys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("keys");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":112
 * 
 *     def keys(self):
 *         if self._keys is None:             # <<<<<<<<<<<<<<
 *             self._keys = self._build_keys()
 *         return self._keys[:]
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":113
 *     def keys(self):
 *         if self._keys is None:
 *             self._keys = self._build_keys()             # <<<<<<<<<<<<<<
 *         return self._keys[:]
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_keys(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":114
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 *         return self._keys[:]             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PySequence_GetSlice(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.keys");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":116
 *         return self._keys[:]
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict___iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__iter__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":117
 * 
 *     def __iter__(self):
 *         if self._keys is None:             # <<<<<<<<<<<<<<
 *             self._keys = self._build_keys()
 *         return iter(self._keys)
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":118
 *     def __iter__(self):
 *         if self._keys is None:
 *             self._keys = self._build_keys()             # <<<<<<<<<<<<<<
 *         return iter(self._keys)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_keys(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":119
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 *         return iter(self._keys)             # <<<<<<<<<<<<<<
 * 
 *     def iterkeys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetIter(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.__iter__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":121
 *         return iter(self._keys)
 * 
 *     def iterkeys(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_iterkeys(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_iterkeys(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("iterkeys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":122
 * 
 *     def iterkeys(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":124
 *         return self
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 */

static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict___len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pf_4lxml_5etree_7_IDDict___len__(PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  __Pyx_RefNannySetupContext("__len__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":125
 * 
 *     def __len__(self):
 *         if self._keys is None:             # <<<<<<<<<<<<<<
 *             self._keys = self._build_keys()
 *         return len(self._keys)
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":126
 *     def __len__(self):
 *         if self._keys is None:
 *             self._keys = self._build_keys()             # <<<<<<<<<<<<<<
 *         return len(self._keys)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_keys(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":127
 *         if self._keys is None:
 *             self._keys = self._build_keys()
 *         return len(self._keys)             # <<<<<<<<<<<<<<
 * 
 *     def items(self):
 */
  __pyx_t_3 = PyObject_Length(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_keys); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.__len__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":129
 *         return len(self._keys)
 * 
 *     def items(self):             # <<<<<<<<<<<<<<
 *         if self._items is None:
 *             self._items = self._build_items()
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_items(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_items(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("items");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":130
 * 
 *     def items(self):
 *         if self._items is None:             # <<<<<<<<<<<<<<
 *             self._items = self._build_items()
 *         return self._items[:]
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":131
 *     def items(self):
 *         if self._items is None:
 *             self._items = self._build_items()             # <<<<<<<<<<<<<<
 *         return self._items[:]
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_items(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":132
 *         if self._items is None:
 *             self._items = self._build_items()
 *         return self._items[:]             # <<<<<<<<<<<<<<
 * 
 *     def iteritems(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PySequence_GetSlice(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items, 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.items");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":134
 *         return self._items[:]
 * 
 *     def iteritems(self):             # <<<<<<<<<<<<<<
 *         if self._items is None:
 *             self._items = self._build_items()
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_iteritems(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_iteritems(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("iteritems");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":135
 * 
 *     def iteritems(self):
 *         if self._items is None:             # <<<<<<<<<<<<<<
 *             self._items = self._build_items()
 *         return iter(self._items)
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":136
 *     def iteritems(self):
 *         if self._items is None:
 *             self._items = self._build_items()             # <<<<<<<<<<<<<<
 *         return iter(self._items)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_items(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":137
 *         if self._items is None:
 *             self._items = self._build_items()
 *         return iter(self._items)             # <<<<<<<<<<<<<<
 * 
 *     def values(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyObject_GetIter(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.iteritems");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":139
 *         return iter(self._items)
 * 
 *     def values(self):             # <<<<<<<<<<<<<<
 *         cdef list values = []
 *         if self._items is None:
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_values(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_values(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_v_values = 0;
  PyObject *__pyx_v_item;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("values");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":140
 * 
 *     def values(self):
 *         cdef list values = []             # <<<<<<<<<<<<<<
 *         if self._items is None:
 *             self._items = self._build_items()
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_values = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":141
 *     def values(self):
 *         cdef list values = []
 *         if self._items is None:             # <<<<<<<<<<<<<<
 *             self._items = self._build_items()
 *         for item in self._items:
 */
  __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":142
 *         cdef list values = []
 *         if self._items is None:
 *             self._items = self._build_items()             # <<<<<<<<<<<<<<
 *         for item in self._items:
 *             value = python.PyTuple_GET_ITEM(item, 1)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__IDDict *)((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->__pyx_vtab)->_build_items(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items);
    ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":143
 *         if self._items is None:
 *             self._items = self._build_items()
 *         for item in self._items:             # <<<<<<<<<<<<<<
 *             value = python.PyTuple_GET_ITEM(item, 1)
 *             python.Py_INCREF(value)
 */
  if (PyList_CheckExact(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items) || PyTuple_CheckExact(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items)) {
    __pyx_t_3 = 0; __pyx_t_1 = ((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(((struct __pyx_obj_4lxml_5etree__IDDict *)__pyx_v_self)->_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_1))) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
    } else {
      __pyx_t_4 = PyIter_Next(__pyx_t_1);
      if (!__pyx_t_4) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":144
 *             self._items = self._build_items()
 *         for item in self._items:
 *             value = python.PyTuple_GET_ITEM(item, 1)             # <<<<<<<<<<<<<<
 *             python.Py_INCREF(value)
 *             values.append(value)
 */
    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_v_item, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":145
 *         for item in self._items:
 *             value = python.PyTuple_GET_ITEM(item, 1)
 *             python.Py_INCREF(value)             # <<<<<<<<<<<<<<
 *             values.append(value)
 *         return values
 */
    Py_INCREF(__pyx_v_value);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":146
 *             value = python.PyTuple_GET_ITEM(item, 1)
 *             python.Py_INCREF(value)
 *             values.append(value)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
    if (unlikely(__pyx_v_values == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_values), __pyx_v_value); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":147
 *             python.Py_INCREF(value)
 *             values.append(value)
 *         return values             # <<<<<<<<<<<<<<
 * 
 *     def itervalues(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_values));
  __pyx_r = ((PyObject *)__pyx_v_values);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._IDDict.values");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":149
 *         return values
 * 
 *     def itervalues(self):             # <<<<<<<<<<<<<<
 *         return iter(self.values())
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_itervalues(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_7_IDDict_itervalues(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("itervalues");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":150
 * 
 *     def itervalues(self):
 *         return iter(self.values())             # <<<<<<<<<<<<<<
 * 
 *     cdef object _build_keys(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__values); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._IDDict.itervalues");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":152
 *         return iter(self.values())
 * 
 *     cdef object _build_keys(self):             # <<<<<<<<<<<<<<
 *         keys = []
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 */

static  PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_keys(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
  PyObject *__pyx_v_keys;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_build_keys");
  __pyx_v_keys = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":153
 * 
 *     cdef object _build_keys(self):
 *         keys = []             # <<<<<<<<<<<<<<
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashKeys, <python.PyObject*>keys)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(__pyx_v_keys);
  __pyx_v_keys = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":155
 *         keys = []
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashKeys, <python.PyObject*>keys)             # <<<<<<<<<<<<<<
 *         return keys
 * 
 */
  xmlHashScan(((xmlHashTable *)__pyx_v_self->_doc->_c_doc->ids), __pyx_f_4lxml_5etree__collectIdHashKeys, ((PyObject *)__pyx_v_keys));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":156
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashKeys, <python.PyObject*>keys)
 *         return keys             # <<<<<<<<<<<<<<
 * 
 *     cdef object _build_items(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_keys);
  __pyx_r = __pyx_v_keys;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict._build_keys");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_keys);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":158
 *         return keys
 * 
 *     cdef object _build_items(self):             # <<<<<<<<<<<<<<
 *         items = []
 *         context = (items, self._doc)
 */

static  PyObject *__pyx_f_4lxml_5etree_7_IDDict__build_items(struct __pyx_obj_4lxml_5etree__IDDict *__pyx_v_self) {
  PyObject *__pyx_v_items;
  PyObject *__pyx_v_context;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_build_items");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_context = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":159
 * 
 *     cdef object _build_items(self):
 *         items = []             # <<<<<<<<<<<<<<
 *         context = (items, self._doc)
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":160
 *     cdef object _build_items(self):
 *         items = []
 *         context = (items, self._doc)             # <<<<<<<<<<<<<<
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashItemList, <python.PyObject*>context)
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_items);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_items);
  __Pyx_GIVEREF(__pyx_v_items);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_doc));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_doc));
  __Pyx_DECREF(__pyx_v_context);
  __pyx_v_context = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":162
 *         context = (items, self._doc)
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashItemList, <python.PyObject*>context)             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
  xmlHashScan(((xmlHashTable *)__pyx_v_self->_doc->_c_doc->ids), __pyx_f_4lxml_5etree__collectIdHashItemList, ((PyObject *)__pyx_v_context));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":163
 *         tree.xmlHashScan(<tree.xmlHashTable*>self._doc._c_doc.ids,
 *                          _collectIdHashItemList, <python.PyObject*>context)
 *         return items             # <<<<<<<<<<<<<<
 * 
 * cdef void _collectIdHashItemDict(void* payload, void* context, char* name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_items);
  __pyx_r = __pyx_v_items;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._IDDict._build_items");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_DECREF(__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":165
 *         return items
 * 
 * cdef void _collectIdHashItemDict(void* payload, void* context, char* name):             # <<<<<<<<<<<<<<
 *     # collect elements from ID attribute hash table
 *     cdef tree.xmlID* c_id
 */

static  void __pyx_f_4lxml_5etree__collectIdHashItemDict(void *__pyx_v_payload, void *__pyx_v_context, char *__pyx_v_name) {
  xmlID *__pyx_v_c_id;
  PyObject *__pyx_v_dic;
  PyObject *__pyx_v_doc;
  PyObject *__pyx_v_element;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_collectIdHashItemDict");
  __pyx_v_dic = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_doc = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":168
 *     # collect elements from ID attribute hash table
 *     cdef tree.xmlID* c_id
 *     c_id = <tree.xmlID*>payload             # <<<<<<<<<<<<<<
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 */
  __pyx_v_c_id = ((xmlID *)__pyx_v_payload);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":169
 *     cdef tree.xmlID* c_id
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     dic, doc = <tuple>context
 */
  __pyx_t_1 = (__pyx_v_c_id == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_id->attr == NULL);
    if (!__pyx_t_2) {
      __pyx_t_3 = (__pyx_v_c_id->attr->parent == NULL);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":170
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     dic, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":171
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 *     dic, doc = <tuple>context             # <<<<<<<<<<<<<<
 *     element = _elementFactory(doc, c_id.attr.parent)
 *     dic[funicode(name)] = element
 */
  if (likely(((PyObject *)__pyx_v_context) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_context)) == 2)) {
    PyObject* tuple = ((PyObject *)__pyx_v_context);
    __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_v_dic);
    __pyx_v_dic = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_doc);
    __pyx_v_doc = __pyx_t_6;
    __pyx_t_6 = 0;
  } else {
    __Pyx_UnpackTupleError(((PyObject *)__pyx_v_context), 2);
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":172
 *         return
 *     dic, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)             # <<<<<<<<<<<<<<
 *     dic[funicode(name)] = element
 * 
 */
  if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_id->attr->parent)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_v_element);
  __pyx_v_element = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":173
 *     dic, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)
 *     dic[funicode(name)] = element             # <<<<<<<<<<<<<<
 * 
 * cdef void _collectIdHashItemList(void* payload, void* context, char* name):
 */
  __pyx_t_6 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  if (PyObject_SetItem(__pyx_v_dic, __pyx_t_6, __pyx_v_element) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._collectIdHashItemDict");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_dic);
  __Pyx_DECREF(__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":175
 *     dic[funicode(name)] = element
 * 
 * cdef void _collectIdHashItemList(void* payload, void* context, char* name):             # <<<<<<<<<<<<<<
 *     # collect elements from ID attribute hash table
 *     cdef tree.xmlID* c_id
 */

static  void __pyx_f_4lxml_5etree__collectIdHashItemList(void *__pyx_v_payload, void *__pyx_v_context, char *__pyx_v_name) {
  xmlID *__pyx_v_c_id;
  PyObject *__pyx_v_lst;
  PyObject *__pyx_v_doc;
  PyObject *__pyx_v_element;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_collectIdHashItemList");
  __pyx_v_lst = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":179
 *     cdef tree.xmlID* c_id
 *     cdef list lst
 *     c_id = <tree.xmlID*>payload             # <<<<<<<<<<<<<<
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 */
  __pyx_v_c_id = ((xmlID *)__pyx_v_payload);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":180
 *     cdef list lst
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     lst, doc = <tuple>context
 */
  __pyx_t_1 = (__pyx_v_c_id == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_id->attr == NULL);
    if (!__pyx_t_2) {
      __pyx_t_3 = (__pyx_v_c_id->attr->parent == NULL);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":181
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     lst, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":182
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 *     lst, doc = <tuple>context             # <<<<<<<<<<<<<<
 *     element = _elementFactory(doc, c_id.attr.parent)
 *     lst.append( (funicode(name), element) )
 */
  if (likely(((PyObject *)__pyx_v_context) != Py_None) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_v_context)) == 2)) {
    PyObject* tuple = ((PyObject *)__pyx_v_context);
    __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
    if (!(likely(PyList_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_5)->tp_name), 0))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_v_lst));
    __pyx_v_lst = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_v_doc);
    __pyx_v_doc = __pyx_t_6;
    __pyx_t_6 = 0;
  } else {
    __Pyx_UnpackTupleError(((PyObject *)__pyx_v_context), 2);
    {__pyx_filename = __pyx_f[15]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":183
 *         return
 *     lst, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)             # <<<<<<<<<<<<<<
 *     lst.append( (funicode(name), element) )
 * 
 */
  if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_id->attr->parent)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_v_element);
  __pyx_v_element = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":184
 *     lst, doc = <tuple>context
 *     element = _elementFactory(doc, c_id.attr.parent)
 *     lst.append( (funicode(name), element) )             # <<<<<<<<<<<<<<
 * 
 * cdef void _collectIdHashKeys(void* payload, void* collect_list, char* name):
 */
  if (unlikely(__pyx_v_lst == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_6 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_element);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_element);
  __Pyx_GIVEREF(__pyx_v_element);
  __pyx_t_6 = 0;
  __pyx_t_7 = PyList_Append(((PyObject *)__pyx_v_lst), __pyx_t_5); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("lxml.etree._collectIdHashItemList");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_lst);
  __Pyx_DECREF(__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":186
 *     lst.append( (funicode(name), element) )
 * 
 * cdef void _collectIdHashKeys(void* payload, void* collect_list, char* name):             # <<<<<<<<<<<<<<
 *     cdef tree.xmlID* c_id
 *     c_id = <tree.xmlID*>payload
 */

static  void __pyx_f_4lxml_5etree__collectIdHashKeys(void *__pyx_v_payload, void *__pyx_v_collect_list, char *__pyx_v_name) {
  xmlID *__pyx_v_c_id;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("_collectIdHashKeys");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":188
 * cdef void _collectIdHashKeys(void* payload, void* collect_list, char* name):
 *     cdef tree.xmlID* c_id
 *     c_id = <tree.xmlID*>payload             # <<<<<<<<<<<<<<
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 */
  __pyx_v_c_id = ((xmlID *)__pyx_v_payload);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":189
 *     cdef tree.xmlID* c_id
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:             # <<<<<<<<<<<<<<
 *         return
 *     (<list>collect_list).append(funicode(name))
 */
  __pyx_t_1 = (__pyx_v_c_id == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_id->attr == NULL);
    if (!__pyx_t_2) {
      __pyx_t_3 = (__pyx_v_c_id->attr->parent == NULL);
      __pyx_t_4 = __pyx_t_3;
    } else {
      __pyx_t_4 = __pyx_t_2;
    }
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_1;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":190
 *     c_id = <tree.xmlID*>payload
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return             # <<<<<<<<<<<<<<
 *     (<list>collect_list).append(funicode(name))
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlid.pxi":191
 *     if c_id is NULL or c_id.attr is NULL or c_id.attr.parent is NULL:
 *         return
 *     (<list>collect_list).append(funicode(name))             # <<<<<<<<<<<<<<
 */
  if (unlikely(((PyObject *)__pyx_v_collect_list) == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[15]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_5 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyList_Append(((PyObject *)((PyObject *)__pyx_v_collect_list)), __pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("lxml.etree._collectIdHashKeys");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":18
 *     """
 *     cdef _ErrorLog _error_log
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._error_log = _ErrorLog()
 * 
 */

static int __pyx_pf_4lxml_5etree_8XInclude___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_8XInclude___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":19
 *     cdef _ErrorLog _error_log
 *     def __init__(self):
 *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 * 
 *     property error_log:
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log));
  ((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XInclude.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":22
 * 
 *     property error_log:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._error_log.copy()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":23
 *     property error_log:
 *         def __get__(self):
 *             return self._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, _Element node not None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XInclude.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":25
 *             return self._error_log.copy()
 * 
 *     def __call__(self, _Element node not None):             # <<<<<<<<<<<<<<
 *         u"__call__(self, node)"
 *         # We cannot pass the XML_PARSE_NOXINCNODE option as this would free
 */

static PyObject *__pyx_pf_4lxml_5etree_8XInclude___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_8XInclude___call__[] = "__call__(self, node)";
static PyObject *__pyx_pf_4lxml_5etree_8XInclude___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_node = 0;
  int __pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__node,0};
  __Pyx_RefNannySetupContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_node = ((struct LxmlElement *)values[0]);
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_node = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[16]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XInclude.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_node);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":35
 *         # i.e. as a sibling, which does not conflict with traversal.
 *         cdef int result
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(
 *             node._doc._parser)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":37
 *         self._error_log.connect()
 *         __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(
 *             node._doc._parser)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             if node._doc._parser is not None:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->pushImpliedContextFromParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_node->_doc->_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":38
 *         __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(
 *             node._doc._parser)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             if node._doc._parser is not None:
 *                 result = xinclude.xmlXIncludeProcessTreeFlags(
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":39
 *             node._doc._parser)
 *         with nogil:
 *             if node._doc._parser is not None:             # <<<<<<<<<<<<<<
 *                 result = xinclude.xmlXIncludeProcessTreeFlags(
 *                     node._c_node, node._doc._parser._parse_options)
 */
      __pyx_t_1 = (((PyObject *)__pyx_v_node->_doc->_parser) != Py_None);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":41
 *             if node._doc._parser is not None:
 *                 result = xinclude.xmlXIncludeProcessTreeFlags(
 *                     node._c_node, node._doc._parser._parse_options)             # <<<<<<<<<<<<<<
 *             else:
 *                 result = xinclude.xmlXIncludeProcessTree(node._c_node)
 */
        __pyx_v_result = xmlXIncludeProcessTreeFlags(__pyx_v_node->_c_node, __pyx_v_node->_doc->_parser->_parse_options);
        goto __pyx_L9;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":43
 *                     node._c_node, node._doc._parser._parse_options)
 *             else:
 *                 result = xinclude.xmlXIncludeProcessTree(node._c_node)             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.popImpliedContext()
 *         self._error_log.disconnect()
 */
        __pyx_v_result = xmlXIncludeProcessTree(__pyx_v_node->_c_node);
      }
      __pyx_L9:;
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":38
 *         __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(
 *             node._doc._parser)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             if node._doc._parser is not None:
 *                 result = xinclude.xmlXIncludeProcessTreeFlags(
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":44
 *             else:
 *                 result = xinclude.xmlXIncludeProcessTree(node._c_node)
 *         __GLOBAL_PARSER_CONTEXT.popImpliedContext()             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->popImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":45
 *                 result = xinclude.xmlXIncludeProcessTree(node._c_node)
 *         __GLOBAL_PARSER_CONTEXT.popImpliedContext()
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         if result == -1:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":47
 *         self._error_log.disconnect()
 * 
 *         if result == -1:             # <<<<<<<<<<<<<<
 *             raise XIncludeError(
 *                 self._error_log._buildExceptionMessage(
 */
  __pyx_t_1 = (__pyx_v_result == -1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":48
 * 
 *         if result == -1:
 *             raise XIncludeError(             # <<<<<<<<<<<<<<
 *                 self._error_log._buildExceptionMessage(
 *                     u"XInclude processing failed"),
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XIncludeError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":49
 *         if result == -1:
 *             raise XIncludeError(
 *                 self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                     u"XInclude processing failed"),
 *                 self._error_log)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log), ((PyObject *)__pyx_kp_u_246)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":51
 *                 self._error_log._buildExceptionMessage(
 *                     u"XInclude processing failed"),
 *                 self._error_log)             # <<<<<<<<<<<<<<
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log));
    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XInclude *)__pyx_v_self)->_error_log));
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[16]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L10;
  }
  __pyx_L10:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.XInclude.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":3
 * # functions for tree cleanup and removing elements from subtrees
 * 
 * def cleanup_namespaces(tree_or_element):             # <<<<<<<<<<<<<<
 *     u"""cleanup_namespaces(tree_or_element)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_cleanup_namespaces(PyObject *__pyx_self, PyObject *__pyx_v_tree_or_element); /*proto*/
static char __pyx_doc_4lxml_5etree_cleanup_namespaces[] = "cleanup_namespaces(tree_or_element)\n\n    Remove all namespace declarations from a subtree that are not used\n    by any of the elements or attributes in that tree.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_cleanup_namespaces(PyObject *__pyx_self, PyObject *__pyx_v_tree_or_element) {
  struct LxmlElement *__pyx_v_element;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("cleanup_namespaces");
  __pyx_self = __pyx_self;
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":10
 *     """
 *     cdef _Element element
 *     element = _rootNodeOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     _removeUnusedNamespaceDeclarations(element._c_node)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_element));
  __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":11
 *     cdef _Element element
 *     element = _rootNodeOrRaise(tree_or_element)
 *     _removeUnusedNamespaceDeclarations(element._c_node)             # <<<<<<<<<<<<<<
 * 
 * def strip_attributes(tree_or_element, *attribute_names):
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__removeUnusedNamespaceDeclarations(__pyx_v_element->_c_node); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.cleanup_namespaces");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":13
 *     _removeUnusedNamespaceDeclarations(element._c_node)
 * 
 * def strip_attributes(tree_or_element, *attribute_names):             # <<<<<<<<<<<<<<
 *     u"""strip_attributes(tree_or_element, *attribute_names)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_strip_attributes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_strip_attributes[] = "strip_attributes(tree_or_element, *attribute_names)\n\n    Delete all attributes with the provided attribute names from an\n    Element (or ElementTree) and its descendants.\n\n    Example usage::\n\n        strip_attributes(root_element,\n                         'simpleattr',\n                         '{http://some/ns}attrname')\n    ";
static PyObject *__pyx_pf_4lxml_5etree_strip_attributes(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tree_or_element = 0;
  PyObject *__pyx_v_attribute_names = 0;
  struct LxmlElement *__pyx_v_element;
  PyObject *__pyx_v_ns_tags;
  char **__pyx_v_c_ns_tags;
  Py_ssize_t __pyx_v_c_tag_count;
  PyObject *__pyx_v_attr;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tree_or_element,0};
  __Pyx_RefNannySetupContext("strip_attributes");
  __pyx_self = __pyx_self;
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_attribute_names = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_attribute_names);
    if (unlikely(!__pyx_v_attribute_names)) return NULL;
  } else {
    __pyx_v_attribute_names = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tree_or_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "strip_attributes") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tree_or_element = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_tree_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("strip_attributes", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_attribute_names);
  __Pyx_AddTraceback("lxml.etree.strip_attributes");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_tree_or_element);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns_tags = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_attr = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":30
 *     cdef Py_ssize_t c_tag_count
 * 
 *     element = _rootNodeOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     if not attribute_names: return
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_element));
  __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":31
 * 
 *     element = _rootNodeOrRaise(tree_or_element)
 *     if not attribute_names: return             # <<<<<<<<<<<<<<
 * 
 *     ns_tags = _sortedTagList([ _getNsTag(attr)
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_names); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":33
 *     if not attribute_names: return
 * 
 *     ns_tags = _sortedTagList([ _getNsTag(attr)             # <<<<<<<<<<<<<<
 *                                for attr in <tuple>attribute_names ])
 *     ns_tags = [ (ns, tag if tag != b'*' else None)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":34
 * 
 *     ns_tags = _sortedTagList([ _getNsTag(attr)
 *                                for attr in <tuple>attribute_names ])             # <<<<<<<<<<<<<<
 *     ns_tags = [ (ns, tag if tag != b'*' else None)
 *                 for ns, tag in ns_tags ]
 */
  if (likely(__pyx_v_attribute_names != Py_None)) {
    __pyx_t_4 = 0; __pyx_t_5 = __pyx_v_attribute_names; __Pyx_INCREF(__pyx_t_5);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
    __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
    __Pyx_DECREF(__pyx_v_attr);
    __pyx_v_attr = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":33
 *     if not attribute_names: return
 * 
 *     ns_tags = _sortedTagList([ _getNsTag(attr)             # <<<<<<<<<<<<<<
 *                                for attr in <tuple>attribute_names ])
 *     ns_tags = [ (ns, tag if tag != b'*' else None)
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_attr); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_6); if (unlikely(__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__sortedTagList(__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_v_ns_tags));
  __pyx_v_ns_tags = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":35
 *     ns_tags = _sortedTagList([ _getNsTag(attr)
 *                                for attr in <tuple>attribute_names ])
 *     ns_tags = [ (ns, tag if tag != b'*' else None)             # <<<<<<<<<<<<<<
 *                 for ns, tag in ns_tags ]
 * 
 */
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":36
 *                                for attr in <tuple>attribute_names ])
 *     ns_tags = [ (ns, tag if tag != b'*' else None)
 *                 for ns, tag in ns_tags ]             # <<<<<<<<<<<<<<
 * 
 *     # tag names are passes as C pointers as this allows us to take
 */
  if (likely(((PyObject *)__pyx_v_ns_tags) != Py_None)) {
    __pyx_t_4 = 0; __pyx_t_1 = ((PyObject *)__pyx_v_ns_tags); __Pyx_INCREF(__pyx_t_1);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
    if (PyTuple_CheckExact(__pyx_t_6) && likely(PyTuple_GET_SIZE(__pyx_t_6) == 2)) {
      PyObject* tuple = __pyx_t_6;
      __pyx_t_8 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_8);
      __pyx_t_9 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_9;
      __pyx_t_9 = 0;
    } else {
      __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_10, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_10, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_EndUnpack(__pyx_t_10) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_9;
      __pyx_t_9 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":35
 *     ns_tags = _sortedTagList([ _getNsTag(attr)
 *                                for attr in <tuple>attribute_names ])
 *     ns_tags = [ (ns, tag if tag != b'*' else None)             # <<<<<<<<<<<<<<
 *                 for ns, tag in ns_tags ]
 * 
 */
    __pyx_t_9 = PyObject_RichCompare(__pyx_v_tag, ((PyObject *)__pyx_kp_b_100), Py_NE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_3) {
      __Pyx_INCREF(__pyx_v_tag);
      __pyx_t_6 = __pyx_v_tag;
    } else {
      __Pyx_INCREF(Py_None);
      __pyx_t_6 = Py_None;
    }
    __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_v_ns);
    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ns);
    __Pyx_GIVEREF(__pyx_v_ns);
    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = PyList_Append(__pyx_t_5, (PyObject*)__pyx_t_9); if (unlikely(__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_5));
  __Pyx_DECREF(((PyObject *)__pyx_v_ns_tags));
  __pyx_v_ns_tags = __pyx_t_5;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":40
 *     # tag names are passes as C pointers as this allows us to take
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)             # <<<<<<<<<<<<<<
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_ns_tags)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_ns_tags = ((char **)malloc(((((sizeof(char *)) * __pyx_t_4) * 2) + 2)));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":41
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 * 
 */
  __pyx_t_3 = (__pyx_v_c_ns_tags == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":42
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_t_5 = PyErr_NoMemory(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":44
 *         python.PyErr_NoMemory()
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         c_tag_count = _mapTagsToCharArray(element._doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":45
 * 
 *     try:
 *         c_tag_count = _mapTagsToCharArray(element._doc._c_doc, ns_tags, c_ns_tags)             # <<<<<<<<<<<<<<
 *         if c_tag_count > 0:
 *             _strip_attributes(element._c_node, c_ns_tags, c_tag_count)
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__mapTagsToCharArray(__pyx_v_element->_doc->_c_doc, __pyx_v_ns_tags, __pyx_v_c_ns_tags); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L13;}
    __pyx_v_c_tag_count = __pyx_t_4;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":46
 *     try:
 *         c_tag_count = _mapTagsToCharArray(element._doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0:             # <<<<<<<<<<<<<<
 *             _strip_attributes(element._c_node, c_ns_tags, c_tag_count)
 *     finally:
 */
    __pyx_t_3 = (__pyx_v_c_tag_count > 0);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":47
 *         c_tag_count = _mapTagsToCharArray(element._doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0:
 *             _strip_attributes(element._c_node, c_ns_tags, c_tag_count)             # <<<<<<<<<<<<<<
 *     finally:
 *         cstd.free(c_ns_tags)
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__strip_attributes(__pyx_v_element->_c_node, __pyx_v_c_ns_tags, __pyx_v_c_tag_count); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L13;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L15;
    }
    __pyx_L15:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L14;
    __pyx_L13: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":49
 *             _strip_attributes(element._c_node, c_ns_tags, c_tag_count)
 *     finally:
 *         cstd.free(c_ns_tags)             # <<<<<<<<<<<<<<
 * 
 * cdef _strip_attributes(xmlNode* c_node, char** c_ns_tags, Py_ssize_t c_tag_count):
 */
    free(__pyx_v_c_ns_tags);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("lxml.etree.strip_attributes");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_attribute_names);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_ns_tags);
  __Pyx_DECREF(__pyx_v_attr);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_tree_or_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":51
 *         cstd.free(c_ns_tags)
 * 
 * cdef _strip_attributes(xmlNode* c_node, char** c_ns_tags, Py_ssize_t c_tag_count):             # <<<<<<<<<<<<<<
 *     cdef xmlAttr* c_attr
 *     cdef Py_ssize_t i
 */

static  PyObject *__pyx_f_4lxml_5etree__strip_attributes(xmlNode *__pyx_v_c_node, char **__pyx_v_c_ns_tags, Py_ssize_t __pyx_v_c_tag_count) {
  xmlAttr *__pyx_v_c_attr;
  Py_ssize_t __pyx_v_i;
  char *__pyx_v_c_href;
  char *__pyx_v_c_name;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_strip_attributes");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":57
 *     cdef char* c_name
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if c_node.properties is not NULL:
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":58
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         if c_node.properties is not NULL:
 *             for i in range(c_tag_count):
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":59
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if c_node.properties is not NULL:             # <<<<<<<<<<<<<<
 *             for i in range(c_tag_count):
 *                 c_href = c_ns_tags[2*i]
 */
    __pyx_t_1 = (__pyx_v_c_node->properties != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":60
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         if c_node.properties is not NULL:
 *             for i in range(c_tag_count):             # <<<<<<<<<<<<<<
 *                 c_href = c_ns_tags[2*i]
 *                 c_name = c_ns_tags[2*i+1]
 */
      __pyx_t_2 = __pyx_v_c_tag_count;
      for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
        __pyx_v_i = __pyx_t_3;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":61
 *         if c_node.properties is not NULL:
 *             for i in range(c_tag_count):
 *                 c_href = c_ns_tags[2*i]             # <<<<<<<<<<<<<<
 *                 c_name = c_ns_tags[2*i+1]
 *                 # must compare attributes manually to make sure we
 */
        __pyx_v_c_href = (__pyx_v_c_ns_tags[(2 * __pyx_v_i)]);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":62
 *             for i in range(c_tag_count):
 *                 c_href = c_ns_tags[2*i]
 *                 c_name = c_ns_tags[2*i+1]             # <<<<<<<<<<<<<<
 *                 # must compare attributes manually to make sure we
 *                 # only match on wildcard tag names if the attribute
 */
        __pyx_v_c_name = (__pyx_v_c_ns_tags[((2 * __pyx_v_i) + 1)]);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":66
 *                 # only match on wildcard tag names if the attribute
 *                 # has no namespace
 *                 c_attr = c_node.properties             # <<<<<<<<<<<<<<
 *                 while c_attr is not NULL:
 *                     if c_name is NULL or c_attr.name == c_name:
 */
        __pyx_v_c_attr = __pyx_v_c_node->properties;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":67
 *                 # has no namespace
 *                 c_attr = c_node.properties
 *                 while c_attr is not NULL:             # <<<<<<<<<<<<<<
 *                     if c_name is NULL or c_attr.name == c_name:
 *                         if c_href is NULL:
 */
        while (1) {
          __pyx_t_1 = (__pyx_v_c_attr != NULL);
          if (!__pyx_t_1) break;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":68
 *                 c_attr = c_node.properties
 *                 while c_attr is not NULL:
 *                     if c_name is NULL or c_attr.name == c_name:             # <<<<<<<<<<<<<<
 *                         if c_href is NULL:
 *                             if c_attr.ns is NULL or c_attr.ns.href is NULL:
 */
          __pyx_t_1 = (__pyx_v_c_name == NULL);
          if (!__pyx_t_1) {
            __pyx_t_4 = (__pyx_v_c_attr->name == __pyx_v_c_name);
            __pyx_t_5 = __pyx_t_4;
          } else {
            __pyx_t_5 = __pyx_t_1;
          }
          if (__pyx_t_5) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":69
 *                 while c_attr is not NULL:
 *                     if c_name is NULL or c_attr.name == c_name:
 *                         if c_href is NULL:             # <<<<<<<<<<<<<<
 *                             if c_attr.ns is NULL or c_attr.ns.href is NULL:
 *                                 tree.xmlRemoveProp(c_attr)
 */
            __pyx_t_5 = (__pyx_v_c_href == NULL);
            if (__pyx_t_5) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":70
 *                     if c_name is NULL or c_attr.name == c_name:
 *                         if c_href is NULL:
 *                             if c_attr.ns is NULL or c_attr.ns.href is NULL:             # <<<<<<<<<<<<<<
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break
 */
              __pyx_t_5 = (__pyx_v_c_attr->ns == NULL);
              if (!__pyx_t_5) {
                __pyx_t_1 = (__pyx_v_c_attr->ns->href == NULL);
                __pyx_t_4 = __pyx_t_1;
              } else {
                __pyx_t_4 = __pyx_t_5;
              }
              if (__pyx_t_4) {

                /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":71
 *                         if c_href is NULL:
 *                             if c_attr.ns is NULL or c_attr.ns.href is NULL:
 *                                 tree.xmlRemoveProp(c_attr)             # <<<<<<<<<<<<<<
 *                                 break
 *                         elif c_attr.ns is not NULL and c_attr.ns.href is not NULL:
 */
                xmlRemoveProp(__pyx_v_c_attr);

                /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":72
 *                             if c_attr.ns is NULL or c_attr.ns.href is NULL:
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break             # <<<<<<<<<<<<<<
 *                         elif c_attr.ns is not NULL and c_attr.ns.href is not NULL:
 *                             if cstd.strcmp(c_attr.ns.href, c_href) == 0:
 */
                goto __pyx_L8_break;
                goto __pyx_L11;
              }
              __pyx_L11:;
              goto __pyx_L10;
            }

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":73
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break
 *                         elif c_attr.ns is not NULL and c_attr.ns.href is not NULL:             # <<<<<<<<<<<<<<
 *                             if cstd.strcmp(c_attr.ns.href, c_href) == 0:
 *                                 tree.xmlRemoveProp(c_attr)
 */
            __pyx_t_4 = (__pyx_v_c_attr->ns != NULL);
            if (__pyx_t_4) {
              __pyx_t_5 = (__pyx_v_c_attr->ns->href != NULL);
              __pyx_t_1 = __pyx_t_5;
            } else {
              __pyx_t_1 = __pyx_t_4;
            }
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":74
 *                                 break
 *                         elif c_attr.ns is not NULL and c_attr.ns.href is not NULL:
 *                             if cstd.strcmp(c_attr.ns.href, c_href) == 0:             # <<<<<<<<<<<<<<
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break
 */
              __pyx_t_1 = (strcmp(__pyx_v_c_attr->ns->href, __pyx_v_c_href) == 0);
              if (__pyx_t_1) {

                /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":75
 *                         elif c_attr.ns is not NULL and c_attr.ns.href is not NULL:
 *                             if cstd.strcmp(c_attr.ns.href, c_href) == 0:
 *                                 tree.xmlRemoveProp(c_attr)             # <<<<<<<<<<<<<<
 *                                 break
 *                     c_attr = c_attr.next
 */
                xmlRemoveProp(__pyx_v_c_attr);

                /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":76
 *                             if cstd.strcmp(c_attr.ns.href, c_href) == 0:
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break             # <<<<<<<<<<<<<<
 *                     c_attr = c_attr.next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
                goto __pyx_L8_break;
                goto __pyx_L12;
              }
              __pyx_L12:;
              goto __pyx_L10;
            }
            __pyx_L10:;
            goto __pyx_L9;
          }
          __pyx_L9:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":77
 *                                 tree.xmlRemoveProp(c_attr)
 *                                 break
 *                     c_attr = c_attr.next             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 * 
 */
          __pyx_v_c_attr = __pyx_v_c_attr->next;
        }
        __pyx_L8_break:;
      }
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":78
 *                                 break
 *                     c_attr = c_attr.next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 * 
 * def strip_elements(tree_or_element, *tag_names, bint with_tail=True):
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":80
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 * 
 * def strip_elements(tree_or_element, *tag_names, bint with_tail=True):             # <<<<<<<<<<<<<<
 *     u"""strip_elements(tree_or_element, *tag_names, with_tail=True)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_strip_elements(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_strip_elements[] = "strip_elements(tree_or_element, *tag_names, with_tail=True)\n\n    Delete all elements with the provided tag names from a tree or\n    subtree.  This will remove the elements and their entire subtree,\n    including all their attributes, text content and descendants.  It\n    will also remove the tail text of the element unless you\n    explicitly set the ``with_tail`` option to False.\n\n    Note that this will not delete the element (or ElementTree root\n    element) that you passed even if it matches.  It will only treat\n    its descendants.  If you want to include the root element, check\n    its tag name directly before even calling this function.\n\n    Example usage::\n\n        strip_elements(some_element,\n            'simpletagname',             # non-namespaced tag\n            '{http://some/ns}tagname',   # namespaced tag\n            '{http://some/other/ns}*'    # any tag from a namespace\n            Comment                      # comments\n            )\n    ";
static PyObject *__pyx_pf_4lxml_5etree_strip_elements(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tree_or_element = 0;
  int __pyx_v_with_tail;
  PyObject *__pyx_v_tag_names = 0;
  struct LxmlElement *__pyx_v_element;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_ns_tags;
  char **__pyx_v_c_ns_tags;
  Py_ssize_t __pyx_v_c_tag_count;
  int __pyx_v_strip_comments;
  int __pyx_v_strip_pis;
  int __pyx_v_strip_entities;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tree_or_element,&__pyx_n_s__with_tail,0};
  __Pyx_RefNannySetupContext("strip_elements");
  __pyx_self = __pyx_self;
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_tag_names = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_tag_names);
    if (unlikely(!__pyx_v_tag_names)) return NULL;
  } else {
    __pyx_v_tag_names = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tree_or_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__with_tail);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "strip_elements") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tree_or_element = values[0];
    if (values[1]) {
      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_with_tail == (int)-1))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {
      __pyx_v_with_tail = ((int)1);
    }
  } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_tree_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_with_tail = ((int)1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("strip_elements", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_tag_names);
  __Pyx_AddTraceback("lxml.etree.strip_elements");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_tree_or_element);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns_tags = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":110
 *     cdef bint strip_comments, strip_pis, strip_entities
 * 
 *     doc = _documentOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     element = _rootNodeOrRaise(tree_or_element)
 *     if not tag_names: return
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":111
 * 
 *     doc = _documentOrRaise(tree_or_element)
 *     element = _rootNodeOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     if not tag_names: return
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_element));
  __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":112
 *     doc = _documentOrRaise(tree_or_element)
 *     element = _rootNodeOrRaise(tree_or_element)
 *     if not tag_names: return             # <<<<<<<<<<<<<<
 * 
 *     ns_tags = _filterSpecialTagNames(
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_tag_names); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":115
 * 
 *     ns_tags = _filterSpecialTagNames(
 *         tag_names, &strip_comments, &strip_pis, &strip_entities)             # <<<<<<<<<<<<<<
 * 
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__filterSpecialTagNames(__pyx_v_tag_names, (&__pyx_v_strip_comments), (&__pyx_v_strip_pis), (&__pyx_v_strip_entities))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_ns_tags));
  __pyx_v_ns_tags = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":117
 *         tag_names, &strip_comments, &strip_pis, &strip_entities)
 * 
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):             # <<<<<<<<<<<<<<
 *         # include PIs and comments next to the root node
 *         if strip_comments:
 */
  if (!__pyx_v_strip_comments) {
    __pyx_t_3 = __pyx_v_strip_pis;
  } else {
    __pyx_t_3 = __pyx_v_strip_comments;
  }
  if (__pyx_t_3) {
    __pyx_t_2 = PyObject_TypeCheck(__pyx_v_tree_or_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
    __pyx_t_4 = __pyx_t_2;
  } else {
    __pyx_t_4 = __pyx_t_3;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":119
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):
 *         # include PIs and comments next to the root node
 *         if strip_comments:             # <<<<<<<<<<<<<<
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail)
 *         if strip_pis:
 */
    __pyx_t_4 = __pyx_v_strip_comments;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":120
 *         # include PIs and comments next to the root node
 *         if strip_comments:
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail)             # <<<<<<<<<<<<<<
 *         if strip_pis:
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail)
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_COMMENT_NODE, __pyx_v_with_tail); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":121
 *         if strip_comments:
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail)
 *         if strip_pis:             # <<<<<<<<<<<<<<
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail)
 * 
 */
    __pyx_t_4 = __pyx_v_strip_pis;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":122
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail)
 *         if strip_pis:
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail)             # <<<<<<<<<<<<<<
 * 
 *     # tag names are passes as C pointers as this allows us to take
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_PI_NODE, __pyx_v_with_tail); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":126
 *     # tag names are passes as C pointers as this allows us to take
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)             # <<<<<<<<<<<<<<
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_ns_tags)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_ns_tags = ((char **)malloc(((((sizeof(char *)) * __pyx_t_6) * 2) + 2)));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":127
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 * 
 */
  __pyx_t_4 = (__pyx_v_c_ns_tags == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":128
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":130
 *         python.PyErr_NoMemory()
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":131
 * 
 *     try:
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)             # <<<<<<<<<<<<<<
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 *             _strip_elements(doc, element._c_node, c_ns_tags, c_tag_count,
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__mapTagsToCharArray(__pyx_v_doc->_c_doc, __pyx_v_ns_tags, __pyx_v_c_ns_tags); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L12;}
    __pyx_v_c_tag_count = __pyx_t_6;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":132
 *     try:
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:             # <<<<<<<<<<<<<<
 *             _strip_elements(doc, element._c_node, c_ns_tags, c_tag_count,
 *                             strip_comments, strip_pis, strip_entities, with_tail)
 */
    __pyx_t_4 = (__pyx_v_c_tag_count > 0);
    if (!__pyx_t_4) {
      if (!__pyx_v_strip_comments) {
        if (!__pyx_v_strip_pis) {
          __pyx_t_3 = __pyx_v_strip_entities;
        } else {
          __pyx_t_3 = __pyx_v_strip_pis;
        }
        __pyx_t_2 = __pyx_t_3;
      } else {
        __pyx_t_2 = __pyx_v_strip_comments;
      }
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_4;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":134
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 *             _strip_elements(doc, element._c_node, c_ns_tags, c_tag_count,
 *                             strip_comments, strip_pis, strip_entities, with_tail)             # <<<<<<<<<<<<<<
 *     finally:
 *         cstd.free(c_ns_tags)
 */
      __pyx_t_1 = __pyx_f_4lxml_5etree__strip_elements(__pyx_v_doc, __pyx_v_element->_c_node, __pyx_v_c_ns_tags, __pyx_v_c_tag_count, __pyx_v_strip_comments, __pyx_v_strip_pis, __pyx_v_strip_entities, __pyx_v_with_tail); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L14;
    }
    __pyx_L14:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L13;
    __pyx_L12: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":136
 *                             strip_comments, strip_pis, strip_entities, with_tail)
 *     finally:
 *         cstd.free(c_ns_tags)             # <<<<<<<<<<<<<<
 * 
 * cdef _strip_elements(_Document doc, xmlNode* c_node,
 */
    free(__pyx_v_c_ns_tags);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.strip_elements");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tag_names);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_ns_tags);
  __Pyx_DECREF(__pyx_v_tree_or_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":138
 *         cstd.free(c_ns_tags)
 * 
 * cdef _strip_elements(_Document doc, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                      char** c_ns_tags, Py_ssize_t c_tag_count,
 *                      bint strip_comments, bint strip_pis, bint strip_entities,
 */

static  PyObject *__pyx_f_4lxml_5etree__strip_elements(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, char **__pyx_v_c_ns_tags, Py_ssize_t __pyx_v_c_tag_count, int __pyx_v_strip_comments, int __pyx_v_strip_pis, int __pyx_v_strip_entities, int __pyx_v_with_tail) {
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_next;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_strip_elements");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":146
 *     cdef Py_ssize_t i
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         # we run through the children here to prevent any problems
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":147
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         # we run through the children here to prevent any problems
 *         # with the tree iteration which would occur if we unlinked the
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":151
 *         # with the tree iteration which would occur if we unlinked the
 *         # c_node itself
 *         c_child = _findChildForwards(c_node, 0)             # <<<<<<<<<<<<<<
 *         while c_child is not NULL:
 *             c_next = _nextElement(c_child)
 */
    __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":152
 *         # c_node itself
 *         c_child = _findChildForwards(c_node, 0)
 *         while c_child is not NULL:             # <<<<<<<<<<<<<<
 *             c_next = _nextElement(c_child)
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":153
 *         c_child = _findChildForwards(c_node, 0)
 *         while c_child is not NULL:
 *             c_next = _nextElement(c_child)             # <<<<<<<<<<<<<<
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):
 */
      __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":154
 *         while c_child is not NULL:
 *             c_next = _nextElement(c_child)
 *             if c_child.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 */
      __pyx_t_1 = (__pyx_v_c_child->type == XML_ELEMENT_NODE);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":155
 *             c_next = _nextElement(c_child)
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):             # <<<<<<<<<<<<<<
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         if not with_tail:
 */
        __pyx_t_2 = __pyx_v_c_tag_count;
        for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
          __pyx_v_i = __pyx_t_3;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":156
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):             # <<<<<<<<<<<<<<
 *                         if not with_tail:
 *                             tree.xmlUnlinkNode(c_child)
 */
          __pyx_t_1 = __pyx_f_4lxml_5etree__tagMatchesExactly(__pyx_v_c_child, (__pyx_v_c_ns_tags[(2 * __pyx_v_i)]), (__pyx_v_c_ns_tags[((2 * __pyx_v_i) + 1)]));
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":157
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         if not with_tail:             # <<<<<<<<<<<<<<
 *                             tree.xmlUnlinkNode(c_child)
 *                         _removeNode(doc, c_child)
 */
            __pyx_t_1 = (!__pyx_v_with_tail);
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":158
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         if not with_tail:
 *                             tree.xmlUnlinkNode(c_child)             # <<<<<<<<<<<<<<
 *                         _removeNode(doc, c_child)
 *                         break
 */
              xmlUnlinkNode(__pyx_v_c_child);
              goto __pyx_L10;
            }
            __pyx_L10:;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":159
 *                         if not with_tail:
 *                             tree.xmlUnlinkNode(c_child)
 *                         _removeNode(doc, c_child)             # <<<<<<<<<<<<<<
 *                         break
 *             elif c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 */
            __pyx_t_4 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_child); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":160
 *                             tree.xmlUnlinkNode(c_child)
 *                         _removeNode(doc, c_child)
 *                         break             # <<<<<<<<<<<<<<
 *             elif c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                      or c_child.type == tree.XML_PI_NODE and strip_pis \
 */
            goto __pyx_L8_break;
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
        __pyx_L8_break:;
        goto __pyx_L6;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":161
 *                         _removeNode(doc, c_child)
 *                         break
 *             elif c_child.type == tree.XML_COMMENT_NODE and strip_comments \             # <<<<<<<<<<<<<<
 *                      or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                      or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 */
      __pyx_t_1 = (__pyx_v_c_child->type == XML_COMMENT_NODE);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":162
 *                         break
 *             elif c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                      or c_child.type == tree.XML_PI_NODE and strip_pis \             # <<<<<<<<<<<<<<
 *                      or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                 if with_tail:
 */
        __pyx_t_5 = __pyx_v_strip_comments;
      } else {
        __pyx_t_5 = __pyx_t_1;
      }
      if (!__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":163
 *             elif c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                      or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                      or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:             # <<<<<<<<<<<<<<
 *                 if with_tail:
 *                     _removeText(c_child.next)
 */
        __pyx_t_1 = (__pyx_v_c_child->type == XML_PI_NODE);
        if (__pyx_t_1) {
          __pyx_t_6 = __pyx_v_strip_pis;
        } else {
          __pyx_t_6 = __pyx_t_1;
        }
        if (!__pyx_t_6) {
          __pyx_t_1 = (__pyx_v_c_child->type == XML_ENTITY_REF_NODE);
          if (__pyx_t_1) {
            __pyx_t_7 = __pyx_v_strip_entities;
          } else {
            __pyx_t_7 = __pyx_t_1;
          }
          __pyx_t_1 = __pyx_t_7;
        } else {
          __pyx_t_1 = __pyx_t_6;
        }
        __pyx_t_6 = __pyx_t_1;
      } else {
        __pyx_t_6 = __pyx_t_5;
      }
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":164
 *                      or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                      or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                 if with_tail:             # <<<<<<<<<<<<<<
 *                     _removeText(c_child.next)
 *                 tree.xmlUnlinkNode(c_child)
 */
        __pyx_t_6 = __pyx_v_with_tail;
        if (__pyx_t_6) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":165
 *                      or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                 if with_tail:
 *                     _removeText(c_child.next)             # <<<<<<<<<<<<<<
 *                 tree.xmlUnlinkNode(c_child)
 *                 attemptDeallocation(c_child)
 */
          __pyx_f_4lxml_5etree__removeText(__pyx_v_c_child->next);
          goto __pyx_L11;
        }
        __pyx_L11:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":166
 *                 if with_tail:
 *                     _removeText(c_child.next)
 *                 tree.xmlUnlinkNode(c_child)             # <<<<<<<<<<<<<<
 *                 attemptDeallocation(c_child)
 *             c_child = c_next
 */
        xmlUnlinkNode(__pyx_v_c_child);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":167
 *                     _removeText(c_child.next)
 *                 tree.xmlUnlinkNode(c_child)
 *                 attemptDeallocation(c_child)             # <<<<<<<<<<<<<<
 *             c_child = c_next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
        __pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child);
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":168
 *                 tree.xmlUnlinkNode(c_child)
 *                 attemptDeallocation(c_child)
 *             c_child = c_next             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 * 
 */
      __pyx_v_c_child = __pyx_v_c_next;
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":169
 *                 attemptDeallocation(c_child)
 *             c_child = c_next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._strip_elements");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":172
 * 
 * 
 * def strip_tags(tree_or_element, *tag_names):             # <<<<<<<<<<<<<<
 *     u"""strip_tags(tree_or_element, *tag_names)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_strip_tags(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_strip_tags[] = "strip_tags(tree_or_element, *tag_names)\n\n    Delete all elements with the provided tag names from a tree or\n    subtree.  This will remove the elements and their attributes, but\n    *not* their text/tail content or descendants.  Instead, it will\n    merge the text content and children of the element into its\n    parent.\n\n    Note that this will not delete the element (or ElementTree root\n    element) that you passed even if it matches.  It will only treat\n    its descendants.\n\n    Example usage::\n\n        strip_tags(some_element,\n            'simpletagname',             # non-namespaced tag\n            '{http://some/ns}tagname',   # namespaced tag\n            '{http://some/other/ns}*'    # any tag from a namespace\n            Comment                      # comments (including their text!)\n            )\n    ";
static PyObject *__pyx_pf_4lxml_5etree_strip_tags(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tree_or_element = 0;
  PyObject *__pyx_v_tag_names = 0;
  struct LxmlElement *__pyx_v_element;
  struct LxmlDocument *__pyx_v_doc;
  PyObject *__pyx_v_ns_tags;
  int __pyx_v_strip_comments;
  int __pyx_v_strip_pis;
  int __pyx_v_strip_entities;
  char **__pyx_v_c_ns_tags;
  Py_ssize_t __pyx_v_c_tag_count;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tree_or_element,0};
  __Pyx_RefNannySetupContext("strip_tags");
  __pyx_self = __pyx_self;
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_tag_names = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args)); __Pyx_GOTREF(__pyx_v_tag_names);
    if (unlikely(!__pyx_v_tag_names)) return NULL;
  } else {
    __pyx_v_tag_names = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      default:
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tree_or_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      const Py_ssize_t used_pos_args = (PyTuple_GET_SIZE(__pyx_args) < 1) ? PyTuple_GET_SIZE(__pyx_args) : 1;
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "strip_tags") < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_tree_or_element = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_tree_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("strip_tags", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_tag_names);
  __Pyx_AddTraceback("lxml.etree.strip_tags");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_tree_or_element);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns_tags = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":201
 *     cdef Py_ssize_t c_tag_count
 * 
 *     doc = _documentOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     element = _rootNodeOrRaise(tree_or_element)
 *     if not tag_names: return
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":202
 * 
 *     doc = _documentOrRaise(tree_or_element)
 *     element = _rootNodeOrRaise(tree_or_element)             # <<<<<<<<<<<<<<
 *     if not tag_names: return
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_tree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_element));
  __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":203
 *     doc = _documentOrRaise(tree_or_element)
 *     element = _rootNodeOrRaise(tree_or_element)
 *     if not tag_names: return             # <<<<<<<<<<<<<<
 * 
 *     ns_tags = _filterSpecialTagNames(
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_tag_names); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":206
 * 
 *     ns_tags = _filterSpecialTagNames(
 *         tag_names, &strip_comments, &strip_pis, &strip_entities)             # <<<<<<<<<<<<<<
 * 
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__filterSpecialTagNames(__pyx_v_tag_names, (&__pyx_v_strip_comments), (&__pyx_v_strip_pis), (&__pyx_v_strip_entities))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_ns_tags));
  __pyx_v_ns_tags = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":208
 *         tag_names, &strip_comments, &strip_pis, &strip_entities)
 * 
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):             # <<<<<<<<<<<<<<
 *         # include PIs and comments next to the root node
 *         if strip_comments:
 */
  if (!__pyx_v_strip_comments) {
    __pyx_t_3 = __pyx_v_strip_pis;
  } else {
    __pyx_t_3 = __pyx_v_strip_comments;
  }
  if (__pyx_t_3) {
    __pyx_t_2 = PyObject_TypeCheck(__pyx_v_tree_or_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
    __pyx_t_4 = __pyx_t_2;
  } else {
    __pyx_t_4 = __pyx_t_3;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":210
 *     if (strip_comments or strip_pis) and isinstance(tree_or_element, _ElementTree):
 *         # include PIs and comments next to the root node
 *         if strip_comments:             # <<<<<<<<<<<<<<
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0)
 *         if strip_pis:
 */
    __pyx_t_4 = __pyx_v_strip_comments;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":211
 *         # include PIs and comments next to the root node
 *         if strip_comments:
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0)             # <<<<<<<<<<<<<<
 *         if strip_pis:
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, 0)
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_COMMENT_NODE, 0); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":212
 *         if strip_comments:
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0)
 *         if strip_pis:             # <<<<<<<<<<<<<<
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, 0)
 * 
 */
    __pyx_t_4 = __pyx_v_strip_pis;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":213
 *             _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0)
 *         if strip_pis:
 *             _removeSiblings(element._c_node, tree.XML_PI_NODE, 0)             # <<<<<<<<<<<<<<
 * 
 *     # tag names are passes as C pointers as this allows us to take
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__removeSiblings(__pyx_v_element->_c_node, XML_PI_NODE, 0); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":217
 *     # tag names are passes as C pointers as this allows us to take
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)             # <<<<<<<<<<<<<<
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_ns_tags)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_ns_tags = ((char **)malloc(((((sizeof(char *)) * __pyx_t_6) * 2) + 2)));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":218
 *     # them from the doc dict and do pointer comparisons
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 * 
 */
  __pyx_t_4 = (__pyx_v_c_ns_tags == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":219
 *     c_ns_tags = <char**> cstd.malloc(sizeof(char*) * len(ns_tags) * 2 + 2)
 *     if c_ns_tags is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":221
 *         python.PyErr_NoMemory()
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":222
 * 
 *     try:
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)             # <<<<<<<<<<<<<<
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 *             _strip_tags(doc, element._c_node, c_ns_tags, c_tag_count,
 */
    __pyx_t_6 = __pyx_f_4lxml_5etree__mapTagsToCharArray(__pyx_v_doc->_c_doc, __pyx_v_ns_tags, __pyx_v_c_ns_tags); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L12;}
    __pyx_v_c_tag_count = __pyx_t_6;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":223
 *     try:
 *         c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags)
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:             # <<<<<<<<<<<<<<
 *             _strip_tags(doc, element._c_node, c_ns_tags, c_tag_count,
 *                         strip_comments, strip_pis, strip_entities)
 */
    __pyx_t_4 = (__pyx_v_c_tag_count > 0);
    if (!__pyx_t_4) {
      if (!__pyx_v_strip_comments) {
        if (!__pyx_v_strip_pis) {
          __pyx_t_3 = __pyx_v_strip_entities;
        } else {
          __pyx_t_3 = __pyx_v_strip_pis;
        }
        __pyx_t_2 = __pyx_t_3;
      } else {
        __pyx_t_2 = __pyx_v_strip_comments;
      }
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_4;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":225
 *         if c_tag_count > 0 or strip_comments or strip_pis or strip_entities:
 *             _strip_tags(doc, element._c_node, c_ns_tags, c_tag_count,
 *                         strip_comments, strip_pis, strip_entities)             # <<<<<<<<<<<<<<
 *     finally:
 *         cstd.free(c_ns_tags)
 */
      __pyx_t_1 = __pyx_f_4lxml_5etree__strip_tags(__pyx_v_doc, __pyx_v_element->_c_node, __pyx_v_c_ns_tags, __pyx_v_c_tag_count, __pyx_v_strip_comments, __pyx_v_strip_pis, __pyx_v_strip_entities); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L12;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L14;
    }
    __pyx_L14:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L13;
    __pyx_L12: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":227
 *                         strip_comments, strip_pis, strip_entities)
 *     finally:
 *         cstd.free(c_ns_tags)             # <<<<<<<<<<<<<<
 * 
 * cdef _strip_tags(_Document doc, xmlNode* c_node,
 */
    free(__pyx_v_c_ns_tags);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.strip_tags");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_tag_names);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_ns_tags);
  __Pyx_DECREF(__pyx_v_tree_or_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":229
 *         cstd.free(c_ns_tags)
 * 
 * cdef _strip_tags(_Document doc, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                  char** c_ns_tags, Py_ssize_t c_tag_count,
 *                  bint strip_comments, bint strip_pis, bint strip_entities):
 */

static  PyObject *__pyx_f_4lxml_5etree__strip_tags(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, char **__pyx_v_c_ns_tags, Py_ssize_t __pyx_v_c_tag_count, int __pyx_v_strip_comments, int __pyx_v_strip_pis, int __pyx_v_strip_entities) {
  xmlNode *__pyx_v_c_child;
  xmlNode *__pyx_v_c_next;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_strip_tags");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":236
 *     cdef Py_ssize_t i
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
 *     if c_node.type == tree.XML_ELEMENT_NODE:
 *         # we run through the children here to prevent any problems
 */
  BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":237
 * 
 *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
 *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *         # we run through the children here to prevent any problems
 *         # with the tree iteration which would occur if we unlinked the
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":241
 *         # with the tree iteration which would occur if we unlinked the
 *         # c_node itself
 *         c_child = _findChildForwards(c_node, 0)             # <<<<<<<<<<<<<<
 *         while c_child is not NULL:
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 */
    __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":242
 *         # c_node itself
 *         c_child = _findChildForwards(c_node, 0)
 *         while c_child is not NULL:             # <<<<<<<<<<<<<<
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_child != NULL);
      if (!__pyx_t_1) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":243
 *         c_child = _findChildForwards(c_node, 0)
 *         while c_child is not NULL:
 *             if c_child.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 */
      __pyx_t_1 = (__pyx_v_c_child->type == XML_ELEMENT_NODE);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":244
 *         while c_child is not NULL:
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):             # <<<<<<<<<<<<<<
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         c_next = _findChildForwards(c_child, 0)
 */
        __pyx_t_2 = __pyx_v_c_tag_count;
        for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
          __pyx_v_i = __pyx_t_3;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":245
 *             if c_child.type == tree.XML_ELEMENT_NODE:
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):             # <<<<<<<<<<<<<<
 *                         c_next = _findChildForwards(c_child, 0)
 *                         if c_next is NULL:
 */
          __pyx_t_1 = __pyx_f_4lxml_5etree__tagMatchesExactly(__pyx_v_c_child, (__pyx_v_c_ns_tags[(2 * __pyx_v_i)]), (__pyx_v_c_ns_tags[((2 * __pyx_v_i) + 1)]));
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":246
 *                 for i in range(c_tag_count):
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         c_next = _findChildForwards(c_child, 0)             # <<<<<<<<<<<<<<
 *                         if c_next is NULL:
 *                             c_next = _nextElement(c_child)
 */
            __pyx_v_c_next = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_child, 0);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":247
 *                     if _tagMatchesExactly(c_child, c_ns_tags[2*i], c_ns_tags[2*i+1]):
 *                         c_next = _findChildForwards(c_child, 0)
 *                         if c_next is NULL:             # <<<<<<<<<<<<<<
 *                             c_next = _nextElement(c_child)
 *                         _replaceNodeByChildren(doc, c_child)
 */
            __pyx_t_1 = (__pyx_v_c_next == NULL);
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":248
 *                         c_next = _findChildForwards(c_child, 0)
 *                         if c_next is NULL:
 *                             c_next = _nextElement(c_child)             # <<<<<<<<<<<<<<
 *                         _replaceNodeByChildren(doc, c_child)
 *                         if not attemptDeallocation(c_child):
 */
              __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);
              goto __pyx_L10;
            }
            __pyx_L10:;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":249
 *                         if c_next is NULL:
 *                             c_next = _nextElement(c_child)
 *                         _replaceNodeByChildren(doc, c_child)             # <<<<<<<<<<<<<<
 *                         if not attemptDeallocation(c_child):
 *                             if c_child.nsDef is not NULL:
 */
            __pyx_t_4 = __pyx_f_4lxml_5etree__replaceNodeByChildren(__pyx_v_doc, __pyx_v_c_child); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":250
 *                             c_next = _nextElement(c_child)
 *                         _replaceNodeByChildren(doc, c_child)
 *                         if not attemptDeallocation(c_child):             # <<<<<<<<<<<<<<
 *                             if c_child.nsDef is not NULL:
 *                                 # make namespaces absolute
 */
            __pyx_t_1 = (!__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child));
            if (__pyx_t_1) {

              /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":251
 *                         _replaceNodeByChildren(doc, c_child)
 *                         if not attemptDeallocation(c_child):
 *                             if c_child.nsDef is not NULL:             # <<<<<<<<<<<<<<
 *                                 # make namespaces absolute
 *                                 moveNodeToDocument(doc, doc._c_doc, c_child)
 */
              __pyx_t_1 = (__pyx_v_c_child->nsDef != NULL);
              if (__pyx_t_1) {

                /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":253
 *                             if c_child.nsDef is not NULL:
 *                                 # make namespaces absolute
 *                                 moveNodeToDocument(doc, doc._c_doc, c_child)             # <<<<<<<<<<<<<<
 *                         c_child = c_next
 *                         break
 */
                __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_doc->_c_doc, __pyx_v_c_child); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                goto __pyx_L12;
              }
              __pyx_L12:;
              goto __pyx_L11;
            }
            __pyx_L11:;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":254
 *                                 # make namespaces absolute
 *                                 moveNodeToDocument(doc, doc._c_doc, c_child)
 *                         c_child = c_next             # <<<<<<<<<<<<<<
 *                         break
 *                 else:
 */
            __pyx_v_c_child = __pyx_v_c_next;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":255
 *                                 moveNodeToDocument(doc, doc._c_doc, c_child)
 *                         c_child = c_next
 *                         break             # <<<<<<<<<<<<<<
 *                 else:
 *                     c_child = _nextElement(c_child)
 */
            goto __pyx_L8_break;
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":257
 *                         break
 *                 else:
 *                     c_child = _nextElement(c_child)             # <<<<<<<<<<<<<<
 *             else:
 *                 c_next = _nextElement(c_child)
 */
          __pyx_v_c_child = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);
        }
        __pyx_L8_break:;
        goto __pyx_L6;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":259
 *                     c_child = _nextElement(c_child)
 *             else:
 *                 c_next = _nextElement(c_child)             # <<<<<<<<<<<<<<
 *                 if c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                        or c_child.type == tree.XML_PI_NODE and strip_pis \
 */
        __pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_child);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":260
 *             else:
 *                 c_next = _nextElement(c_child)
 *                 if c_child.type == tree.XML_COMMENT_NODE and strip_comments \             # <<<<<<<<<<<<<<
 *                        or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                        or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 */
        __pyx_t_1 = (__pyx_v_c_child->type == XML_COMMENT_NODE);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":261
 *                 c_next = _nextElement(c_child)
 *                 if c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                        or c_child.type == tree.XML_PI_NODE and strip_pis \             # <<<<<<<<<<<<<<
 *                        or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                     tree.xmlUnlinkNode(c_child)
 */
          __pyx_t_5 = __pyx_v_strip_comments;
        } else {
          __pyx_t_5 = __pyx_t_1;
        }
        if (!__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":262
 *                 if c_child.type == tree.XML_COMMENT_NODE and strip_comments \
 *                        or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                        or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:             # <<<<<<<<<<<<<<
 *                     tree.xmlUnlinkNode(c_child)
 *                     attemptDeallocation(c_child)
 */
          __pyx_t_1 = (__pyx_v_c_child->type == XML_PI_NODE);
          if (__pyx_t_1) {
            __pyx_t_6 = __pyx_v_strip_pis;
          } else {
            __pyx_t_6 = __pyx_t_1;
          }
          if (!__pyx_t_6) {
            __pyx_t_1 = (__pyx_v_c_child->type == XML_ENTITY_REF_NODE);
            if (__pyx_t_1) {
              __pyx_t_7 = __pyx_v_strip_entities;
            } else {
              __pyx_t_7 = __pyx_t_1;
            }
            __pyx_t_1 = __pyx_t_7;
          } else {
            __pyx_t_1 = __pyx_t_6;
          }
          __pyx_t_6 = __pyx_t_1;
        } else {
          __pyx_t_6 = __pyx_t_5;
        }
        if (__pyx_t_6) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":263
 *                        or c_child.type == tree.XML_PI_NODE and strip_pis \
 *                        or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                     tree.xmlUnlinkNode(c_child)             # <<<<<<<<<<<<<<
 *                     attemptDeallocation(c_child)
 *                 c_child = c_next
 */
          xmlUnlinkNode(__pyx_v_c_child);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":264
 *                        or c_child.type == tree.XML_ENTITY_REF_NODE and strip_entities:
 *                     tree.xmlUnlinkNode(c_child)
 *                     attemptDeallocation(c_child)             # <<<<<<<<<<<<<<
 *                 c_child = c_next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 */
          __pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_child);
          goto __pyx_L13;
        }
        __pyx_L13:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":265
 *                     tree.xmlUnlinkNode(c_child)
 *                     attemptDeallocation(c_child)
 *                 c_child = c_next             # <<<<<<<<<<<<<<
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
 * 
 */
        __pyx_v_c_child = __pyx_v_c_next;
      }
      __pyx_L6:;
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":266
 *                     attemptDeallocation(c_child)
 *                 c_child = c_next
 *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._strip_tags");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":271
 * # helper functions
 * 
 * cdef list _sortedTagList(list l):             # <<<<<<<<<<<<<<
 *     # This is required since the namespace may be None (which Py3
 *     # can't compare to strings).  A bit of overhead, but at least
 */

static  PyObject *__pyx_f_4lxml_5etree__sortedTagList(PyObject *__pyx_v_l) {
  PyObject *__pyx_v_decorated_list;
  PyObject *__pyx_v_ns_tag;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("_sortedTagList");
  __pyx_v_decorated_list = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns_tag = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":278
 *     cdef tuple ns_tag
 *     cdef Py_ssize_t i
 *     decorated_list = [ (ns_tag[0] or b'', ns_tag[1], i, ns_tag)             # <<<<<<<<<<<<<<
 *                        for i, ns_tag in enumerate(l) ]
 *     decorated_list.sort()
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":279
 *     cdef Py_ssize_t i
 *     decorated_list = [ (ns_tag[0] or b'', ns_tag[1], i, ns_tag)
 *                        for i, ns_tag in enumerate(l) ]             # <<<<<<<<<<<<<<
 *     decorated_list.sort()
 *     return [ item[-1] for item in decorated_list ]
 */
  if (likely(((PyObject *)__pyx_v_l) != Py_None)) {
    __pyx_t_3 = 0; __pyx_t_4 = ((PyObject *)__pyx_v_l); __Pyx_INCREF(__pyx_t_4);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++;
    if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_5)->tp_name), 0))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_ns_tag));
    __pyx_v_ns_tag = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_v_i = __pyx_t_2;
    __pyx_t_2 = (__pyx_t_2 + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":278
 *     cdef tuple ns_tag
 *     cdef Py_ssize_t i
 *     decorated_list = [ (ns_tag[0] or b'', ns_tag[1], i, ns_tag)             # <<<<<<<<<<<<<<
 *                        for i, ns_tag in enumerate(l) ]
 *     decorated_list.sort()
 */
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_ns_tag), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!__pyx_t_6) {
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_INCREF(((PyObject *)__pyx_kp_b_14));
      __pyx_t_7 = __pyx_kp_b_14;
    } else {
      __pyx_t_7 = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(((PyObject *)__pyx_v_ns_tag), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __Pyx_INCREF(((PyObject *)__pyx_v_ns_tag));
    PyTuple_SET_ITEM(__pyx_t_9, 3, ((PyObject *)__pyx_v_ns_tag));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_ns_tag));
    __pyx_t_7 = 0;
    __pyx_t_5 = 0;
    __pyx_t_8 = 0;
    __pyx_t_10 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_9); if (unlikely(__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_v_decorated_list));
  __pyx_v_decorated_list = __pyx_t_1;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":280
 *     decorated_list = [ (ns_tag[0] or b'', ns_tag[1], i, ns_tag)
 *                        for i, ns_tag in enumerate(l) ]
 *     decorated_list.sort()             # <<<<<<<<<<<<<<
 *     return [ item[-1] for item in decorated_list ]
 * 
 */
  if (unlikely(__pyx_v_decorated_list == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'sort'"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_10 = PyList_Sort(((PyObject *)__pyx_v_decorated_list)); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":281
 *                        for i, ns_tag in enumerate(l) ]
 *     decorated_list.sort()
 *     return [ item[-1] for item in decorated_list ]             # <<<<<<<<<<<<<<
 * 
 * cdef list _filterSpecialTagNames(tag_names, bint* comments, bint* pis, bint* entities):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  if (likely(((PyObject *)__pyx_v_decorated_list) != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_4 = ((PyObject *)__pyx_v_decorated_list); __Pyx_INCREF(__pyx_t_4);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
    __pyx_t_9 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_9); __pyx_t_2++;
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_9;
    __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_item, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_9); if (unlikely(__pyx_t_10)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_1));
  __pyx_r = __pyx_t_1;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree._sortedTagList");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_decorated_list);
  __Pyx_DECREF(__pyx_v_ns_tag);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":283
 *     return [ item[-1] for item in decorated_list ]
 * 
 * cdef list _filterSpecialTagNames(tag_names, bint* comments, bint* pis, bint* entities):             # <<<<<<<<<<<<<<
 *     cdef list ns_tags
 *     comments[0] = 0
 */

static  PyObject *__pyx_f_4lxml_5etree__filterSpecialTagNames(PyObject *__pyx_v_tag_names, int *__pyx_v_comments, int *__pyx_v_pis, int *__pyx_v_entities) {
  PyObject *__pyx_v_ns_tags;
  PyObject *__pyx_v_tag;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  __Pyx_RefNannySetupContext("_filterSpecialTagNames");
  __Pyx_INCREF(__pyx_v_tag_names);
  __pyx_v_ns_tags = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":285
 * cdef list _filterSpecialTagNames(tag_names, bint* comments, bint* pis, bint* entities):
 *     cdef list ns_tags
 *     comments[0] = 0             # <<<<<<<<<<<<<<
 *     pis[0] = 0
 *     entities[0] = 0
 */
  (__pyx_v_comments[0]) = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":286
 *     cdef list ns_tags
 *     comments[0] = 0
 *     pis[0] = 0             # <<<<<<<<<<<<<<
 *     entities[0] = 0
 * 
 */
  (__pyx_v_pis[0]) = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":287
 *     comments[0] = 0
 *     pis[0] = 0
 *     entities[0] = 0             # <<<<<<<<<<<<<<
 * 
 *     ns_tags = []
 */
  (__pyx_v_entities[0]) = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":289
 *     entities[0] = 0
 * 
 *     ns_tags = []             # <<<<<<<<<<<<<<
 *     for tag in tag_names:
 *         if tag is Comment:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_v_ns_tags));
  __pyx_v_ns_tags = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":290
 * 
 *     ns_tags = []
 *     for tag in tag_names:             # <<<<<<<<<<<<<<
 *         if tag is Comment:
 *             comments[0] = 1
 */
  if (PyList_CheckExact(__pyx_v_tag_names) || PyTuple_CheckExact(__pyx_v_tag_names)) {
    __pyx_t_2 = 0; __pyx_t_1 = __pyx_v_tag_names; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tag_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_1))) {
      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_1);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_v_tag);
    __pyx_v_tag = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":291
 *     ns_tags = []
 *     for tag in tag_names:
 *         if tag is Comment:             # <<<<<<<<<<<<<<
 *             comments[0] = 1
 *         elif tag is ProcessingInstruction:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__Comment); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (__pyx_v_tag == __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":292
 *     for tag in tag_names:
 *         if tag is Comment:
 *             comments[0] = 1             # <<<<<<<<<<<<<<
 *         elif tag is ProcessingInstruction:
 *             pis[0] = 1
 */
      (__pyx_v_comments[0]) = 1;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":293
 *         if tag is Comment:
 *             comments[0] = 1
 *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
 *             pis[0] = 1
 *         elif tag is Entity:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (__pyx_v_tag == __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":294
 *             comments[0] = 1
 *         elif tag is ProcessingInstruction:
 *             pis[0] = 1             # <<<<<<<<<<<<<<
 *         elif tag is Entity:
 *             entities[0] = 1
 */
      (__pyx_v_pis[0]) = 1;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":295
 *         elif tag is ProcessingInstruction:
 *             pis[0] = 1
 *         elif tag is Entity:             # <<<<<<<<<<<<<<
 *             entities[0] = 1
 *         else:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__Entity); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (__pyx_v_tag == __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":296
 *             pis[0] = 1
 *         elif tag is Entity:
 *             entities[0] = 1             # <<<<<<<<<<<<<<
 *         else:
 *             ns_tags.append(_getNsTag(tag))
 */
      (__pyx_v_entities[0]) = 1;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":298
 *             entities[0] = 1
 *         else:
 *             ns_tags.append(_getNsTag(tag))             # <<<<<<<<<<<<<<
 * 
 *     return [ (ns, tag if tag != '*' else None)
 */
      if (unlikely(__pyx_v_ns_tags == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_ns_tags), __pyx_t_3); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L5:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":300
 *             ns_tags.append(_getNsTag(tag))
 * 
 *     return [ (ns, tag if tag != '*' else None)             # <<<<<<<<<<<<<<
 *              for ns, tag in _sortedTagList(ns_tags) ]
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":301
 * 
 *     return [ (ns, tag if tag != '*' else None)
 *              for ns, tag in _sortedTagList(ns_tags) ]             # <<<<<<<<<<<<<<
 * 
 * cdef Py_ssize_t _mapTagsToCharArray(xmlDoc* c_doc, list ns_tags,
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__sortedTagList(__pyx_v_ns_tags)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(__pyx_t_3 != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_6)) break;
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_7 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_7);
      __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_8;
      __pyx_t_8 = 0;
    } else {
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_EndUnpack(__pyx_t_9) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_7;
      __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_8;
      __pyx_t_8 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":300
 *             ns_tags.append(_getNsTag(tag))
 * 
 *     return [ (ns, tag if tag != '*' else None)             # <<<<<<<<<<<<<<
 *              for ns, tag in _sortedTagList(ns_tags) ]
 * 
 */
    __pyx_t_8 = PyObject_RichCompare(__pyx_v_tag, ((PyObject *)__pyx_kp_s_100), Py_NE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_4) {
      __Pyx_INCREF(__pyx_v_tag);
      __pyx_t_3 = __pyx_v_tag;
    } else {
      __Pyx_INCREF(Py_None);
      __pyx_t_3 = Py_None;
    }
    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_ns);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ns);
    __Pyx_GIVEREF(__pyx_v_ns);
    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_5 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_8); if (unlikely(__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_INCREF(((PyObject *)__pyx_t_1));
  __pyx_r = __pyx_t_1;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree._filterSpecialTagNames");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_tags);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag_names);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":303
 *              for ns, tag in _sortedTagList(ns_tags) ]
 * 
 * cdef Py_ssize_t _mapTagsToCharArray(xmlDoc* c_doc, list ns_tags,             # <<<<<<<<<<<<<<
 *                                     char** c_ns_tags) except -1:
 *     cdef Py_ssize_t count = 0
 */

static  Py_ssize_t __pyx_f_4lxml_5etree__mapTagsToCharArray(xmlDoc *__pyx_v_c_doc, PyObject *__pyx_v_ns_tags, char **__pyx_v_c_ns_tags) {
  Py_ssize_t __pyx_v_count;
  char *__pyx_v_c_tag;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_tag;
  Py_ssize_t __pyx_r;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("_mapTagsToCharArray");
  __Pyx_INCREF(__pyx_v_ns_tags);
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_tag = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":305
 * cdef Py_ssize_t _mapTagsToCharArray(xmlDoc* c_doc, list ns_tags,
 *                                     char** c_ns_tags) except -1:
 *     cdef Py_ssize_t count = 0             # <<<<<<<<<<<<<<
 *     cdef char* c_tag
 *     for ns, tag in ns_tags:
 */
  __pyx_v_count = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":307
 *     cdef Py_ssize_t count = 0
 *     cdef char* c_tag
 *     for ns, tag in ns_tags:             # <<<<<<<<<<<<<<
 *         if ns is None:
 *             c_ns_tags[0] = NULL
 */
  if (likely(((PyObject *)__pyx_v_ns_tags) != Py_None)) {
    __pyx_t_1 = 0; __pyx_t_2 = ((PyObject *)__pyx_v_ns_tags); __Pyx_INCREF(__pyx_t_2);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_ns);
      __pyx_v_ns = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_tag);
      __pyx_v_tag = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":308
 *     cdef char* c_tag
 *     for ns, tag in ns_tags:
 *         if ns is None:             # <<<<<<<<<<<<<<
 *             c_ns_tags[0] = NULL
 *         else:
 */
    __pyx_t_7 = (__pyx_v_ns == Py_None);
    if (__pyx_t_7) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":309
 *     for ns, tag in ns_tags:
 *         if ns is None:
 *             c_ns_tags[0] = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             c_ns_tags[0] = _cstr(ns)
 */
      (__pyx_v_c_ns_tags[0]) = NULL;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":311
 *             c_ns_tags[0] = NULL
 *         else:
 *             c_ns_tags[0] = _cstr(ns)             # <<<<<<<<<<<<<<
 *         if tag is None:
 *             c_ns_tags[1] = NULL
 */
      (__pyx_v_c_ns_tags[0]) = PyString_AS_STRING(__pyx_v_ns);
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":312
 *         else:
 *             c_ns_tags[0] = _cstr(ns)
 *         if tag is None:             # <<<<<<<<<<<<<<
 *             c_ns_tags[1] = NULL
 *         else:
 */
    __pyx_t_7 = (__pyx_v_tag == Py_None);
    if (__pyx_t_7) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":313
 *             c_ns_tags[0] = _cstr(ns)
 *         if tag is None:
 *             c_ns_tags[1] = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             c_tag = _cstr(tag)
 */
      (__pyx_v_c_ns_tags[1]) = NULL;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":315
 *             c_ns_tags[1] = NULL
 *         else:
 *             c_tag = _cstr(tag)             # <<<<<<<<<<<<<<
 *             c_ns_tags[1] = tree.xmlDictExists(
 *                 c_doc.dict, c_tag, cstd.strlen(c_tag))
 */
      __pyx_v_c_tag = PyString_AS_STRING(__pyx_v_tag);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":316
 *         else:
 *             c_tag = _cstr(tag)
 *             c_ns_tags[1] = tree.xmlDictExists(             # <<<<<<<<<<<<<<
 *                 c_doc.dict, c_tag, cstd.strlen(c_tag))
 *             if c_ns_tags[1] == NULL:
 */
      (__pyx_v_c_ns_tags[1]) = xmlDictExists(__pyx_v_c_doc->dict, __pyx_v_c_tag, strlen(__pyx_v_c_tag));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":318
 *             c_ns_tags[1] = tree.xmlDictExists(
 *                 c_doc.dict, c_tag, cstd.strlen(c_tag))
 *             if c_ns_tags[1] == NULL:             # <<<<<<<<<<<<<<
 *                 # not in the dict => not in the document
 *                 continue
 */
      __pyx_t_7 = ((__pyx_v_c_ns_tags[1]) == NULL);
      if (__pyx_t_7) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":320
 *             if c_ns_tags[1] == NULL:
 *                 # not in the dict => not in the document
 *                 continue             # <<<<<<<<<<<<<<
 *         c_ns_tags += 2
 *         count += 1
 */
        goto __pyx_L3_continue;
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":321
 *                 # not in the dict => not in the document
 *                 continue
 *         c_ns_tags += 2             # <<<<<<<<<<<<<<
 *         count += 1
 *     return count
 */
    __pyx_v_c_ns_tags += 2;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":322
 *                 continue
 *         c_ns_tags += 2
 *         count += 1             # <<<<<<<<<<<<<<
 *     return count
 */
    __pyx_v_count += 1;
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cleanup.pxi":323
 *         c_ns_tags += 2
 *         count += 1
 *     return count             # <<<<<<<<<<<<<<
 */
  __pyx_r = __pyx_v_count;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._mapTagsToCharArray");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_tag);
  __Pyx_DECREF(__pyx_v_ns_tags);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":46
 *     cdef _ExceptionContext _exc
 * 
 *     def __init__(self, namespaces, extensions, enable_regexp,             # <<<<<<<<<<<<<<
 *                  build_smart_strings):
 *         cdef _ExsltRegExp _regexp
 */

static int __pyx_pf_4lxml_5etree_12_BaseContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_12_BaseContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_enable_regexp = 0;
  PyObject *__pyx_v_build_smart_strings = 0;
  struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v__regexp;
  PyObject *__pyx_v_new_extensions;
  PyObject *__pyx_v_ns;
  PyObject *__pyx_v_extension;
  PyObject *__pyx_v_ns_uri;
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_function;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_v_ns_uri_utf;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__enable_regexp,&__pyx_n_s__build_smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__enable_regexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__build_smart_strings);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_namespaces = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_enable_regexp = values[2];
    __pyx_v_build_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_namespaces = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_extensions = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_enable_regexp = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_build_smart_strings = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._BaseContext.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(__pyx_v_build_smart_strings);
  __pyx_v__regexp = ((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_new_extensions = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_extension = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_function = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":51
 *         cdef dict new_extensions
 *         cdef list ns
 *         self._utf_refs = {}             # <<<<<<<<<<<<<<
 *         self._global_namespaces = []
 *         self._function_cache = {}
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_utf_refs);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_utf_refs));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_utf_refs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":52
 *         cdef list ns
 *         self._utf_refs = {}
 *         self._global_namespaces = []             # <<<<<<<<<<<<<<
 *         self._function_cache = {}
 *         self._eval_context_dict = None
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_global_namespaces);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_global_namespaces));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_global_namespaces = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":53
 *         self._utf_refs = {}
 *         self._global_namespaces = []
 *         self._function_cache = {}             # <<<<<<<<<<<<<<
 *         self._eval_context_dict = None
 * 
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_function_cache);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_function_cache));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_function_cache = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":54
 *         self._global_namespaces = []
 *         self._function_cache = {}
 *         self._eval_context_dict = None             # <<<<<<<<<<<<<<
 * 
 *         if extensions is not None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict = ((PyObject *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":56
 *         self._eval_context_dict = None
 * 
 *         if extensions is not None:             # <<<<<<<<<<<<<<
 *             # convert extensions to UTF-8
 *             if python.PyDict_Check(extensions):
 */
  __pyx_t_2 = (__pyx_v_extensions != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":58
 *         if extensions is not None:
 *             # convert extensions to UTF-8
 *             if python.PyDict_Check(extensions):             # <<<<<<<<<<<<<<
 *                 extensions = (extensions,)
 *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
 */
    __pyx_t_2 = PyDict_Check(__pyx_v_extensions);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":59
 *             # convert extensions to UTF-8
 *             if python.PyDict_Check(extensions):
 *                 extensions = (extensions,)             # <<<<<<<<<<<<<<
 *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
 *             new_extensions = {}
 */
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_extensions);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_extensions);
      __Pyx_GIVEREF(__pyx_v_extensions);
      __Pyx_DECREF(__pyx_v_extensions);
      __pyx_v_extensions = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":61
 *                 extensions = (extensions,)
 *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
 *             new_extensions = {}             # <<<<<<<<<<<<<<
 *             for extension in extensions:
 *                 for (ns_uri, name), function in extension.items():
 */
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __Pyx_DECREF(((PyObject *)__pyx_v_new_extensions));
    __pyx_v_new_extensions = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":62
 *             # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function}
 *             new_extensions = {}
 *             for extension in extensions:             # <<<<<<<<<<<<<<
 *                 for (ns_uri, name), function in extension.items():
 *                     if name is None:
 */
    if (PyList_CheckExact(__pyx_v_extensions) || PyTuple_CheckExact(__pyx_v_extensions)) {
      __pyx_t_3 = 0; __pyx_t_1 = __pyx_v_extensions; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_extensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      } else {
        __pyx_t_4 = PyIter_Next(__pyx_t_1);
        if (!__pyx_t_4) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF(__pyx_v_extension);
      __pyx_v_extension = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":63
 *             new_extensions = {}
 *             for extension in extensions:
 *                 for (ns_uri, name), function in extension.items():             # <<<<<<<<<<<<<<
 *                     if name is None:
 *                         raise ValueError, u"extensions must have non empty names"
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_extension, __pyx_n_s__items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
        __pyx_t_5 = 0; __pyx_t_4 = __pyx_t_6; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
          if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
        } else {
          __pyx_t_6 = PyIter_Next(__pyx_t_4);
          if (!__pyx_t_6) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_6);
        }
        if (PyTuple_CheckExact(__pyx_t_6) && likely(PyTuple_GET_SIZE(__pyx_t_6) == 2)) {
          PyObject* tuple = __pyx_t_6;
          __pyx_t_7 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_7);
          __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (PyTuple_CheckExact(__pyx_t_7) && likely(PyTuple_GET_SIZE(__pyx_t_7) == 2)) {
            PyObject* tuple = __pyx_t_7;
            __pyx_t_9 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_9);
            __pyx_t_10 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_v_ns_uri);
            __pyx_v_ns_uri = __pyx_t_9;
            __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_v_name);
            __pyx_v_name = __pyx_t_10;
            __pyx_t_10 = 0;
          } else {
            __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_11, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_10 = __Pyx_UnpackItem(__pyx_t_11, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_10);
            if (__Pyx_EndUnpack(__pyx_t_11) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_v_ns_uri);
            __pyx_v_ns_uri = __pyx_t_9;
            __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_v_name);
            __pyx_v_name = __pyx_t_10;
            __pyx_t_10 = 0;
          }
          __Pyx_DECREF(__pyx_v_function);
          __pyx_v_function = __pyx_t_8;
          __pyx_t_8 = 0;
        } else {
          __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_10, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_10, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          if (__Pyx_EndUnpack(__pyx_t_10) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (PyTuple_CheckExact(__pyx_t_7) && likely(PyTuple_GET_SIZE(__pyx_t_7) == 2)) {
            PyObject* tuple = __pyx_t_7;
            __pyx_t_10 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_10);
            __pyx_t_9 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_v_ns_uri);
            __pyx_v_ns_uri = __pyx_t_10;
            __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_v_name);
            __pyx_v_name = __pyx_t_9;
            __pyx_t_9 = 0;
          } else {
            __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_10 = __Pyx_UnpackItem(__pyx_t_11, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_11, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_9);
            if (__Pyx_EndUnpack(__pyx_t_11) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_v_ns_uri);
            __pyx_v_ns_uri = __pyx_t_10;
            __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_v_name);
            __pyx_v_name = __pyx_t_9;
            __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_v_function);
          __pyx_v_function = __pyx_t_8;
          __pyx_t_8 = 0;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":64
 *             for extension in extensions:
 *                 for (ns_uri, name), function in extension.items():
 *                     if name is None:             # <<<<<<<<<<<<<<
 *                         raise ValueError, u"extensions must have non empty names"
 *                     ns_utf   = self._to_utf(ns_uri)
 */
        __pyx_t_2 = (__pyx_v_name == Py_None);
        if (__pyx_t_2) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":65
 *                 for (ns_uri, name), function in extension.items():
 *                     if name is None:
 *                         raise ValueError, u"extensions must have non empty names"             # <<<<<<<<<<<<<<
 *                     ns_utf   = self._to_utf(ns_uri)
 *                     name_utf = self._to_utf(name)
 */
          __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_118), 0);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          goto __pyx_L12;
        }
        __pyx_L12:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":66
 *                     if name is None:
 *                         raise ValueError, u"extensions must have non empty names"
 *                     ns_utf   = self._to_utf(ns_uri)             # <<<<<<<<<<<<<<
 *                     name_utf = self._to_utf(name)
 *                     new_extensions[(ns_utf, name_utf)] = function
 */
        __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->__pyx_vtab)->_to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_ns_uri); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_v_ns_utf);
        __pyx_v_ns_utf = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":67
 *                         raise ValueError, u"extensions must have non empty names"
 *                     ns_utf   = self._to_utf(ns_uri)
 *                     name_utf = self._to_utf(name)             # <<<<<<<<<<<<<<
 *                     new_extensions[(ns_utf, name_utf)] = function
 *             extensions = new_extensions or None
 */
        __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->__pyx_vtab)->_to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_v_name_utf);
        __pyx_v_name_utf = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":68
 *                     ns_utf   = self._to_utf(ns_uri)
 *                     name_utf = self._to_utf(name)
 *                     new_extensions[(ns_utf, name_utf)] = function             # <<<<<<<<<<<<<<
 *             extensions = new_extensions or None
 * 
 */
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_ns_utf);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ns_utf);
        __Pyx_GIVEREF(__pyx_v_ns_utf);
        __Pyx_INCREF(__pyx_v_name_utf);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_name_utf);
        __Pyx_GIVEREF(__pyx_v_name_utf);
        if (PyDict_SetItem(((PyObject *)__pyx_v_new_extensions), __pyx_t_6, __pyx_v_function) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":69
 *                     name_utf = self._to_utf(name)
 *                     new_extensions[(ns_utf, name_utf)] = function
 *             extensions = new_extensions or None             # <<<<<<<<<<<<<<
 * 
 *         if namespaces is not None:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_new_extensions)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!__pyx_t_2) {
      __Pyx_INCREF(Py_None);
      __pyx_t_1 = Py_None;
    } else {
      __Pyx_INCREF(((PyObject *)__pyx_v_new_extensions));
      __pyx_t_1 = __pyx_v_new_extensions;
    }
    __Pyx_DECREF(__pyx_v_extensions);
    __pyx_v_extensions = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":71
 *             extensions = new_extensions or None
 * 
 *         if namespaces is not None:             # <<<<<<<<<<<<<<
 *             if python.PyDict_Check(namespaces):
 *                 namespaces = namespaces.items()
 */
  __pyx_t_2 = (__pyx_v_namespaces != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":72
 * 
 *         if namespaces is not None:
 *             if python.PyDict_Check(namespaces):             # <<<<<<<<<<<<<<
 *                 namespaces = namespaces.items()
 *             if namespaces:
 */
    __pyx_t_2 = PyDict_Check(__pyx_v_namespaces);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":73
 *         if namespaces is not None:
 *             if python.PyDict_Check(namespaces):
 *                 namespaces = namespaces.items()             # <<<<<<<<<<<<<<
 *             if namespaces:
 *                 ns = []
 */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_namespaces, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_v_namespaces);
      __pyx_v_namespaces = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":74
 *             if python.PyDict_Check(namespaces):
 *                 namespaces = namespaces.items()
 *             if namespaces:             # <<<<<<<<<<<<<<
 *                 ns = []
 *                 for prefix, ns_uri in namespaces:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_namespaces); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":75
 *                 namespaces = namespaces.items()
 *             if namespaces:
 *                 ns = []             # <<<<<<<<<<<<<<
 *                 for prefix, ns_uri in namespaces:
 *                     if prefix is None or not prefix:
 */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __Pyx_DECREF(((PyObject *)__pyx_v_ns));
      __pyx_v_ns = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":76
 *             if namespaces:
 *                 ns = []
 *                 for prefix, ns_uri in namespaces:             # <<<<<<<<<<<<<<
 *                     if prefix is None or not prefix:
 *                         raise TypeError, \
 */
      if (PyList_CheckExact(__pyx_v_namespaces) || PyTuple_CheckExact(__pyx_v_namespaces)) {
        __pyx_t_3 = 0; __pyx_t_4 = __pyx_v_namespaces; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_3 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_namespaces); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
      }
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_4))) {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++;
        } else {
          __pyx_t_1 = PyIter_Next(__pyx_t_4);
          if (!__pyx_t_1) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
          PyObject* tuple = __pyx_t_1;
          __pyx_t_6 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_6);
          __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_v_prefix);
          __pyx_v_prefix = __pyx_t_6;
          __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_v_ns_uri);
          __pyx_v_ns_uri = __pyx_t_8;
          __pyx_t_8 = 0;
        } else {
          __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_v_prefix);
          __pyx_v_prefix = __pyx_t_6;
          __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_v_ns_uri);
          __pyx_v_ns_uri = __pyx_t_8;
          __pyx_t_8 = 0;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":77
 *                 ns = []
 *                 for prefix, ns_uri in namespaces:
 *                     if prefix is None or not prefix:             # <<<<<<<<<<<<<<
 *                         raise TypeError, \
 *                             u"empty namespace prefix is not supported in XPath"
 */
        __pyx_t_2 = (__pyx_v_prefix == Py_None);
        if (!__pyx_t_2) {
          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_t_13 = (!__pyx_t_12);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_2;
        }
        if (__pyx_t_12) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":78
 *                 for prefix, ns_uri in namespaces:
 *                     if prefix is None or not prefix:
 *                         raise TypeError, \             # <<<<<<<<<<<<<<
 *                             u"empty namespace prefix is not supported in XPath"
 *                     if ns_uri is None or not ns_uri:
 */
          __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_247), 0);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          goto __pyx_L18;
        }
        __pyx_L18:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":80
 *                         raise TypeError, \
 *                             u"empty namespace prefix is not supported in XPath"
 *                     if ns_uri is None or not ns_uri:             # <<<<<<<<<<<<<<
 *                         raise TypeError, \
 *                             u"setting default namespace is not supported in XPath"
 */
        __pyx_t_12 = (__pyx_v_ns_uri == Py_None);
        if (!__pyx_t_12) {
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ns_uri); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __pyx_t_13 = (!__pyx_t_2);
          __pyx_t_2 = __pyx_t_13;
        } else {
          __pyx_t_2 = __pyx_t_12;
        }
        if (__pyx_t_2) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":81
 *                             u"empty namespace prefix is not supported in XPath"
 *                     if ns_uri is None or not ns_uri:
 *                         raise TypeError, \             # <<<<<<<<<<<<<<
 *                             u"setting default namespace is not supported in XPath"
 *                     prefix_utf = self._to_utf(prefix)
 */
          __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_248), 0);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          goto __pyx_L19;
        }
        __pyx_L19:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":83
 *                         raise TypeError, \
 *                             u"setting default namespace is not supported in XPath"
 *                     prefix_utf = self._to_utf(prefix)             # <<<<<<<<<<<<<<
 *                     ns_uri_utf = self._to_utf(ns_uri)
 *                     ns.append( (prefix_utf, ns_uri_utf) )
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->__pyx_vtab)->_to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_prefix); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_v_prefix_utf);
        __pyx_v_prefix_utf = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":84
 *                             u"setting default namespace is not supported in XPath"
 *                     prefix_utf = self._to_utf(prefix)
 *                     ns_uri_utf = self._to_utf(ns_uri)             # <<<<<<<<<<<<<<
 *                     ns.append( (prefix_utf, ns_uri_utf) )
 *                 namespaces = ns
 */
        __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->__pyx_vtab)->_to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_ns_uri); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_v_ns_uri_utf);
        __pyx_v_ns_uri_utf = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":85
 *                     prefix_utf = self._to_utf(prefix)
 *                     ns_uri_utf = self._to_utf(ns_uri)
 *                     ns.append( (prefix_utf, ns_uri_utf) )             # <<<<<<<<<<<<<<
 *                 namespaces = ns
 *             else:
 */
        if (unlikely(__pyx_v_ns == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
        }
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_prefix_utf);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_prefix_utf);
        __Pyx_GIVEREF(__pyx_v_prefix_utf);
        __Pyx_INCREF(__pyx_v_ns_uri_utf);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ns_uri_utf);
        __Pyx_GIVEREF(__pyx_v_ns_uri_utf);
        __pyx_t_14 = PyList_Append(((PyObject *)__pyx_v_ns), __pyx_t_1); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":86
 *                     ns_uri_utf = self._to_utf(ns_uri)
 *                     ns.append( (prefix_utf, ns_uri_utf) )
 *                 namespaces = ns             # <<<<<<<<<<<<<<
 *             else:
 *                 namespaces = None
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_ns));
      __Pyx_DECREF(__pyx_v_namespaces);
      __pyx_v_namespaces = ((PyObject *)__pyx_v_ns);
      goto __pyx_L15;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":88
 *                 namespaces = ns
 *             else:
 *                 namespaces = None             # <<<<<<<<<<<<<<
 * 
 *         self._doc        = None
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_namespaces);
      __pyx_v_namespaces = Py_None;
    }
    __pyx_L15:;
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":90
 *                 namespaces = None
 * 
 *         self._doc        = None             # <<<<<<<<<<<<<<
 *         self._exc        = _ExceptionContext()
 *         self._extensions = extensions
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_doc);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_doc));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_doc = ((struct LxmlDocument *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":91
 * 
 *         self._doc        = None
 *         self._exc        = _ExceptionContext()             # <<<<<<<<<<<<<<
 *         self._extensions = extensions
 *         self._namespaces = namespaces
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ExceptionContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_exc);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_exc));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_exc = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":92
 *         self._doc        = None
 *         self._exc        = _ExceptionContext()
 *         self._extensions = extensions             # <<<<<<<<<<<<<<
 *         self._namespaces = namespaces
 *         self._temp_refs  = _TempStore()
 */
  if (!(likely(PyDict_CheckExact(__pyx_v_extensions))||((__pyx_v_extensions) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_extensions)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_extensions);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_extensions));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_extensions = ((PyObject *)__pyx_v_extensions);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":93
 *         self._exc        = _ExceptionContext()
 *         self._extensions = extensions
 *         self._namespaces = namespaces             # <<<<<<<<<<<<<<
 *         self._temp_refs  = _TempStore()
 *         self._temp_documents  = set()
 */
  if (!(likely(PyList_CheckExact(__pyx_v_namespaces))||((__pyx_v_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_namespaces)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_namespaces);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_namespaces));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_namespaces = ((PyObject *)__pyx_v_namespaces);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":94
 *         self._extensions = extensions
 *         self._namespaces = namespaces
 *         self._temp_refs  = _TempStore()             # <<<<<<<<<<<<<<
 *         self._temp_documents  = set()
 *         self._build_smart_strings = build_smart_strings
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__TempStore)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_refs);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_refs));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_refs = ((struct __pyx_obj_4lxml_5etree__TempStore *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":95
 *         self._namespaces = namespaces
 *         self._temp_refs  = _TempStore()
 *         self._temp_documents  = set()             # <<<<<<<<<<<<<<
 *         self._build_smart_strings = build_smart_strings
 * 
 */
  __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_documents);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_documents));
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_temp_documents = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":96
 *         self._temp_refs  = _TempStore()
 *         self._temp_documents  = set()
 *         self._build_smart_strings = build_smart_strings             # <<<<<<<<<<<<<<
 * 
 *         if enable_regexp:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_build_smart_strings); if (unlikely((__pyx_t_2 == (int)-1))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_build_smart_strings = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":98
 *         self._build_smart_strings = build_smart_strings
 * 
 *         if enable_regexp:             # <<<<<<<<<<<<<<
 *             _regexp = _ExsltRegExp()
 *             _regexp._register_in_context(self)
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_enable_regexp); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":99
 * 
 *         if enable_regexp:
 *             _regexp = _ExsltRegExp()             # <<<<<<<<<<<<<<
 *             _regexp._register_in_context(self)
 * 
 */
    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ExsltRegExp)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_v__regexp));
    __pyx_v__regexp = ((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":100
 *         if enable_regexp:
 *             _regexp = _ExsltRegExp()
 *             _regexp._register_in_context(self)             # <<<<<<<<<<<<<<
 * 
 *     cdef _BaseContext _copy(self):
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)__pyx_v__regexp->__pyx_vtab)->_register_in_context(__pyx_v__regexp, ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L20;
  }
  __pyx_L20:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("lxml.etree._BaseContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v__regexp);
  __Pyx_DECREF(__pyx_v_new_extensions);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_DECREF(__pyx_v_extension);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_enable_regexp);
  __Pyx_DECREF(__pyx_v_build_smart_strings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":102
 *             _regexp._register_in_context(self)
 * 
 *     cdef _BaseContext _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _BaseContext context
 *         if self._namespaces is not None:
 */

static  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_BaseContext__copy(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context;
  PyObject *__pyx_v_namespaces;
  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_namespaces = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":104
 *     cdef _BaseContext _copy(self):
 *         cdef _BaseContext context
 *         if self._namespaces is not None:             # <<<<<<<<<<<<<<
 *             namespaces = self._namespaces[:]
 *         context = self.__class__(namespaces, None, False,
 */
  __pyx_t_1 = (__pyx_v_self->_namespaces != ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":105
 *         cdef _BaseContext context
 *         if self._namespaces is not None:
 *             namespaces = self._namespaces[:]             # <<<<<<<<<<<<<<
 *         context = self.__class__(namespaces, None, False,
 *                                  self._build_smart_strings)
 */
    __pyx_t_2 = PySequence_GetSlice(((PyObject *)__pyx_v_self->_namespaces), 0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(__pyx_v_namespaces);
    __pyx_v_namespaces = ((PyObject *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":106
 *         if self._namespaces is not None:
 *             namespaces = self._namespaces[:]
 *         context = self.__class__(namespaces, None, False,             # <<<<<<<<<<<<<<
 *                                  self._build_smart_strings)
 *         if self._extensions is not None:
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":107
 *             namespaces = self._namespaces[:]
 *         context = self.__class__(namespaces, None, False,
 *                                  self._build_smart_strings)             # <<<<<<<<<<<<<<
 *         if self._extensions is not None:
 *             context._extensions = self._extensions.copy()
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->_build_smart_strings); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_5, 1, Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__BaseContext))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":108
 *         context = self.__class__(namespaces, None, False,
 *                                  self._build_smart_strings)
 *         if self._extensions is not None:             # <<<<<<<<<<<<<<
 *             context._extensions = self._extensions.copy()
 *         return context
 */
  __pyx_t_1 = (__pyx_v_self->_extensions != ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":109
 *                                  self._build_smart_strings)
 *         if self._extensions is not None:
 *             context._extensions = self._extensions.copy()             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
    __pyx_t_4 = PyDict_Copy(((PyObject *)__pyx_v_self->_extensions)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_context->_extensions);
    __Pyx_DECREF(((PyObject *)__pyx_v_context->_extensions));
    __pyx_v_context->_extensions = ((PyObject *)__pyx_t_4);
    __pyx_t_4 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":110
 *         if self._extensions is not None:
 *             context._extensions = self._extensions.copy()
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef object _to_utf(self, s):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = __pyx_v_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._BaseContext._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":112
 *         return context
 * 
 *     cdef object _to_utf(self, s):             # <<<<<<<<<<<<<<
 *         u"Convert to UTF-8 and keep a reference to the encoded string"
 *         cdef python.PyObject* dict_result
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__to_utf(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_s) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_utf;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_to_utf");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_s);
  __pyx_v_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":115
 *         u"Convert to UTF-8 and keep a reference to the encoded string"
 *         cdef python.PyObject* dict_result
 *         if s is None:             # <<<<<<<<<<<<<<
 *             return None
 *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
 */
  __pyx_t_1 = (__pyx_v_s == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":116
 *         cdef python.PyObject* dict_result
 *         if s is None:
 *             return None             # <<<<<<<<<<<<<<
 *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
 *         if dict_result is not NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":117
 *         if s is None:
 *             return None
 *         dict_result = python.PyDict_GetItem(self._utf_refs, s)             # <<<<<<<<<<<<<<
 *         if dict_result is not NULL:
 *             return <object>dict_result
 */
  __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_utf_refs), __pyx_v_s);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":118
 *             return None
 *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
 *         if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *             return <object>dict_result
 *         utf = _utf8(s)
 */
  __pyx_t_1 = (__pyx_v_dict_result != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":119
 *         dict_result = python.PyDict_GetItem(self._utf_refs, s)
 *         if dict_result is not NULL:
 *             return <object>dict_result             # <<<<<<<<<<<<<<
 *         utf = _utf8(s)
 *         self._utf_refs[s] = utf
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
    __pyx_r = ((PyObject *)__pyx_v_dict_result);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":120
 *         if dict_result is not NULL:
 *             return <object>dict_result
 *         utf = _utf8(s)             # <<<<<<<<<<<<<<
 *         self._utf_refs[s] = utf
 *         return utf
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_utf);
  __pyx_v_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":121
 *             return <object>dict_result
 *         utf = _utf8(s)
 *         self._utf_refs[s] = utf             # <<<<<<<<<<<<<<
 *         return utf
 * 
 */
  if (PyDict_SetItem(((PyObject *)__pyx_v_self->_utf_refs), __pyx_v_s, __pyx_v_utf) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":122
 *         utf = _utf8(s)
 *         self._utf_refs[s] = utf
 *         return utf             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_utf);
  __pyx_r = __pyx_v_utf;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseContext._to_utf");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":124
 *         return utf
 * 
 *     cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt):             # <<<<<<<<<<<<<<
 *         self._xpathCtxt = xpathCtxt
 *         xpathCtxt.userData = <void*>self
 */

static  void __pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
  __Pyx_RefNannySetupContext("_set_xpath_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":125
 * 
 *     cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._xpathCtxt = xpathCtxt             # <<<<<<<<<<<<<<
 *         xpathCtxt.userData = <void*>self
 * 
 */
  __pyx_v_self->_xpathCtxt = __pyx_v_xpathCtxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":126
 *     cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._xpathCtxt = xpathCtxt
 *         xpathCtxt.userData = <void*>self             # <<<<<<<<<<<<<<
 * 
 *     cdef _register_context(self, _Document doc):
 */
  __pyx_v_xpathCtxt->userData = ((void *)__pyx_v_self);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":128
 *         xpathCtxt.userData = <void*>self
 * 
 *     cdef _register_context(self, _Document doc):             # <<<<<<<<<<<<<<
 *         self._doc = doc
 *         self._exc.clear()
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__register_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, struct LxmlDocument *__pyx_v_doc) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_register_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":129
 * 
 *     cdef _register_context(self, _Document doc):
 *         self._doc = doc             # <<<<<<<<<<<<<<
 *         self._exc.clear()
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __Pyx_GOTREF(__pyx_v_self->_doc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
  __pyx_v_self->_doc = __pyx_v_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":130
 *     cdef _register_context(self, _Document doc):
 *         self._doc = doc
 *         self._exc.clear()             # <<<<<<<<<<<<<<
 * 
 *     cdef _cleanup_context(self):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_exc->__pyx_vtab)->clear(__pyx_v_self->_exc);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":132
 *         self._exc.clear()
 * 
 *     cdef _cleanup_context(self):             # <<<<<<<<<<<<<<
 *         #xpath.xmlXPathRegisteredNsCleanup(self._xpathCtxt)
 *         #self.unregisterGlobalNamespaces()
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("_cleanup_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":135
 *         #xpath.xmlXPathRegisteredNsCleanup(self._xpathCtxt)
 *         #self.unregisterGlobalNamespaces()
 *         python.PyDict_Clear(self._utf_refs)             # <<<<<<<<<<<<<<
 *         self._eval_context_dict = None
 *         self._doc = None
 */
  PyDict_Clear(((PyObject *)__pyx_v_self->_utf_refs));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":136
 *         #self.unregisterGlobalNamespaces()
 *         python.PyDict_Clear(self._utf_refs)
 *         self._eval_context_dict = None             # <<<<<<<<<<<<<<
 *         self._doc = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_eval_context_dict);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_eval_context_dict));
  __pyx_v_self->_eval_context_dict = ((PyObject *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":137
 *         python.PyDict_Clear(self._utf_refs)
 *         self._eval_context_dict = None
 *         self._doc = None             # <<<<<<<<<<<<<<
 * 
 *     cdef _release_context(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_doc);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
  __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":139
 *         self._doc = None
 * 
 *     cdef _release_context(self):             # <<<<<<<<<<<<<<
 *         if self._xpathCtxt is not NULL:
 *             self._xpathCtxt.userData = NULL
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_context(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_release_context");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":140
 * 
 *     cdef _release_context(self):
 *         if self._xpathCtxt is not NULL:             # <<<<<<<<<<<<<<
 *             self._xpathCtxt.userData = NULL
 *             self._xpathCtxt = NULL
 */
  __pyx_t_1 = (__pyx_v_self->_xpathCtxt != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":141
 *     cdef _release_context(self):
 *         if self._xpathCtxt is not NULL:
 *             self._xpathCtxt.userData = NULL             # <<<<<<<<<<<<<<
 *             self._xpathCtxt = NULL
 * 
 */
    __pyx_v_self->_xpathCtxt->userData = NULL;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":142
 *         if self._xpathCtxt is not NULL:
 *             self._xpathCtxt.userData = NULL
 *             self._xpathCtxt = NULL             # <<<<<<<<<<<<<<
 * 
 *     # namespaces (internal UTF-8 methods with leading '_')
 */
    __pyx_v_self->_xpathCtxt = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":146
 *     # namespaces (internal UTF-8 methods with leading '_')
 * 
 *     cdef addNamespace(self, prefix, ns_uri):             # <<<<<<<<<<<<<<
 *         cdef list namespaces
 *         if prefix is None:
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_addNamespace(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_prefix, PyObject *__pyx_v_ns_uri) {
  PyObject *__pyx_v_namespaces;
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_v_ns_uri_utf;
  PyObject *__pyx_v_new_item;
  PyObject *__pyx_v_item;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  __Pyx_RefNannySetupContext("addNamespace");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_prefix);
  __Pyx_INCREF(__pyx_v_ns_uri);
  __pyx_v_namespaces = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_new_item = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":148
 *     cdef addNamespace(self, prefix, ns_uri):
 *         cdef list namespaces
 *         if prefix is None:             # <<<<<<<<<<<<<<
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)
 */
  __pyx_t_1 = (__pyx_v_prefix == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":149
 *         cdef list namespaces
 *         if prefix is None:
 *             raise TypeError, u"empty prefix is not supported in XPath"             # <<<<<<<<<<<<<<
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_251), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":150
 *         if prefix is None:
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)             # <<<<<<<<<<<<<<
 *         ns_uri_utf = self._to_utf(ns_uri)
 *         new_item = (prefix_utf, ns_uri_utf)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_prefix); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __pyx_v_prefix_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":151
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)             # <<<<<<<<<<<<<<
 *         new_item = (prefix_utf, ns_uri_utf)
 *         if self._namespaces is None:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __pyx_v_ns_uri_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":152
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)
 *         new_item = (prefix_utf, ns_uri_utf)             # <<<<<<<<<<<<<<
 *         if self._namespaces is None:
 *             self._namespaces = [new_item]
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_prefix_utf);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_prefix_utf);
  __Pyx_GIVEREF(__pyx_v_prefix_utf);
  __Pyx_INCREF(__pyx_v_ns_uri_utf);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_ns_uri_utf);
  __Pyx_GIVEREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF(__pyx_v_new_item);
  __pyx_v_new_item = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":153
 *         ns_uri_utf = self._to_utf(ns_uri)
 *         new_item = (prefix_utf, ns_uri_utf)
 *         if self._namespaces is None:             # <<<<<<<<<<<<<<
 *             self._namespaces = [new_item]
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_namespaces == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":154
 *         new_item = (prefix_utf, ns_uri_utf)
 *         if self._namespaces is None:
 *             self._namespaces = [new_item]             # <<<<<<<<<<<<<<
 *         else:
 *             namespaces = []
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_new_item);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_new_item);
    __Pyx_GIVEREF(__pyx_v_new_item);
    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
    __Pyx_GOTREF(__pyx_v_self->_namespaces);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_namespaces));
    __pyx_v_self->_namespaces = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":156
 *             self._namespaces = [new_item]
 *         else:
 *             namespaces = []             # <<<<<<<<<<<<<<
 *             for item in self._namespaces:
 *                 if item[0] == prefix_utf:
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_v_namespaces));
    __pyx_v_namespaces = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":157
 *         else:
 *             namespaces = []
 *             for item in self._namespaces:             # <<<<<<<<<<<<<<
 *                 if item[0] == prefix_utf:
 *                     item = new_item
 */
    if (likely(((PyObject *)__pyx_v_self->_namespaces) != Py_None)) {
      __pyx_t_3 = 0; __pyx_t_2 = ((PyObject *)__pyx_v_self->_namespaces); __Pyx_INCREF(__pyx_t_2);
    } else {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    for (;;) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      __Pyx_DECREF(__pyx_v_item);
      __pyx_v_item = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":158
 *             namespaces = []
 *             for item in self._namespaces:
 *                 if item[0] == prefix_utf:             # <<<<<<<<<<<<<<
 *                     item = new_item
 *                     new_item = None
 */
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_item, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_prefix_utf, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":159
 *             for item in self._namespaces:
 *                 if item[0] == prefix_utf:
 *                     item = new_item             # <<<<<<<<<<<<<<
 *                     new_item = None
 *                 namespaces.append(item)
 */
        __Pyx_INCREF(__pyx_v_new_item);
        __Pyx_DECREF(__pyx_v_item);
        __pyx_v_item = __pyx_v_new_item;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":160
 *                 if item[0] == prefix_utf:
 *                     item = new_item
 *                     new_item = None             # <<<<<<<<<<<<<<
 *                 namespaces.append(item)
 *             if new_item is not None:
 */
        __Pyx_INCREF(Py_None);
        __Pyx_DECREF(__pyx_v_new_item);
        __pyx_v_new_item = Py_None;
        goto __pyx_L7;
      }
      __pyx_L7:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":161
 *                     item = new_item
 *                     new_item = None
 *                 namespaces.append(item)             # <<<<<<<<<<<<<<
 *             if new_item is not None:
 *                 namespaces.append(new_item)
 */
      if (unlikely(__pyx_v_namespaces == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(((PyObject *)__pyx_v_namespaces), __pyx_v_item); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":162
 *                     new_item = None
 *                 namespaces.append(item)
 *             if new_item is not None:             # <<<<<<<<<<<<<<
 *                 namespaces.append(new_item)
 *             self._namespaces = namespaces
 */
    __pyx_t_1 = (__pyx_v_new_item != Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":163
 *                 namespaces.append(item)
 *             if new_item is not None:
 *                 namespaces.append(new_item)             # <<<<<<<<<<<<<<
 *             self._namespaces = namespaces
 *         if self._xpathCtxt is not NULL:
 */
      if (unlikely(__pyx_v_namespaces == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(((PyObject *)__pyx_v_namespaces), __pyx_v_new_item); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":164
 *             if new_item is not None:
 *                 namespaces.append(new_item)
 *             self._namespaces = namespaces             # <<<<<<<<<<<<<<
 *         if self._xpathCtxt is not NULL:
 *             xpath.xmlXPathRegisterNs(
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_namespaces));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_namespaces));
    __Pyx_GOTREF(__pyx_v_self->_namespaces);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_namespaces));
    __pyx_v_self->_namespaces = __pyx_v_namespaces;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":165
 *                 namespaces.append(new_item)
 *             self._namespaces = namespaces
 *         if self._xpathCtxt is not NULL:             # <<<<<<<<<<<<<<
 *             xpath.xmlXPathRegisterNs(
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 */
  __pyx_t_1 = (__pyx_v_self->_xpathCtxt != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":167
 *         if self._xpathCtxt is not NULL:
 *             xpath.xmlXPathRegisterNs(
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))             # <<<<<<<<<<<<<<
 * 
 *     cdef registerNamespace(self, prefix, ns_uri):
 */
    xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), PyString_AS_STRING(__pyx_v_ns_uri_utf));
    goto __pyx_L9;
  }
  __pyx_L9:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._BaseContext.addNamespace");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF(__pyx_v_new_item);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":169
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 * 
 *     cdef registerNamespace(self, prefix, ns_uri):             # <<<<<<<<<<<<<<
 *         if prefix is None:
 *             raise TypeError, u"empty prefix is not supported in XPath"
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_prefix, PyObject *__pyx_v_ns_uri) {
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_v_ns_uri_utf;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("registerNamespace");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_prefix);
  __Pyx_INCREF(__pyx_v_ns_uri);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":170
 * 
 *     cdef registerNamespace(self, prefix, ns_uri):
 *         if prefix is None:             # <<<<<<<<<<<<<<
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)
 */
  __pyx_t_1 = (__pyx_v_prefix == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":171
 *     cdef registerNamespace(self, prefix, ns_uri):
 *         if prefix is None:
 *             raise TypeError, u"empty prefix is not supported in XPath"             # <<<<<<<<<<<<<<
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)
 */
    __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_kp_u_251), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":172
 *         if prefix is None:
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)             # <<<<<<<<<<<<<<
 *         ns_uri_utf = self._to_utf(ns_uri)
 *         self._global_namespaces.append(prefix_utf)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_prefix); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __pyx_v_prefix_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":173
 *             raise TypeError, u"empty prefix is not supported in XPath"
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)             # <<<<<<<<<<<<<<
 *         self._global_namespaces.append(prefix_utf)
 *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_self->__pyx_vtab)->_to_utf(__pyx_v_self, __pyx_v_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __pyx_v_ns_uri_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":174
 *         prefix_utf = self._to_utf(prefix)
 *         ns_uri_utf = self._to_utf(ns_uri)
 *         self._global_namespaces.append(prefix_utf)             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                  _cstr(prefix_utf), _cstr(ns_uri_utf))
 */
  if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
    PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_self->_global_namespaces), __pyx_v_prefix_utf); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":176
 *         self._global_namespaces.append(prefix_utf)
 *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                  _cstr(prefix_utf), _cstr(ns_uri_utf))             # <<<<<<<<<<<<<<
 * 
 *     cdef registerLocalNamespaces(self):
 */
  xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), PyString_AS_STRING(__pyx_v_ns_uri_utf));

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseContext.registerNamespace");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_ns_uri);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":178
 *                                  _cstr(prefix_utf), _cstr(ns_uri_utf))
 * 
 *     cdef registerLocalNamespaces(self):             # <<<<<<<<<<<<<<
 *         if self._namespaces is None:
 *             return
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_v_ns_uri_utf;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("registerLocalNamespaces");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":179
 * 
 *     cdef registerLocalNamespaces(self):
 *         if self._namespaces is None:             # <<<<<<<<<<<<<<
 *             return
 *         for prefix_utf, ns_uri_utf in self._namespaces:
 */
  __pyx_t_1 = (__pyx_v_self->_namespaces == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":180
 *     cdef registerLocalNamespaces(self):
 *         if self._namespaces is None:
 *             return             # <<<<<<<<<<<<<<
 *         for prefix_utf, ns_uri_utf in self._namespaces:
 *             xpath.xmlXPathRegisterNs(
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":181
 *         if self._namespaces is None:
 *             return
 *         for prefix_utf, ns_uri_utf in self._namespaces:             # <<<<<<<<<<<<<<
 *             xpath.xmlXPathRegisterNs(
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 */
  if (likely(((PyObject *)__pyx_v_self->_namespaces) != Py_None)) {
    __pyx_t_2 = 0; __pyx_t_3 = ((PyObject *)__pyx_v_self->_namespaces); __Pyx_INCREF(__pyx_t_3);
  } else {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
    if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
      PyObject* tuple = __pyx_t_4;
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_prefix_utf);
      __pyx_v_prefix_utf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_ns_uri_utf);
      __pyx_v_ns_uri_utf = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_v_prefix_utf);
      __pyx_v_prefix_utf = __pyx_t_5;
      __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_ns_uri_utf);
      __pyx_v_ns_uri_utf = __pyx_t_6;
      __pyx_t_6 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":183
 *         for prefix_utf, ns_uri_utf in self._namespaces:
 *             xpath.xmlXPathRegisterNs(
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))             # <<<<<<<<<<<<<<
 * 
 *     cdef registerGlobalNamespaces(self):
 */
    xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), PyString_AS_STRING(__pyx_v_ns_uri_utf));
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._BaseContext.registerLocalNamespaces");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":185
 *                 self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 * 
 *     cdef registerGlobalNamespaces(self):             # <<<<<<<<<<<<<<
 *         cdef list ns_prefixes = _find_all_extension_prefixes()
 *         if python.PyList_GET_SIZE(ns_prefixes) > 0:
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_v_ns_prefixes = 0;
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_v_ns_uri_utf;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  __Pyx_RefNannySetupContext("registerGlobalNamespaces");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_uri_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":186
 * 
 *     cdef registerGlobalNamespaces(self):
 *         cdef list ns_prefixes = _find_all_extension_prefixes()             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(ns_prefixes) > 0:
 *             for prefix_utf, ns_uri_utf in ns_prefixes:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__find_all_extension_prefixes()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ns_prefixes = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":187
 *     cdef registerGlobalNamespaces(self):
 *         cdef list ns_prefixes = _find_all_extension_prefixes()
 *         if python.PyList_GET_SIZE(ns_prefixes) > 0:             # <<<<<<<<<<<<<<
 *             for prefix_utf, ns_uri_utf in ns_prefixes:
 *                 self._global_namespaces.append(prefix_utf)
 */
  __pyx_t_2 = (PyList_GET_SIZE(((PyObject *)__pyx_v_ns_prefixes)) > 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":188
 *         cdef list ns_prefixes = _find_all_extension_prefixes()
 *         if python.PyList_GET_SIZE(ns_prefixes) > 0:
 *             for prefix_utf, ns_uri_utf in ns_prefixes:             # <<<<<<<<<<<<<<
 *                 self._global_namespaces.append(prefix_utf)
 *                 xpath.xmlXPathRegisterNs(
 */
    if (likely(((PyObject *)__pyx_v_ns_prefixes) != Py_None)) {
      __pyx_t_3 = 0; __pyx_t_1 = ((PyObject *)__pyx_v_ns_prefixes); __Pyx_INCREF(__pyx_t_1);
    } else {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    for (;;) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
        PyObject* tuple = __pyx_t_4;
        __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_prefix_utf);
        __pyx_v_prefix_utf = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_ns_uri_utf);
        __pyx_v_ns_uri_utf = __pyx_t_6;
        __pyx_t_6 = 0;
      } else {
        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_prefix_utf);
        __pyx_v_prefix_utf = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_ns_uri_utf);
        __pyx_v_ns_uri_utf = __pyx_t_6;
        __pyx_t_6 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":189
 *         if python.PyList_GET_SIZE(ns_prefixes) > 0:
 *             for prefix_utf, ns_uri_utf in ns_prefixes:
 *                 self._global_namespaces.append(prefix_utf)             # <<<<<<<<<<<<<<
 *                 xpath.xmlXPathRegisterNs(
 *                     self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 */
      if (unlikely(__pyx_v_self->_global_namespaces == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_8 = PyList_Append(((PyObject *)__pyx_v_self->_global_namespaces), __pyx_v_prefix_utf); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":191
 *                 self._global_namespaces.append(prefix_utf)
 *                 xpath.xmlXPathRegisterNs(
 *                     self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))             # <<<<<<<<<<<<<<
 * 
 *     cdef unregisterGlobalNamespaces(self):
 */
      xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), PyString_AS_STRING(__pyx_v_ns_uri_utf));
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._BaseContext.registerGlobalNamespaces");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ns_prefixes);
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF(__pyx_v_ns_uri_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":193
 *                     self._xpathCtxt, _cstr(prefix_utf), _cstr(ns_uri_utf))
 * 
 *     cdef unregisterGlobalNamespaces(self):             # <<<<<<<<<<<<<<
 *         if python.PyList_GET_SIZE(self._global_namespaces) > 0:
 *             for prefix_utf in self._global_namespaces:
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_v_prefix_utf;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("unregisterGlobalNamespaces");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_prefix_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":194
 * 
 *     cdef unregisterGlobalNamespaces(self):
 *         if python.PyList_GET_SIZE(self._global_namespaces) > 0:             # <<<<<<<<<<<<<<
 *             for prefix_utf in self._global_namespaces:
 *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
 */
  __pyx_t_1 = (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_global_namespaces)) > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":195
 *     cdef unregisterGlobalNamespaces(self):
 *         if python.PyList_GET_SIZE(self._global_namespaces) > 0:
 *             for prefix_utf in self._global_namespaces:             # <<<<<<<<<<<<<<
 *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                          _cstr(prefix_utf), NULL)
 */
    if (likely(((PyObject *)__pyx_v_self->_global_namespaces) != Py_None)) {
      __pyx_t_2 = 0; __pyx_t_3 = ((PyObject *)__pyx_v_self->_global_namespaces); __Pyx_INCREF(__pyx_t_3);
    } else {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    for (;;) {
      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++;
      __Pyx_DECREF(__pyx_v_prefix_utf);
      __pyx_v_prefix_utf = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":197
 *             for prefix_utf in self._global_namespaces:
 *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                          _cstr(prefix_utf), NULL)             # <<<<<<<<<<<<<<
 *             del self._global_namespaces[:]
 * 
 */
      xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), NULL);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":198
 *                 xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                          _cstr(prefix_utf), NULL)
 *             del self._global_namespaces[:]             # <<<<<<<<<<<<<<
 * 
 *     cdef void _unregisterNamespace(self, prefix_utf):
 */
    if (PySequence_DelSlice(((PyObject *)__pyx_v_self->_global_namespaces), 0, PY_SSIZE_T_MAX) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._BaseContext.unregisterGlobalNamespaces");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":200
 *             del self._global_namespaces[:]
 * 
 *     cdef void _unregisterNamespace(self, prefix_utf):             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                  _cstr(prefix_utf), NULL)
 */

static  void __pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_prefix_utf) {
  __Pyx_RefNannySetupContext("_unregisterNamespace");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":202
 *     cdef void _unregisterNamespace(self, prefix_utf):
 *         xpath.xmlXPathRegisterNs(self._xpathCtxt,
 *                                  _cstr(prefix_utf), NULL)             # <<<<<<<<<<<<<<
 * 
 *     # extension functions
 */
  xmlXPathRegisterNs(__pyx_v_self->_xpathCtxt, PyString_AS_STRING(__pyx_v_prefix_utf), NULL);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":206
 *     # extension functions
 * 
 *     cdef void _addLocalExtensionFunction(self, ns_utf, name_utf, function):             # <<<<<<<<<<<<<<
 *         if self._extensions is None:
 *             self._extensions = {}
 */

static  void __pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_ns_utf, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_function) {
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_addLocalExtensionFunction");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ns_utf);
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_function);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":207
 * 
 *     cdef void _addLocalExtensionFunction(self, ns_utf, name_utf, function):
 *         if self._extensions is None:             # <<<<<<<<<<<<<<
 *             self._extensions = {}
 *         self._extensions[(ns_utf, name_utf)] = function
 */
  __pyx_t_1 = (__pyx_v_self->_extensions == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":208
 *     cdef void _addLocalExtensionFunction(self, ns_utf, name_utf, function):
 *         if self._extensions is None:
 *             self._extensions = {}             # <<<<<<<<<<<<<<
 *         self._extensions[(ns_utf, name_utf)] = function
 * 
 */
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
    __Pyx_GOTREF(__pyx_v_self->_extensions);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_extensions));
    __pyx_v_self->_extensions = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":209
 *         if self._extensions is None:
 *             self._extensions = {}
 *         self._extensions[(ns_utf, name_utf)] = function             # <<<<<<<<<<<<<<
 * 
 *     cdef void registerGlobalFunctions(self, void* ctxt,
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_ns_utf);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ns_utf);
  __Pyx_GIVEREF(__pyx_v_ns_utf);
  __Pyx_INCREF(__pyx_v_name_utf);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_name_utf);
  __Pyx_GIVEREF(__pyx_v_name_utf);
  if (PyDict_SetItem(((PyObject *)__pyx_v_self->_extensions), __pyx_t_2, __pyx_v_function) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("lxml.etree._BaseContext._addLocalExtensionFunction");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":211
 *         self._extensions[(ns_utf, name_utf)] = function
 * 
 *     cdef void registerGlobalFunctions(self, void* ctxt,             # <<<<<<<<<<<<<<
 *                                       _register_function reg_func):
 *         cdef python.PyObject* dict_result
 */

static  void __pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, void *__pyx_v_ctxt, __pyx_t_4lxml_5etree__register_function __pyx_v_reg_func) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_d;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_ns_functions;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_v_function;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  void *__pyx_t_3;
  void *__pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  __Pyx_RefNannySetupContext("registerGlobalFunctions");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_d = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_functions = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_function = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":215
 *         cdef python.PyObject* dict_result
 *         cdef dict d
 *         for ns_utf, ns_functions in __FUNCTION_NAMESPACE_REGISTRIES.iteritems():             # <<<<<<<<<<<<<<
 *             dict_result = python.PyDict_GetItem(
 *                 self._function_cache, ns_utf)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES));
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = ((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES);
  __pyx_t_2 = 0;
  while (1) {
    if (!PyDict_Next(__pyx_t_1, (&__pyx_t_2), ((PyObject **)(&__pyx_t_3)), ((PyObject **)(&__pyx_t_4)))) break;
    __Pyx_INCREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = ((PyObject *)__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(__pyx_v_ns_functions);
    __pyx_v_ns_functions = ((PyObject *)__pyx_t_4);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":217
 *         for ns_utf, ns_functions in __FUNCTION_NAMESPACE_REGISTRIES.iteritems():
 *             dict_result = python.PyDict_GetItem(
 *                 self._function_cache, ns_utf)             # <<<<<<<<<<<<<<
 *             if dict_result is not NULL:
 *                 d = <dict>dict_result
 */
    __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_function_cache), __pyx_v_ns_utf);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":218
 *             dict_result = python.PyDict_GetItem(
 *                 self._function_cache, ns_utf)
 *             if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *                 d = <dict>dict_result
 *             else:
 */
    __pyx_t_5 = (__pyx_v_dict_result != NULL);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":219
 *                 self._function_cache, ns_utf)
 *             if dict_result is not NULL:
 *                 d = <dict>dict_result             # <<<<<<<<<<<<<<
 *             else:
 *                 d = {}
 */
      __Pyx_INCREF(((PyObject *)((PyObject *)__pyx_v_dict_result)));
      __Pyx_DECREF(((PyObject *)__pyx_v_d));
      __pyx_v_d = ((PyObject *)__pyx_v_dict_result);
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":221
 *                 d = <dict>dict_result
 *             else:
 *                 d = {}             # <<<<<<<<<<<<<<
 *                 self._function_cache[ns_utf] = d
 *             for name_utf, function in ns_functions.iteritems():
 */
      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_DECREF(((PyObject *)__pyx_v_d));
      __pyx_v_d = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":222
 *             else:
 *                 d = {}
 *                 self._function_cache[ns_utf] = d             # <<<<<<<<<<<<<<
 *             for name_utf, function in ns_functions.iteritems():
 *                 d[name_utf] = function
 */
      if (PyDict_SetItem(((PyObject *)__pyx_v_self->_function_cache), __pyx_v_ns_utf, ((PyObject *)__pyx_v_d)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":223
 *                 d = {}
 *                 self._function_cache[ns_utf] = d
 *             for name_utf, function in ns_functions.iteritems():             # <<<<<<<<<<<<<<
 *                 d[name_utf] = function
 *                 reg_func(ctxt, name_utf, ns_utf)
 */
    __pyx_t_6 = PyObject_GetAttr(__pyx_v_ns_functions, __pyx_n_s__iteritems); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyList_CheckExact(__pyx_t_8) || PyTuple_CheckExact(__pyx_t_8)) {
      __pyx_t_7 = 0; __pyx_t_6 = __pyx_t_8; __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_7 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_t_7++;
      } else {
        __pyx_t_8 = PyIter_Next(__pyx_t_6);
        if (!__pyx_t_8) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_8);
      }
      if (PyTuple_CheckExact(__pyx_t_8) && likely(PyTuple_GET_SIZE(__pyx_t_8) == 2)) {
        PyObject* tuple = __pyx_t_8;
        __pyx_t_9 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_9);
        __pyx_t_10 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_name_utf);
        __pyx_v_name_utf = __pyx_t_9;
        __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_v_function);
        __pyx_v_function = __pyx_t_10;
        __pyx_t_10 = 0;
      } else {
        __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = __Pyx_UnpackItem(__pyx_t_11, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __Pyx_UnpackItem(__pyx_t_11, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_10);
        if (__Pyx_EndUnpack(__pyx_t_11) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_v_name_utf);
        __pyx_v_name_utf = __pyx_t_9;
        __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_v_function);
        __pyx_v_function = __pyx_t_10;
        __pyx_t_10 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":224
 *                 self._function_cache[ns_utf] = d
 *             for name_utf, function in ns_functions.iteritems():
 *                 d[name_utf] = function             # <<<<<<<<<<<<<<
 *                 reg_func(ctxt, name_utf, ns_utf)
 * 
 */
      if (PyDict_SetItem(((PyObject *)__pyx_v_d), __pyx_v_name_utf, __pyx_v_function) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":225
 *             for name_utf, function in ns_functions.iteritems():
 *                 d[name_utf] = function
 *                 reg_func(ctxt, name_utf, ns_utf)             # <<<<<<<<<<<<<<
 * 
 *     cdef void registerLocalFunctions(self, void* ctxt,
 */
      __pyx_v_reg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_WriteUnraisable("lxml.etree._BaseContext.registerGlobalFunctions");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_d);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_ns_functions);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":227
 *                 reg_func(ctxt, name_utf, ns_utf)
 * 
 *     cdef void registerLocalFunctions(self, void* ctxt,             # <<<<<<<<<<<<<<
 *                                       _register_function reg_func):
 *         cdef python.PyObject* dict_result
 */

static  void __pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, void *__pyx_v_ctxt, __pyx_t_4lxml_5etree__register_function __pyx_v_reg_func) {
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_v_d;
  PyObject *__pyx_v_last_ns;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_v_function;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  void *__pyx_t_4;
  void *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("registerLocalFunctions");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_d = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_last_ns = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_function = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":231
 *         cdef python.PyObject* dict_result
 *         cdef dict d
 *         if self._extensions is None:             # <<<<<<<<<<<<<<
 *             return # done
 *         last_ns = None
 */
  __pyx_t_1 = (__pyx_v_self->_extensions == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":232
 *         cdef dict d
 *         if self._extensions is None:
 *             return # done             # <<<<<<<<<<<<<<
 *         last_ns = None
 *         d = None
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":233
 *         if self._extensions is None:
 *             return # done
 *         last_ns = None             # <<<<<<<<<<<<<<
 *         d = None
 *         for (ns_utf, name_utf), function in self._extensions.iteritems():
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(__pyx_v_last_ns);
  __pyx_v_last_ns = Py_None;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":234
 *             return # done
 *         last_ns = None
 *         d = None             # <<<<<<<<<<<<<<
 *         for (ns_utf, name_utf), function in self._extensions.iteritems():
 *             if ns_utf is not last_ns or d is None:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_DECREF(((PyObject *)__pyx_v_d));
  __pyx_v_d = ((PyObject *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":235
 *         last_ns = None
 *         d = None
 *         for (ns_utf, name_utf), function in self._extensions.iteritems():             # <<<<<<<<<<<<<<
 *             if ns_utf is not last_ns or d is None:
 *                 last_ns = ns_utf
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_extensions));
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->_extensions);
  __pyx_t_3 = 0;
  while (1) {
    if (!PyDict_Next(__pyx_t_2, (&__pyx_t_3), ((PyObject **)(&__pyx_t_4)), ((PyObject **)(&__pyx_t_5)))) break;
    if (PyTuple_CheckExact(((PyObject *)__pyx_t_4)) && likely(PyTuple_GET_SIZE(((PyObject *)__pyx_t_4)) == 2)) {
      PyObject* tuple = ((PyObject *)__pyx_t_4);
      __pyx_t_6 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_7;
      __pyx_t_7 = 0;
    } else {
      __pyx_t_8 = PyObject_GetIter(((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_8, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_8, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      if (__Pyx_EndUnpack(__pyx_t_8) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_7;
      __pyx_t_7 = 0;
    }
    __Pyx_INCREF(((PyObject *)__pyx_t_5));
    __Pyx_DECREF(__pyx_v_function);
    __pyx_v_function = ((PyObject *)__pyx_t_5);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":236
 *         d = None
 *         for (ns_utf, name_utf), function in self._extensions.iteritems():
 *             if ns_utf is not last_ns or d is None:             # <<<<<<<<<<<<<<
 *                 last_ns = ns_utf
 *                 dict_result = python.PyDict_GetItem(
 */
    __pyx_t_1 = (__pyx_v_ns_utf != __pyx_v_last_ns);
    if (!__pyx_t_1) {
      __pyx_t_9 = (__pyx_v_d == ((PyObject *)Py_None));
      __pyx_t_10 = __pyx_t_9;
    } else {
      __pyx_t_10 = __pyx_t_1;
    }
    if (__pyx_t_10) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":237
 *         for (ns_utf, name_utf), function in self._extensions.iteritems():
 *             if ns_utf is not last_ns or d is None:
 *                 last_ns = ns_utf             # <<<<<<<<<<<<<<
 *                 dict_result = python.PyDict_GetItem(
 *                     self._function_cache, ns_utf)
 */
      __Pyx_INCREF(__pyx_v_ns_utf);
      __Pyx_DECREF(__pyx_v_last_ns);
      __pyx_v_last_ns = __pyx_v_ns_utf;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":239
 *                 last_ns = ns_utf
 *                 dict_result = python.PyDict_GetItem(
 *                     self._function_cache, ns_utf)             # <<<<<<<<<<<<<<
 *                 if dict_result is not NULL:
 *                     d = <dict>dict_result
 */
      __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_function_cache), __pyx_v_ns_utf);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":240
 *                 dict_result = python.PyDict_GetItem(
 *                     self._function_cache, ns_utf)
 *                 if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *                     d = <dict>dict_result
 *                 else:
 */
      __pyx_t_10 = (__pyx_v_dict_result != NULL);
      if (__pyx_t_10) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":241
 *                     self._function_cache, ns_utf)
 *                 if dict_result is not NULL:
 *                     d = <dict>dict_result             # <<<<<<<<<<<<<<
 *                 else:
 *                     d = {}
 */
        __Pyx_INCREF(((PyObject *)((PyObject *)__pyx_v_dict_result)));
        __Pyx_DECREF(((PyObject *)__pyx_v_d));
        __pyx_v_d = ((PyObject *)__pyx_v_dict_result);
        goto __pyx_L7;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":243
 *                     d = <dict>dict_result
 *                 else:
 *                     d = {}             # <<<<<<<<<<<<<<
 *                     self._function_cache[ns_utf] = d
 *             d[name_utf] = function
 */
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
        __Pyx_DECREF(((PyObject *)__pyx_v_d));
        __pyx_v_d = __pyx_t_7;
        __pyx_t_7 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":244
 *                 else:
 *                     d = {}
 *                     self._function_cache[ns_utf] = d             # <<<<<<<<<<<<<<
 *             d[name_utf] = function
 *             reg_func(ctxt, name_utf, ns_utf)
 */
        if (PyDict_SetItem(((PyObject *)__pyx_v_self->_function_cache), __pyx_v_ns_utf, ((PyObject *)__pyx_v_d)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L7:;
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":245
 *                     d = {}
 *                     self._function_cache[ns_utf] = d
 *             d[name_utf] = function             # <<<<<<<<<<<<<<
 *             reg_func(ctxt, name_utf, ns_utf)
 * 
 */
    if (PyDict_SetItem(((PyObject *)__pyx_v_d), __pyx_v_name_utf, __pyx_v_function) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":246
 *                     self._function_cache[ns_utf] = d
 *             d[name_utf] = function
 *             reg_func(ctxt, name_utf, ns_utf)             # <<<<<<<<<<<<<<
 * 
 *     cdef unregisterAllFunctions(self, void* ctxt,
 */
    __pyx_v_reg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_WriteUnraisable("lxml.etree._BaseContext.registerLocalFunctions");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_d);
  __Pyx_DECREF(__pyx_v_last_ns);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":248
 *             reg_func(ctxt, name_utf, ns_utf)
 * 
 *     cdef unregisterAllFunctions(self, void* ctxt,             # <<<<<<<<<<<<<<
 *                                       _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.iteritems():
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, void *__pyx_v_ctxt, __pyx_t_4lxml_5etree__register_function __pyx_v_unreg_func) {
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_functions;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  void *__pyx_t_3;
  void *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("unregisterAllFunctions");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_functions = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":250
 *     cdef unregisterAllFunctions(self, void* ctxt,
 *                                       _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.iteritems():             # <<<<<<<<<<<<<<
 *             for name_utf in functions:
 *                 unreg_func(ctxt, name_utf, ns_utf)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_function_cache));
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_function_cache);
  __pyx_t_2 = 0;
  while (1) {
    if (!PyDict_Next(__pyx_t_1, (&__pyx_t_2), ((PyObject **)(&__pyx_t_3)), ((PyObject **)(&__pyx_t_4)))) break;
    __Pyx_INCREF(((PyObject *)__pyx_t_3));
    __Pyx_DECREF(__pyx_v_ns_utf);
    __pyx_v_ns_utf = ((PyObject *)__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_t_4));
    __Pyx_DECREF(__pyx_v_functions);
    __pyx_v_functions = ((PyObject *)__pyx_t_4);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":251
 *                                       _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.iteritems():
 *             for name_utf in functions:             # <<<<<<<<<<<<<<
 *                 unreg_func(ctxt, name_utf, ns_utf)
 * 
 */
    if (PyList_CheckExact(__pyx_v_functions) || PyTuple_CheckExact(__pyx_v_functions)) {
      __pyx_t_5 = 0; __pyx_t_6 = __pyx_v_functions; __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_functions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
      } else {
        __pyx_t_7 = PyIter_Next(__pyx_t_6);
        if (!__pyx_t_7) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":252
 *         for ns_utf, functions in self._function_cache.iteritems():
 *             for name_utf in functions:
 *                 unreg_func(ctxt, name_utf, ns_utf)             # <<<<<<<<<<<<<<
 * 
 *     cdef unregisterGlobalFunctions(self, void* ctxt,
 */
      __pyx_v_unreg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._BaseContext.unregisterAllFunctions");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_functions);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":254
 *                 unreg_func(ctxt, name_utf, ns_utf)
 * 
 *     cdef unregisterGlobalFunctions(self, void* ctxt,             # <<<<<<<<<<<<<<
 *                                          _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.items():
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, void *__pyx_v_ctxt, __pyx_t_4lxml_5etree__register_function __pyx_v_unreg_func) {
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_functions;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  __Pyx_RefNannySetupContext("unregisterGlobalFunctions");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_functions = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":256
 *     cdef unregisterGlobalFunctions(self, void* ctxt,
 *                                          _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.items():             # <<<<<<<<<<<<<<
 *             for name_utf in functions:
 *                 if self._extensions is None or \
 */
  __pyx_t_2 = PyDict_Items(((PyObject *)__pyx_v_self->_function_cache)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = 0; __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++;
    } else {
      __pyx_t_2 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_2) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
      PyObject* tuple = __pyx_t_2;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_functions);
      __pyx_v_functions = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_functions);
      __pyx_v_functions = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":257
 *                                          _register_function unreg_func):
 *         for ns_utf, functions in self._function_cache.items():
 *             for name_utf in functions:             # <<<<<<<<<<<<<<
 *                 if self._extensions is None or \
 *                        (ns_utf, name_utf) not in self._extensions:
 */
    if (PyList_CheckExact(__pyx_v_functions) || PyTuple_CheckExact(__pyx_v_functions)) {
      __pyx_t_7 = 0; __pyx_t_2 = __pyx_v_functions; __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_functions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
      } else {
        __pyx_t_5 = PyIter_Next(__pyx_t_2);
        if (!__pyx_t_5) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":258
 *         for ns_utf, functions in self._function_cache.items():
 *             for name_utf in functions:
 *                 if self._extensions is None or \             # <<<<<<<<<<<<<<
 *                        (ns_utf, name_utf) not in self._extensions:
 *                     unreg_func(ctxt, name_utf, ns_utf)
 */
      __pyx_t_8 = (__pyx_v_self->_extensions == ((PyObject *)Py_None));
      if (!__pyx_t_8) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":259
 *             for name_utf in functions:
 *                 if self._extensions is None or \
 *                        (ns_utf, name_utf) not in self._extensions:             # <<<<<<<<<<<<<<
 *                     unreg_func(ctxt, name_utf, ns_utf)
 * 
 */
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_ns_utf);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ns_utf);
        __Pyx_GIVEREF(__pyx_v_ns_utf);
        __Pyx_INCREF(__pyx_v_name_utf);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_name_utf);
        __Pyx_GIVEREF(__pyx_v_name_utf);
        if (unlikely(((PyObject *)__pyx_v_self->_extensions) == Py_None)) {
          __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        } else {
          __pyx_t_9 = (__Pyx_NegateNonNeg(PyDict_Contains(((PyObject *)__pyx_v_self->_extensions), __pyx_t_5))); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_10 = __pyx_t_9;
      } else {
        __pyx_t_10 = __pyx_t_8;
      }
      if (__pyx_t_10) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":260
 *                 if self._extensions is None or \
 *                        (ns_utf, name_utf) not in self._extensions:
 *                     unreg_func(ctxt, name_utf, ns_utf)             # <<<<<<<<<<<<<<
 * 
 *     cdef _find_cached_function(self, char* c_ns_uri, char* c_name):
 */
        __pyx_v_unreg_func(__pyx_v_ctxt, __pyx_v_name_utf, __pyx_v_ns_utf);
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._BaseContext.unregisterGlobalFunctions");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_functions);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":262
 *                     unreg_func(ctxt, name_utf, ns_utf)
 * 
 *     cdef _find_cached_function(self, char* c_ns_uri, char* c_name):             # <<<<<<<<<<<<<<
 *         u"""Lookup an extension function in the cache and return it.
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, char *__pyx_v_c_ns_uri, char *__pyx_v_c_name) {
  PyObject *__pyx_v_c_dict;
  PyObject *__pyx_v_dict_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_find_cached_function");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":269
 *         cdef python.PyObject* c_dict
 *         cdef python.PyObject* dict_result
 *         if c_ns_uri is NULL:             # <<<<<<<<<<<<<<
 *             c_dict = python.PyDict_GetItem(
 *                 self._function_cache, None)
 */
  __pyx_t_1 = (__pyx_v_c_ns_uri == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":271
 *         if c_ns_uri is NULL:
 *             c_dict = python.PyDict_GetItem(
 *                 self._function_cache, None)             # <<<<<<<<<<<<<<
 *         else:
 *             c_dict = python.PyDict_GetItem(
 */
    __pyx_v_c_dict = PyDict_GetItem(((PyObject *)__pyx_v_self->_function_cache), Py_None);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":274
 *         else:
 *             c_dict = python.PyDict_GetItem(
 *                 self._function_cache, c_ns_uri)             # <<<<<<<<<<<<<<
 * 
 *         if c_dict is not NULL:
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_ns_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_v_c_dict = PyDict_GetItem(((PyObject *)__pyx_v_self->_function_cache), ((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":276
 *                 self._function_cache, c_ns_uri)
 * 
 *         if c_dict is not NULL:             # <<<<<<<<<<<<<<
 *             dict_result = python.PyDict_GetItem(
 *                 <object>c_dict, c_name)
 */
  __pyx_t_1 = (__pyx_v_c_dict != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":278
 *         if c_dict is not NULL:
 *             dict_result = python.PyDict_GetItem(
 *                 <object>c_dict, c_name)             # <<<<<<<<<<<<<<
 *             if dict_result is not NULL:
 *                 return <object>dict_result
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_c_dict), ((PyObject *)__pyx_t_2));
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":279
 *             dict_result = python.PyDict_GetItem(
 *                 <object>c_dict, c_name)
 *             if dict_result is not NULL:             # <<<<<<<<<<<<<<
 *                 return <object>dict_result
 *         return None
 */
    __pyx_t_1 = (__pyx_v_dict_result != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":280
 *                 <object>c_dict, c_name)
 *             if dict_result is not NULL:
 *                 return <object>dict_result             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
      __pyx_r = ((PyObject *)__pyx_v_dict_result);
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":281
 *             if dict_result is not NULL:
 *                 return <object>dict_result
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     # Python access to the XPath context for extension functions
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_None);
  __pyx_r = Py_None;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseContext._find_cached_function");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":286
 * 
 *     property context_node:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef xmlNode* c_node
 *             if self._xpathCtxt is NULL:
 */

static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(PyObject *__pyx_v_self) {
  xmlNode *__pyx_v_c_node;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":288
 *         def __get__(self):
 *             cdef xmlNode* c_node
 *             if self._xpathCtxt is NULL:             # <<<<<<<<<<<<<<
 *                 raise XPathError, \
 *                     u"XPath context is only usable during the evaluation"
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_xpathCtxt == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":289
 *             cdef xmlNode* c_node
 *             if self._xpathCtxt is NULL:
 *                 raise XPathError, \             # <<<<<<<<<<<<<<
 *                     u"XPath context is only usable during the evaluation"
 *             c_node = self._xpathCtxt.node
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_252), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":291
 *                 raise XPathError, \
 *                     u"XPath context is only usable during the evaluation"
 *             c_node = self._xpathCtxt.node             # <<<<<<<<<<<<<<
 *             if c_node is NULL:
 *                 raise XPathError, u"no context node"
 */
  __pyx_v_c_node = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_xpathCtxt->node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":292
 *                     u"XPath context is only usable during the evaluation"
 *             c_node = self._xpathCtxt.node
 *             if c_node is NULL:             # <<<<<<<<<<<<<<
 *                 raise XPathError, u"no context node"
 *             if c_node.doc != self._xpathCtxt.doc:
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":293
 *             c_node = self._xpathCtxt.node
 *             if c_node is NULL:
 *                 raise XPathError, u"no context node"             # <<<<<<<<<<<<<<
 *             if c_node.doc != self._xpathCtxt.doc:
 *                 raise XPathError, \
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_253), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":294
 *             if c_node is NULL:
 *                 raise XPathError, u"no context node"
 *             if c_node.doc != self._xpathCtxt.doc:             # <<<<<<<<<<<<<<
 *                 raise XPathError, \
 *                     u"document-external context nodes are not supported"
 */
  __pyx_t_1 = (__pyx_v_c_node->doc != ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_xpathCtxt->doc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":295
 *                 raise XPathError, u"no context node"
 *             if c_node.doc != self._xpathCtxt.doc:
 *                 raise XPathError, \             # <<<<<<<<<<<<<<
 *                     u"document-external context nodes are not supported"
 *             if self._doc is None:
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_254), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":297
 *                 raise XPathError, \
 *                     u"document-external context nodes are not supported"
 *             if self._doc is None:             # <<<<<<<<<<<<<<
 *                 raise XPathError, u"document context is missing"
 *             return _elementFactory(self._doc, c_node)
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_doc) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":298
 *                     u"document-external context nodes are not supported"
 *             if self._doc is None:
 *                 raise XPathError, u"document context is missing"             # <<<<<<<<<<<<<<
 *             return _elementFactory(self._doc, c_node)
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_255), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":299
 *             if self._doc is None:
 *                 raise XPathError, u"document context is missing"
 *             return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
 * 
 *     property eval_context:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseContext.context_node.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":302
 * 
 *     property eval_context:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._eval_context_dict is None:
 *                 self._eval_context_dict = {}
 */

static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":303
 *     property eval_context:
 *         def __get__(self):
 *             if self._eval_context_dict is None:             # <<<<<<<<<<<<<<
 *                 self._eval_context_dict = {}
 *             return self._eval_context_dict
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict == ((PyObject *)Py_None));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":304
 *         def __get__(self):
 *             if self._eval_context_dict is None:
 *                 self._eval_context_dict = {}             # <<<<<<<<<<<<<<
 *             return self._eval_context_dict
 * 
 */
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
    __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict);
    __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict));
    ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":305
 *             if self._eval_context_dict is None:
 *                 self._eval_context_dict = {}
 *             return self._eval_context_dict             # <<<<<<<<<<<<<<
 * 
 *     # Python reference keeping during XPath function evaluation
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict));
  __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)->_eval_context_dict);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._BaseContext.eval_context.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":309
 *     # Python reference keeping during XPath function evaluation
 * 
 *     cdef _release_temp_refs(self):             # <<<<<<<<<<<<<<
 *         u"Free temporarily referenced objects from this context."
 *         self._temp_refs.clear()
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_release_temp_refs");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":311
 *     cdef _release_temp_refs(self):
 *         u"Free temporarily referenced objects from this context."
 *         self._temp_refs.clear()             # <<<<<<<<<<<<<<
 *         self._temp_documents.clear()
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__TempStore *)__pyx_v_self->_temp_refs->__pyx_vtab)->clear(__pyx_v_self->_temp_refs); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":312
 *         u"Free temporarily referenced objects from this context."
 *         self._temp_refs.clear()
 *         self._temp_documents.clear()             # <<<<<<<<<<<<<<
 * 
 *     cdef _hold(self, obj):
 */
  __pyx_t_1 = PySet_Clear(((PyObject *)__pyx_v_self->_temp_documents)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree._BaseContext._release_temp_refs");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":314
 *         self._temp_documents.clear()
 * 
 *     cdef _hold(self, obj):             # <<<<<<<<<<<<<<
 *         u"""A way to temporarily hold references to nodes in the evaluator.
 * 
 */

static  PyObject *__pyx_f_4lxml_5etree_12_BaseContext__hold(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_v_o;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_hold");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_v_o = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":322
 *         """
 *         cdef _Element element
 *         if isinstance(obj, _Element):             # <<<<<<<<<<<<<<
 *             self._temp_refs.add(obj)
 *             self._temp_documents.add((<_Element>obj)._doc)
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_obj, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":323
 *         cdef _Element element
 *         if isinstance(obj, _Element):
 *             self._temp_refs.add(obj)             # <<<<<<<<<<<<<<
 *             self._temp_documents.add((<_Element>obj)._doc)
 *             return
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__TempStore *)__pyx_v_self->_temp_refs->__pyx_vtab)->add(__pyx_v_self->_temp_refs, __pyx_v_obj); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":324
 *         if isinstance(obj, _Element):
 *             self._temp_refs.add(obj)
 *             self._temp_documents.add((<_Element>obj)._doc)             # <<<<<<<<<<<<<<
 *             return
 *         elif _isString(obj) or not python.PySequence_Check(obj):
 */
    __pyx_t_2 = PySet_Add(((PyObject *)__pyx_v_self->_temp_documents), ((PyObject *)((struct LxmlElement *)__pyx_v_obj)->_doc)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":325
 *             self._temp_refs.add(obj)
 *             self._temp_documents.add((<_Element>obj)._doc)
 *             return             # <<<<<<<<<<<<<<
 *         elif _isString(obj) or not python.PySequence_Check(obj):
 *             return
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":326
 *             self._temp_documents.add((<_Element>obj)._doc)
 *             return
 *         elif _isString(obj) or not python.PySequence_Check(obj):             # <<<<<<<<<<<<<<
 *             return
 *         for o in obj:
 */
  __pyx_t_1 = _isString(__pyx_v_obj);
  if (!__pyx_t_1) {
    __pyx_t_3 = (!PySequence_Check(__pyx_v_obj));
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":327
 *             return
 *         elif _isString(obj) or not python.PySequence_Check(obj):
 *             return             # <<<<<<<<<<<<<<
 *         for o in obj:
 *             if isinstance(o, _Element):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":328
 *         elif _isString(obj) or not python.PySequence_Check(obj):
 *             return
 *         for o in obj:             # <<<<<<<<<<<<<<
 *             if isinstance(o, _Element):
 *                 #print "Holding element:", <int>element._c_node
 */
  if (PyList_CheckExact(__pyx_v_obj) || PyTuple_CheckExact(__pyx_v_obj)) {
    __pyx_t_5 = 0; __pyx_t_6 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_6);
  } else {
    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_obj); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_6))) {
      if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
      __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
      if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
      __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++;
    } else {
      __pyx_t_7 = PyIter_Next(__pyx_t_6);
      if (!__pyx_t_7) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_DECREF(__pyx_v_o);
    __pyx_v_o = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":329
 *             return
 *         for o in obj:
 *             if isinstance(o, _Element):             # <<<<<<<<<<<<<<
 *                 #print "Holding element:", <int>element._c_node
 *                 self._temp_refs.add(o)
 */
    __pyx_t_4 = PyObject_TypeCheck(__pyx_v_o, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":331
 *             if isinstance(o, _Element):
 *                 #print "Holding element:", <int>element._c_node
 *                 self._temp_refs.add(o)             # <<<<<<<<<<<<<<
 *                 #print "Holding document:", <int>element._doc._c_doc
 *                 self._temp_documents.add((<_Element>o)._doc)
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__TempStore *)__pyx_v_self->_temp_refs->__pyx_vtab)->add(__pyx_v_self->_temp_refs, __pyx_v_o); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":333
 *                 self._temp_refs.add(o)
 *                 #print "Holding document:", <int>element._doc._c_doc
 *                 self._temp_documents.add((<_Element>o)._doc)             # <<<<<<<<<<<<<<
 * 
 *     cdef _Document _findDocumentForNode(self, xmlNode* c_node):
 */
      __pyx_t_2 = PySet_Add(((PyObject *)__pyx_v_self->_temp_documents), ((PyObject *)((struct LxmlElement *)__pyx_v_o)->_doc)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._BaseContext._hold");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_o);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":335
 *                 self._temp_documents.add((<_Element>o)._doc)
 * 
 *     cdef _Document _findDocumentForNode(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *         u"""If an XPath expression returns an element from a different
 *         document than the current context document, we call this to
 */

static  struct LxmlDocument *__pyx_f_4lxml_5etree_12_BaseContext__findDocumentForNode(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_self, xmlNode *__pyx_v_c_node) {
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlDocument *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_findDocumentForNode");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":342
 *         """
 *         cdef _Document doc
 *         for doc in self._temp_documents:             # <<<<<<<<<<<<<<
 *             if doc._c_doc is c_node.doc:
 *                 return doc
 */
  __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self->_temp_documents)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  for (;;) {
    {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":343
 *         cdef _Document doc
 *         for doc in self._temp_documents:
 *             if doc._c_doc is c_node.doc:             # <<<<<<<<<<<<<<
 *                 return doc
 *         return None
 */
    __pyx_t_4 = (__pyx_v_doc->_c_doc == __pyx_v_c_node->doc);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":344
 *         for doc in self._temp_documents:
 *             if doc._c_doc is c_node.doc:
 *                 return doc             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __Pyx_INCREF(((PyObject *)__pyx_v_doc));
      __pyx_r = __pyx_v_doc;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":345
 *             if doc._c_doc is c_node.doc:
 *                 return doc
 *         return None             # <<<<<<<<<<<<<<
 * 
 * def Extension(module, function_mapping=None, *, ns=None):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(Py_None);
  __pyx_r = ((struct LxmlDocument *)Py_None);
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._BaseContext._findDocumentForNode");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":347
 *         return None
 * 
 * def Extension(module, function_mapping=None, *, ns=None):             # <<<<<<<<<<<<<<
 *     u"""Extension(module, function_mapping=None, ns=None)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_Extension(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_Extension[] = "Extension(module, function_mapping=None, ns=None)\n\n    Build a dictionary of extension functions from the functions\n    defined in a module or the methods of an object.\n\n    As second argument, you can pass an additional mapping of\n    attribute names to XPath function names, or a list of function\n    names that should be taken.\n\n    The ``ns`` keyword argument accepts a namespace URI for the XPath\n    functions.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_Extension(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_module = 0;
  PyObject *__pyx_v_function_mapping = 0;
  PyObject *__pyx_v_ns = 0;
  PyObject *__pyx_v_functions = 0;
  PyObject *__pyx_v_function_name;
  PyObject *__pyx_v_xpath_name;
  PyObject *__pyx_v_name;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__module,&__pyx_n_s__function_mapping,&__pyx_n_s__ns,0};
  __Pyx_RefNannySetupContext("Extension");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__module);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 0) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__function_mapping);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ns);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "Extension") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_module = values[0];
    __pyx_v_function_mapping = values[1];
    __pyx_v_ns = values[2];
  } else {
    __pyx_v_function_mapping = ((PyObject *)Py_None);
    __pyx_v_ns = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_function_mapping = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_module = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Extension", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Extension");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_module);
  __Pyx_INCREF(__pyx_v_function_mapping);
  __Pyx_INCREF(__pyx_v_ns);
  __pyx_v_function_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_xpath_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":360
 *     functions.
 *     """
 *     cdef dict functions = {}             # <<<<<<<<<<<<<<
 *     if python.PyDict_Check(function_mapping):
 *         for function_name, xpath_name in function_mapping.items():
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_functions = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":361
 *     """
 *     cdef dict functions = {}
 *     if python.PyDict_Check(function_mapping):             # <<<<<<<<<<<<<<
 *         for function_name, xpath_name in function_mapping.items():
 *             functions[(ns, xpath_name)] = getattr(module, function_name)
 */
  __pyx_t_2 = PyDict_Check(__pyx_v_function_mapping);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":362
 *     cdef dict functions = {}
 *     if python.PyDict_Check(function_mapping):
 *         for function_name, xpath_name in function_mapping.items():             # <<<<<<<<<<<<<<
 *             functions[(ns, xpath_name)] = getattr(module, function_name)
 *     else:
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_function_mapping, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = 0; __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
      } else {
        __pyx_t_4 = PyIter_Next(__pyx_t_1);
        if (!__pyx_t_4) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if (PyTuple_CheckExact(__pyx_t_4) && likely(PyTuple_GET_SIZE(__pyx_t_4) == 2)) {
        PyObject* tuple = __pyx_t_4;
        __pyx_t_5 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_v_function_name);
        __pyx_v_function_name = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_xpath_name);
        __pyx_v_xpath_name = __pyx_t_6;
        __pyx_t_6 = 0;
      } else {
        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_7, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_UnpackItem(__pyx_t_7, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_EndUnpack(__pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_function_name);
        __pyx_v_function_name = __pyx_t_5;
        __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_v_xpath_name);
        __pyx_v_xpath_name = __pyx_t_6;
        __pyx_t_6 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":363
 *     if python.PyDict_Check(function_mapping):
 *         for function_name, xpath_name in function_mapping.items():
 *             functions[(ns, xpath_name)] = getattr(module, function_name)             # <<<<<<<<<<<<<<
 *     else:
 *         if function_mapping is None:
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_module, __pyx_v_function_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_ns);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_ns);
      __Pyx_GIVEREF(__pyx_v_ns);
      __Pyx_INCREF(__pyx_v_xpath_name);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_xpath_name);
      __Pyx_GIVEREF(__pyx_v_xpath_name);
      if (PyDict_SetItem(((PyObject *)__pyx_v_functions), __pyx_t_6, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":365
 *             functions[(ns, xpath_name)] = getattr(module, function_name)
 *     else:
 *         if function_mapping is None:             # <<<<<<<<<<<<<<
 *             function_mapping = [ name for name in dir(module)
 *                                  if not name.startswith(u'_') ]
 */
    __pyx_t_2 = (__pyx_v_function_mapping == Py_None);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":366
 *     else:
 *         if function_mapping is None:
 *             function_mapping = [ name for name in dir(module)             # <<<<<<<<<<<<<<
 *                                  if not name.startswith(u'_') ]
 *         for function_name in function_mapping:
 */
      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_4 = PyObject_Dir(__pyx_v_module); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
        __pyx_t_3 = 0; __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6);
      } else {
        __pyx_t_3 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      for (;;) {
        if (likely(PyList_CheckExact(__pyx_t_6))) {
          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_6)) break;
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
        } else if (likely(PyTuple_CheckExact(__pyx_t_6))) {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++;
        } else {
          __pyx_t_4 = PyIter_Next(__pyx_t_6);
          if (!__pyx_t_4) {
            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF(__pyx_v_name);
        __pyx_v_name = __pyx_t_4;
        __pyx_t_4 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":367
 *         if function_mapping is None:
 *             function_mapping = [ name for name in dir(module)
 *                                  if not name.startswith(u'_') ]             # <<<<<<<<<<<<<<
 *         for function_name in function_mapping:
 *             functions[(ns, function_name)] = getattr(module, function_name)
 */
        __pyx_t_4 = PyObject_GetAttr(__pyx_v_name, __pyx_n_s__startswith); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(((PyObject *)__pyx_n_u___));
        PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_u___));
        __Pyx_GIVEREF(((PyObject *)__pyx_n_u___));
        __pyx_t_7 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = (!__pyx_t_2);
        if (__pyx_t_8) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":366
 *     else:
 *         if function_mapping is None:
 *             function_mapping = [ name for name in dir(module)             # <<<<<<<<<<<<<<
 *                                  if not name.startswith(u'_') ]
 *         for function_name in function_mapping:
 */
          __pyx_t_9 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_v_name); if (unlikely(__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          goto __pyx_L12;
        }
        __pyx_L12:;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_INCREF(((PyObject *)__pyx_t_1));
      __Pyx_DECREF(__pyx_v_function_mapping);
      __pyx_v_function_mapping = ((PyObject *)__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":368
 *             function_mapping = [ name for name in dir(module)
 *                                  if not name.startswith(u'_') ]
 *         for function_name in function_mapping:             # <<<<<<<<<<<<<<
 *             functions[(ns, function_name)] = getattr(module, function_name)
 *     return functions
 */
    if (PyList_CheckExact(__pyx_v_function_mapping) || PyTuple_CheckExact(__pyx_v_function_mapping)) {
      __pyx_t_3 = 0; __pyx_t_1 = __pyx_v_function_mapping; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_function_mapping); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_6); __pyx_t_3++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_6); __pyx_t_3++;
      } else {
        __pyx_t_6 = PyIter_Next(__pyx_t_1);
        if (!__pyx_t_6) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_v_function_name);
      __pyx_v_function_name = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":369
 *                                  if not name.startswith(u'_') ]
 *         for function_name in function_mapping:
 *             functions[(ns, function_name)] = getattr(module, function_name)             # <<<<<<<<<<<<<<
 *     return functions
 * 
 */
      __pyx_t_6 = PyObject_GetAttr(__pyx_v_module, __pyx_v_function_name); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_ns);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_ns);
      __Pyx_GIVEREF(__pyx_v_ns);
      __Pyx_INCREF(__pyx_v_function_name);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_function_name);
      __Pyx_GIVEREF(__pyx_v_function_name);
      if (PyDict_SetItem(((PyObject *)__pyx_v_functions), __pyx_t_7, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":370
 *         for function_name in function_mapping:
 *             functions[(ns, function_name)] = getattr(module, function_name)
 *     return functions             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_functions));
  __pyx_r = ((PyObject *)__pyx_v_functions);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.Extension");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_functions);
  __Pyx_DECREF(__pyx_v_function_name);
  __Pyx_DECREF(__pyx_v_xpath_name);
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_module);
  __Pyx_DECREF(__pyx_v_function_mapping);
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":377
 * cdef class _ExsltRegExp:
 *     cdef dict _compile_map
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._compile_map = {}
 * 
 */

static int __pyx_pf_4lxml_5etree_12_ExsltRegExp___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_12_ExsltRegExp___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":378
 *     cdef dict _compile_map
 *     def __init__(self):
 *         self._compile_map = {}             # <<<<<<<<<<<<<<
 * 
 *     cdef _make_string(self, value):
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->_compile_map);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->_compile_map));
  ((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->_compile_map = __pyx_t_1;
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":380
 *         self._compile_map = {}
 * 
 *     cdef _make_string(self, value):             # <<<<<<<<<<<<<<
 *         cdef char* c_text
 *         if _isString(value):
 */

static  PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self, PyObject *__pyx_v_value) {
  char *__pyx_v_c_text;
  PyObject *__pyx_v_firstnode;
  PyObject *__pyx_v_s;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_make_string");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_firstnode = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_s = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":382
 *     cdef _make_string(self, value):
 *         cdef char* c_text
 *         if _isString(value):             # <<<<<<<<<<<<<<
 *             return value
 *         elif python.PyList_Check(value):
 */
  __pyx_t_1 = _isString(__pyx_v_value);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":383
 *         cdef char* c_text
 *         if _isString(value):
 *             return value             # <<<<<<<<<<<<<<
 *         elif python.PyList_Check(value):
 *             # node set: take recursive text concatenation of first element
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_value);
    __pyx_r = __pyx_v_value;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":384
 *         if _isString(value):
 *             return value
 *         elif python.PyList_Check(value):             # <<<<<<<<<<<<<<
 *             # node set: take recursive text concatenation of first element
 *             if python.PyList_GET_SIZE(value) == 0:
 */
  __pyx_t_1 = PyList_Check(__pyx_v_value);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":386
 *         elif python.PyList_Check(value):
 *             # node set: take recursive text concatenation of first element
 *             if python.PyList_GET_SIZE(value) == 0:             # <<<<<<<<<<<<<<
 *                 return u''
 *             firstnode = value[0]
 */
    __pyx_t_1 = (PyList_GET_SIZE(__pyx_v_value) == 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":387
 *             # node set: take recursive text concatenation of first element
 *             if python.PyList_GET_SIZE(value) == 0:
 *                 return u''             # <<<<<<<<<<<<<<
 *             firstnode = value[0]
 *             if _isString(firstnode):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
      __pyx_r = ((PyObject *)__pyx_kp_u_14);
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":388
 *             if python.PyList_GET_SIZE(value) == 0:
 *                 return u''
 *             firstnode = value[0]             # <<<<<<<<<<<<<<
 *             if _isString(firstnode):
 *                 return firstnode
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_value, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_firstnode);
    __pyx_v_firstnode = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":389
 *                 return u''
 *             firstnode = value[0]
 *             if _isString(firstnode):             # <<<<<<<<<<<<<<
 *                 return firstnode
 *             elif isinstance(firstnode, _Element):
 */
    __pyx_t_1 = _isString(__pyx_v_firstnode);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":390
 *             firstnode = value[0]
 *             if _isString(firstnode):
 *                 return firstnode             # <<<<<<<<<<<<<<
 *             elif isinstance(firstnode, _Element):
 *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_firstnode);
      __pyx_r = __pyx_v_firstnode;
      goto __pyx_L0;
      goto __pyx_L5;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":391
 *             if _isString(firstnode):
 *                 return firstnode
 *             elif isinstance(firstnode, _Element):             # <<<<<<<<<<<<<<
 *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
 *                 if c_text is NULL:
 */
    __pyx_t_1 = PyObject_TypeCheck(__pyx_v_firstnode, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":392
 *                 return firstnode
 *             elif isinstance(firstnode, _Element):
 *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)             # <<<<<<<<<<<<<<
 *                 if c_text is NULL:
 *                     python.PyErr_NoMemory()
 */
      __pyx_v_c_text = xmlNodeGetContent(((struct LxmlElement *)__pyx_v_firstnode)->_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":393
 *             elif isinstance(firstnode, _Element):
 *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
 *                 if c_text is NULL:             # <<<<<<<<<<<<<<
 *                     python.PyErr_NoMemory()
 *                 try:
 */
      __pyx_t_1 = (__pyx_v_c_text == NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":394
 *                 c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node)
 *                 if c_text is NULL:
 *                     python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *                 try:
 *                     s = funicode(c_text)
 */
        __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":395
 *                 if c_text is NULL:
 *                     python.PyErr_NoMemory()
 *                 try:             # <<<<<<<<<<<<<<
 *                     s = funicode(c_text)
 *                 finally:
 */
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":396
 *                     python.PyErr_NoMemory()
 *                 try:
 *                     s = funicode(c_text)             # <<<<<<<<<<<<<<
 *                 finally:
 *                     tree.xmlFree(c_text)
 */
        __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L8;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_v_s);
        __pyx_v_s = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      /*finally:*/ {
        int __pyx_why;
        PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
        int __pyx_exc_lineno;
        __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
        __pyx_why = 0; goto __pyx_L9;
        __pyx_L8: {
          __pyx_why = 4;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
          __pyx_exc_lineno = __pyx_lineno;
          goto __pyx_L9;
        }
        __pyx_L9:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":398
 *                     s = funicode(c_text)
 *                 finally:
 *                     tree.xmlFree(c_text)             # <<<<<<<<<<<<<<
 *                 return s
 *             else:
 */
        xmlFree(__pyx_v_c_text);
        switch (__pyx_why) {
          case 4: {
            __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
            __pyx_lineno = __pyx_exc_lineno;
            __pyx_exc_type = 0;
            __pyx_exc_value = 0;
            __pyx_exc_tb = 0;
            goto __pyx_L1_error;
          }
        }
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":399
 *                 finally:
 *                     tree.xmlFree(c_text)
 *                 return s             # <<<<<<<<<<<<<<
 *             else:
 *                 return unicode(firstnode)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_s);
      __pyx_r = __pyx_v_s;
      goto __pyx_L0;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":401
 *                 return s
 *             else:
 *                 return unicode(firstnode)             # <<<<<<<<<<<<<<
 *         else:
 *             return unicode(value)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_firstnode);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_firstnode);
      __Pyx_GIVEREF(__pyx_v_firstnode);
      __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":403
 *                 return unicode(firstnode)
 *         else:
 *             return unicode(value)             # <<<<<<<<<<<<<<
 * 
 *     cdef _compile(self, rexp, ignore_case):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_value);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp._make_string");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_firstnode);
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":405
 *             return unicode(value)
 * 
 *     cdef _compile(self, rexp, ignore_case):             # <<<<<<<<<<<<<<
 *         cdef python.PyObject* c_result
 *         rexp = self._make_string(rexp)
 */

static  PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__compile(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self, PyObject *__pyx_v_rexp, PyObject *__pyx_v_ignore_case) {
  PyObject *__pyx_v_c_result;
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_py_flags;
  PyObject *__pyx_v_rexp_compiled;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_compile");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_ignore_case);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_py_flags = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_rexp_compiled = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":407
 *     cdef _compile(self, rexp, ignore_case):
 *         cdef python.PyObject* c_result
 *         rexp = self._make_string(rexp)             # <<<<<<<<<<<<<<
 *         key = (rexp, ignore_case)
 *         c_result = python.PyDict_GetItem(self._compile_map, key)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)__pyx_v_self->__pyx_vtab)->_make_string(__pyx_v_self, __pyx_v_rexp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_rexp);
  __pyx_v_rexp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":408
 *         cdef python.PyObject* c_result
 *         rexp = self._make_string(rexp)
 *         key = (rexp, ignore_case)             # <<<<<<<<<<<<<<
 *         c_result = python.PyDict_GetItem(self._compile_map, key)
 *         if c_result is not NULL:
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_rexp);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rexp);
  __Pyx_GIVEREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_ignore_case);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_ignore_case);
  __Pyx_GIVEREF(__pyx_v_ignore_case);
  __Pyx_DECREF(__pyx_v_key);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":409
 *         rexp = self._make_string(rexp)
 *         key = (rexp, ignore_case)
 *         c_result = python.PyDict_GetItem(self._compile_map, key)             # <<<<<<<<<<<<<<
 *         if c_result is not NULL:
 *             return <object>c_result
 */
  __pyx_v_c_result = PyDict_GetItem(((PyObject *)__pyx_v_self->_compile_map), __pyx_v_key);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":410
 *         key = (rexp, ignore_case)
 *         c_result = python.PyDict_GetItem(self._compile_map, key)
 *         if c_result is not NULL:             # <<<<<<<<<<<<<<
 *             return <object>c_result
 *         py_flags = re.UNICODE
 */
  __pyx_t_2 = (__pyx_v_c_result != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":411
 *         c_result = python.PyDict_GetItem(self._compile_map, key)
 *         if c_result is not NULL:
 *             return <object>c_result             # <<<<<<<<<<<<<<
 *         py_flags = re.UNICODE
 *         if ignore_case:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_c_result));
    __pyx_r = ((PyObject *)__pyx_v_c_result);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":412
 *         if c_result is not NULL:
 *             return <object>c_result
 *         py_flags = re.UNICODE             # <<<<<<<<<<<<<<
 *         if ignore_case:
 *             py_flags = py_flags | re.IGNORECASE
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__UNICODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_py_flags);
  __pyx_v_py_flags = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":413
 *             return <object>c_result
 *         py_flags = re.UNICODE
 *         if ignore_case:             # <<<<<<<<<<<<<<
 *             py_flags = py_flags | re.IGNORECASE
 *         rexp_compiled = re.compile(rexp, py_flags)
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_case); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":414
 *         py_flags = re.UNICODE
 *         if ignore_case:
 *             py_flags = py_flags | re.IGNORECASE             # <<<<<<<<<<<<<<
 *         rexp_compiled = re.compile(rexp, py_flags)
 *         self._compile_map[key] = rexp_compiled
 */
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__IGNORECASE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyNumber_Or(__pyx_v_py_flags, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_py_flags);
    __pyx_v_py_flags = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":415
 *         if ignore_case:
 *             py_flags = py_flags | re.IGNORECASE
 *         rexp_compiled = re.compile(rexp, py_flags)             # <<<<<<<<<<<<<<
 *         self._compile_map[key] = rexp_compiled
 *         return rexp_compiled
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_rexp);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rexp);
  __Pyx_GIVEREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_py_flags);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_py_flags);
  __Pyx_GIVEREF(__pyx_v_py_flags);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_rexp_compiled);
  __pyx_v_rexp_compiled = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":416
 *             py_flags = py_flags | re.IGNORECASE
 *         rexp_compiled = re.compile(rexp, py_flags)
 *         self._compile_map[key] = rexp_compiled             # <<<<<<<<<<<<<<
 *         return rexp_compiled
 * 
 */
  if (PyDict_SetItem(((PyObject *)__pyx_v_self->_compile_map), __pyx_v_key, __pyx_v_rexp_compiled) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":417
 *         rexp_compiled = re.compile(rexp, py_flags)
 *         self._compile_map[key] = rexp_compiled
 *         return rexp_compiled             # <<<<<<<<<<<<<<
 * 
 *     def test(self, ctxt, s, rexp, flags=u''):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rexp_compiled);
  __pyx_r = __pyx_v_rexp_compiled;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp._compile");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_py_flags);
  __Pyx_DECREF(__pyx_v_rexp_compiled);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_rexp);
  __Pyx_DECREF(__pyx_v_ignore_case);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":419
 *         return rexp_compiled
 * 
 *     def test(self, ctxt, s, rexp, flags=u''):             # <<<<<<<<<<<<<<
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_test(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ctxt = 0;
  PyObject *__pyx_v_s = 0;
  PyObject *__pyx_v_rexp = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_rexpc;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ctxt,&__pyx_n_s__s,&__pyx_n_s__rexp,&__pyx_n_s__flags,0};
  __Pyx_RefNannySetupContext("test");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[3] = ((PyObject *)__pyx_kp_u_14);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ctxt);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__s);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("test", 0, 3, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("test", 0, 3, 4, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "test") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_ctxt = values[0];
    __pyx_v_s = values[1];
    __pyx_v_rexp = values[2];
    __pyx_v_flags = values[3];
  } else {
    __pyx_v_flags = ((PyObject *)__pyx_kp_u_14);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_flags = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3:
      __pyx_v_rexp = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_s = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_ctxt = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("test", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.test");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ctxt);
  __Pyx_INCREF(__pyx_v_s);
  __Pyx_INCREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_flags);
  __pyx_v_rexpc = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":420
 * 
 *     def test(self, ctxt, s, rexp, flags=u''):
 *         flags = self._make_string(flags)             # <<<<<<<<<<<<<<
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_flags);
  __pyx_v_flags = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":421
 *     def test(self, ctxt, s, rexp, flags=u''):
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)             # <<<<<<<<<<<<<<
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if rexpc.search(s) is None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_s);
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":422
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)             # <<<<<<<<<<<<<<
 *         if rexpc.search(s) is None:
 *             return False
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_flags, ((PyObject *)__pyx_n_u__i)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_compile(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_rexp, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_rexpc);
  __pyx_v_rexpc = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":423
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if rexpc.search(s) is None:             # <<<<<<<<<<<<<<
 *             return False
 *         else:
 */
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_rexpc, __pyx_n_s__search); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_s);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_s);
  __Pyx_GIVEREF(__pyx_v_s);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (__pyx_t_4 == Py_None);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":424
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if rexpc.search(s) is None:
 *             return False             # <<<<<<<<<<<<<<
 *         else:
 *             return True
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":426
 *             return False
 *         else:
 *             return True             # <<<<<<<<<<<<<<
 * 
 *     def match(self, ctxt, s, rexp, flags=u''):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.test");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_rexpc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ctxt);
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_DECREF(__pyx_v_rexp);
  __Pyx_DECREF(__pyx_v_flags);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":428
 *             return True
 * 
 *     def match(self, ctxt, s, rexp, flags=u''):             # <<<<<<<<<<<<<<
 *         cdef list result_list
 *         flags = self._make_string(flags)
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_match(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_match(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ctxt = 0;
  PyObject *__pyx_v_s = 0;
  PyObject *__pyx_v_rexp = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_result_list;
  PyObject *__pyx_v_rexpc;
  PyObject *__pyx_v_results;
  PyObject *__pyx_v_result;
  PyObject *__pyx_v_root;
  PyObject *__pyx_v_join_groups;
  PyObject *__pyx_v_s_match;
  PyObject *__pyx_v_elem;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ctxt,&__pyx_n_s__s,&__pyx_n_s__rexp,&__pyx_n_s__flags,0};
  __Pyx_RefNannySetupContext("match");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[3] = ((PyObject *)__pyx_kp_u_14);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ctxt);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__s);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("match", 0, 3, 4, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("match", 0, 3, 4, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
        if (unlikely(value)) { values[3] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "match") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_ctxt = values[0];
    __pyx_v_s = values[1];
    __pyx_v_rexp = values[2];
    __pyx_v_flags = values[3];
  } else {
    __pyx_v_flags = ((PyObject *)__pyx_kp_u_14);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4:
      __pyx_v_flags = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3:
      __pyx_v_rexp = PyTuple_GET_ITEM(__pyx_args, 2);
      __pyx_v_s = PyTuple_GET_ITEM(__pyx_args, 1);
      __pyx_v_ctxt = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("match", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.match");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ctxt);
  __Pyx_INCREF(__pyx_v_s);
  __Pyx_INCREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_flags);
  __pyx_v_result_list = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_rexpc = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_results = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_join_groups = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_s_match = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_elem = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":430
 *     def match(self, ctxt, s, rexp, flags=u''):
 *         cdef list result_list
 *         flags = self._make_string(flags)             # <<<<<<<<<<<<<<
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_flags);
  __pyx_v_flags = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":431
 *         cdef list result_list
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)             # <<<<<<<<<<<<<<
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_s);
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":432
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)             # <<<<<<<<<<<<<<
 *         if u'g' in flags:
 *             results = rexpc.findall(s)
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_flags, ((PyObject *)__pyx_n_u__i)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_compile(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_rexp, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_rexpc);
  __pyx_v_rexpc = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":433
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:             # <<<<<<<<<<<<<<
 *             results = rexpc.findall(s)
 *             if not results:
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_flags, ((PyObject *)__pyx_n_u__g)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":434
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:
 *             results = rexpc.findall(s)             # <<<<<<<<<<<<<<
 *             if not results:
 *                 return ()
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_rexpc, __pyx_n_s__findall); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_s);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_s);
    __Pyx_GIVEREF(__pyx_v_s);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_results);
    __pyx_v_results = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":435
 *         if u'g' in flags:
 *             results = rexpc.findall(s)
 *             if not results:             # <<<<<<<<<<<<<<
 *                 return ()
 *         else:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_results); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_5 = (!__pyx_t_2);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":436
 *             results = rexpc.findall(s)
 *             if not results:
 *                 return ()             # <<<<<<<<<<<<<<
 *         else:
 *             result = rexpc.search(s)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
      __pyx_r = ((PyObject *)__pyx_empty_tuple);
      goto __pyx_L0;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":438
 *                 return ()
 *         else:
 *             result = rexpc.search(s)             # <<<<<<<<<<<<<<
 *             if not result:
 *                 return ()
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_rexpc, __pyx_n_s__search); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_s);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_s);
    __Pyx_GIVEREF(__pyx_v_s);
    __pyx_t_3 = PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":439
 *         else:
 *             result = rexpc.search(s)
 *             if not result:             # <<<<<<<<<<<<<<
 *                 return ()
 *             results = [ result.group() ]
 */
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_result); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = (!__pyx_t_5);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":440
 *             result = rexpc.search(s)
 *             if not result:
 *                 return ()             # <<<<<<<<<<<<<<
 *             results = [ result.group() ]
 *             results.extend( result.groups(u'') )
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_empty_tuple));
      __pyx_r = ((PyObject *)__pyx_empty_tuple);
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":441
 *             if not result:
 *                 return ()
 *             results = [ result.group() ]             # <<<<<<<<<<<<<<
 *             results.extend( result.groups(u'') )
 *         result_list = []
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_result, __pyx_n_s__group); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_results);
    __pyx_v_results = ((PyObject *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":442
 *                 return ()
 *             results = [ result.group() ]
 *             results.extend( result.groups(u'') )             # <<<<<<<<<<<<<<
 *         result_list = []
 *         root = Element(u'matches')
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_results, __pyx_n_s__extend); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_GetAttr(__pyx_v_result, __pyx_n_s__groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_14));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_14));
    __pyx_t_6 = PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":443
 *             results = [ result.group() ]
 *             results.extend( result.groups(u'') )
 *         result_list = []             # <<<<<<<<<<<<<<
 *         root = Element(u'matches')
 *         join_groups = u''.join
 */
  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  __Pyx_DECREF(((PyObject *)__pyx_v_result_list));
  __pyx_v_result_list = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":444
 *             results.extend( result.groups(u'') )
 *         result_list = []
 *         root = Element(u'matches')             # <<<<<<<<<<<<<<
 *         join_groups = u''.join
 *         for s_match in results:
 */
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__Element); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__matches));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_u__matches));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__matches));
  __pyx_t_3 = PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":445
 *         result_list = []
 *         root = Element(u'matches')
 *         join_groups = u''.join             # <<<<<<<<<<<<<<
 *         for s_match in results:
 *             if python.PyTuple_CheckExact(s_match):
 */
  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_14), __pyx_n_s__join); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_join_groups);
  __pyx_v_join_groups = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":446
 *         root = Element(u'matches')
 *         join_groups = u''.join
 *         for s_match in results:             # <<<<<<<<<<<<<<
 *             if python.PyTuple_CheckExact(s_match):
 *                 s_match = join_groups(s_match)
 */
  if (PyList_CheckExact(__pyx_v_results) || PyTuple_CheckExact(__pyx_v_results)) {
    __pyx_t_7 = 0; __pyx_t_3 = __pyx_v_results; __Pyx_INCREF(__pyx_t_3);
  } else {
    __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_results); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_3))) {
      if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
      if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++;
    } else {
      __pyx_t_4 = PyIter_Next(__pyx_t_3);
      if (!__pyx_t_4) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_v_s_match);
    __pyx_v_s_match = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":447
 *         join_groups = u''.join
 *         for s_match in results:
 *             if python.PyTuple_CheckExact(s_match):             # <<<<<<<<<<<<<<
 *                 s_match = join_groups(s_match)
 *             elem = SubElement(root, u'match')
 */
    __pyx_t_2 = PyTuple_CheckExact(__pyx_v_s_match);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":448
 *         for s_match in results:
 *             if python.PyTuple_CheckExact(s_match):
 *                 s_match = join_groups(s_match)             # <<<<<<<<<<<<<<
 *             elem = SubElement(root, u'match')
 *             elem.text = s_match
 */
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_s_match);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_s_match);
      __Pyx_GIVEREF(__pyx_v_s_match);
      __pyx_t_6 = PyObject_Call(__pyx_v_join_groups, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_s_match);
      __pyx_v_s_match = __pyx_t_6;
      __pyx_t_6 = 0;
      goto __pyx_L11;
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":449
 *             if python.PyTuple_CheckExact(s_match):
 *                 s_match = join_groups(s_match)
 *             elem = SubElement(root, u'match')             # <<<<<<<<<<<<<<
 *             elem.text = s_match
 *             result_list.append(elem)
 */
    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__SubElement); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_root);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_root);
    __Pyx_GIVEREF(__pyx_v_root);
    __Pyx_INCREF(((PyObject *)__pyx_n_u__match));
    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_u__match));
    __Pyx_GIVEREF(((PyObject *)__pyx_n_u__match));
    __pyx_t_1 = PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_elem);
    __pyx_v_elem = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":450
 *                 s_match = join_groups(s_match)
 *             elem = SubElement(root, u'match')
 *             elem.text = s_match             # <<<<<<<<<<<<<<
 *             result_list.append(elem)
 *         return result_list
 */
    if (PyObject_SetAttr(__pyx_v_elem, __pyx_n_s__text, __pyx_v_s_match) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":451
 *             elem = SubElement(root, u'match')
 *             elem.text = s_match
 *             result_list.append(elem)             # <<<<<<<<<<<<<<
 *         return result_list
 * 
 */
    if (unlikely(__pyx_v_result_list == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_8 = PyList_Append(((PyObject *)__pyx_v_result_list), __pyx_v_elem); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":452
 *             elem.text = s_match
 *             result_list.append(elem)
 *         return result_list             # <<<<<<<<<<<<<<
 * 
 *     def replace(self, ctxt, s, rexp, flags, replacement):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result_list));
  __pyx_r = ((PyObject *)__pyx_v_result_list);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.match");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result_list);
  __Pyx_DECREF(__pyx_v_rexpc);
  __Pyx_DECREF(__pyx_v_results);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF(__pyx_v_join_groups);
  __Pyx_DECREF(__pyx_v_s_match);
  __Pyx_DECREF(__pyx_v_elem);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ctxt);
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_DECREF(__pyx_v_rexp);
  __Pyx_DECREF(__pyx_v_flags);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":454
 *         return result_list
 * 
 *     def replace(self, ctxt, s, rexp, flags, replacement):             # <<<<<<<<<<<<<<
 *         replacement = self._make_string(replacement)
 *         flags = self._make_string(flags)
 */

static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_12_ExsltRegExp_replace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ctxt = 0;
  PyObject *__pyx_v_s = 0;
  PyObject *__pyx_v_rexp = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_replacement = 0;
  PyObject *__pyx_v_rexpc;
  PyObject *__pyx_v_count;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ctxt,&__pyx_n_s__s,&__pyx_n_s__rexp,&__pyx_n_s__flags,&__pyx_n_s__replacement,0};
  __Pyx_RefNannySetupContext("replace");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ctxt);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__s);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("replace", 1, 5, 5, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("replace", 1, 5, 5, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("replace", 1, 5, 5, 3); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  4:
      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__replacement);
      if (likely(values[4])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("replace", 1, 5, 5, 4); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "replace") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_ctxt = values[0];
    __pyx_v_s = values[1];
    __pyx_v_rexp = values[2];
    __pyx_v_flags = values[3];
    __pyx_v_replacement = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_ctxt = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_s = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_rexp = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_flags = PyTuple_GET_ITEM(__pyx_args, 3);
    __pyx_v_replacement = PyTuple_GET_ITEM(__pyx_args, 4);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("replace", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.replace");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_ctxt);
  __Pyx_INCREF(__pyx_v_s);
  __Pyx_INCREF(__pyx_v_rexp);
  __Pyx_INCREF(__pyx_v_flags);
  __Pyx_INCREF(__pyx_v_replacement);
  __pyx_v_rexpc = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_count = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":455
 * 
 *     def replace(self, ctxt, s, rexp, flags, replacement):
 *         replacement = self._make_string(replacement)             # <<<<<<<<<<<<<<
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_replacement); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_replacement);
  __pyx_v_replacement = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":456
 *     def replace(self, ctxt, s, rexp, flags, replacement):
 *         replacement = self._make_string(replacement)
 *         flags = self._make_string(flags)             # <<<<<<<<<<<<<<
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_flags); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_flags);
  __pyx_v_flags = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":457
 *         replacement = self._make_string(replacement)
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)             # <<<<<<<<<<<<<<
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_make_string(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_s);
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":458
 *         flags = self._make_string(flags)
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)             # <<<<<<<<<<<<<<
 *         if u'g' in flags:
 *             count = 0
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_flags, ((PyObject *)__pyx_n_u__i)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp *)((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self)->__pyx_vtab)->_compile(((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)__pyx_v_self), __pyx_v_rexp, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_rexpc);
  __pyx_v_rexpc = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":459
 *         s = self._make_string(s)
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:             # <<<<<<<<<<<<<<
 *             count = 0
 *         else:
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_flags, ((PyObject *)__pyx_n_u__g)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":460
 *         rexpc = self._compile(rexp, u'i' in flags)
 *         if u'g' in flags:
 *             count = 0             # <<<<<<<<<<<<<<
 *         else:
 *             count = 1
 */
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF(__pyx_v_count);
    __pyx_v_count = __pyx_int_0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":462
 *             count = 0
 *         else:
 *             count = 1             # <<<<<<<<<<<<<<
 *         return rexpc.sub(replacement, s, count)
 * 
 */
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_DECREF(__pyx_v_count);
    __pyx_v_count = __pyx_int_1;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":463
 *         else:
 *             count = 1
 *         return rexpc.sub(replacement, s, count)             # <<<<<<<<<<<<<<
 * 
 *     cdef _register_in_context(self, _BaseContext context):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyObject_GetAttr(__pyx_v_rexpc, __pyx_n_s__sub); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_replacement);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_replacement);
  __Pyx_GIVEREF(__pyx_v_replacement);
  __Pyx_INCREF(__pyx_v_s);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_s);
  __Pyx_GIVEREF(__pyx_v_s);
  __Pyx_INCREF(__pyx_v_count);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_count);
  __Pyx_GIVEREF(__pyx_v_count);
  __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp.replace");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_rexpc);
  __Pyx_DECREF(__pyx_v_count);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_ctxt);
  __Pyx_DECREF(__pyx_v_s);
  __Pyx_DECREF(__pyx_v_rexp);
  __Pyx_DECREF(__pyx_v_flags);
  __Pyx_DECREF(__pyx_v_replacement);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":465
 *         return rexpc.sub(replacement, s, count)
 * 
 *     cdef _register_in_context(self, _BaseContext context):             # <<<<<<<<<<<<<<
 *         ns = b"http://exslt.org/regular-expressions"
 *         context._addLocalExtensionFunction(ns, b"test",    self.test)
 */

static  PyObject *__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context(struct __pyx_obj_4lxml_5etree__ExsltRegExp *__pyx_v_self, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
  PyObject *__pyx_v_ns;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_register_in_context");
  __pyx_v_ns = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":466
 * 
 *     cdef _register_in_context(self, _BaseContext context):
 *         ns = b"http://exslt.org/regular-expressions"             # <<<<<<<<<<<<<<
 *         context._addLocalExtensionFunction(ns, b"test",    self.test)
 *         context._addLocalExtensionFunction(ns, b"match",   self.match)
 */
  __Pyx_INCREF(((PyObject *)__pyx_kp_b_256));
  __Pyx_DECREF(__pyx_v_ns);
  __pyx_v_ns = ((PyObject *)__pyx_kp_b_256);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":467
 *     cdef _register_in_context(self, _BaseContext context):
 *         ns = b"http://exslt.org/regular-expressions"
 *         context._addLocalExtensionFunction(ns, b"test",    self.test)             # <<<<<<<<<<<<<<
 *         context._addLocalExtensionFunction(ns, b"match",   self.match)
 *         context._addLocalExtensionFunction(ns, b"replace", self.replace)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__test); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, ((PyObject *)__pyx_n_b__test), __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":468
 *         ns = b"http://exslt.org/regular-expressions"
 *         context._addLocalExtensionFunction(ns, b"test",    self.test)
 *         context._addLocalExtensionFunction(ns, b"match",   self.match)             # <<<<<<<<<<<<<<
 *         context._addLocalExtensionFunction(ns, b"replace", self.replace)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__match); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, ((PyObject *)__pyx_n_b__match), __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":469
 *         context._addLocalExtensionFunction(ns, b"test",    self.test)
 *         context._addLocalExtensionFunction(ns, b"match",   self.match)
 *         context._addLocalExtensionFunction(ns, b"replace", self.replace)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_addLocalExtensionFunction(__pyx_v_context, __pyx_v_ns, ((PyObject *)__pyx_n_b__replace), __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ExsltRegExp._register_in_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":475
 * # helper functions
 * 
 * cdef xpath.xmlXPathObject* _wrapXPathObject(object obj) except NULL:             # <<<<<<<<<<<<<<
 *     cdef xpath.xmlNodeSet* resultSet
 *     cdef _Element node
 */

static  xmlXPathObject *__pyx_f_4lxml_5etree__wrapXPathObject(PyObject *__pyx_v_obj) {
  xmlNodeSet *__pyx_v_resultSet;
  struct LxmlElement *__pyx_v_node;
  PyObject *__pyx_v_element;
  xmlXPathObject *__pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  double __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_wrapXPathObject");
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_v_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":478
 *     cdef xpath.xmlNodeSet* resultSet
 *     cdef _Element node
 *     if python.PyUnicode_Check(obj):             # <<<<<<<<<<<<<<
 *         obj = _utf8(obj)
 *     if python.PyString_Check(obj):
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":479
 *     cdef _Element node
 *     if python.PyUnicode_Check(obj):
 *         obj = _utf8(obj)             # <<<<<<<<<<<<<<
 *     if python.PyString_Check(obj):
 *         return xpath.xmlXPathNewCString(_cstr(obj))
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_obj);
    __pyx_v_obj = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":480
 *     if python.PyUnicode_Check(obj):
 *         obj = _utf8(obj)
 *     if python.PyString_Check(obj):             # <<<<<<<<<<<<<<
 *         return xpath.xmlXPathNewCString(_cstr(obj))
 *     if python.PyBool_Check(obj):
 */
  __pyx_t_1 = PyString_Check(__pyx_v_obj);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":481
 *         obj = _utf8(obj)
 *     if python.PyString_Check(obj):
 *         return xpath.xmlXPathNewCString(_cstr(obj))             # <<<<<<<<<<<<<<
 *     if python.PyBool_Check(obj):
 *         return xpath.xmlXPathNewBoolean(obj)
 */
    __pyx_r = xmlXPathNewCString(PyString_AS_STRING(__pyx_v_obj));
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":482
 *     if python.PyString_Check(obj):
 *         return xpath.xmlXPathNewCString(_cstr(obj))
 *     if python.PyBool_Check(obj):             # <<<<<<<<<<<<<<
 *         return xpath.xmlXPathNewBoolean(obj)
 *     if python.PyNumber_Check(obj):
 */
  __pyx_t_1 = PyBool_Check(__pyx_v_obj);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":483
 *         return xpath.xmlXPathNewCString(_cstr(obj))
 *     if python.PyBool_Check(obj):
 *         return xpath.xmlXPathNewBoolean(obj)             # <<<<<<<<<<<<<<
 *     if python.PyNumber_Check(obj):
 *         return xpath.xmlXPathNewFloat(obj)
 */
    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_v_obj); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = xmlXPathNewBoolean(__pyx_t_3);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":484
 *     if python.PyBool_Check(obj):
 *         return xpath.xmlXPathNewBoolean(obj)
 *     if python.PyNumber_Check(obj):             # <<<<<<<<<<<<<<
 *         return xpath.xmlXPathNewFloat(obj)
 *     if obj is None:
 */
  __pyx_t_1 = PyNumber_Check(__pyx_v_obj);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":485
 *         return xpath.xmlXPathNewBoolean(obj)
 *     if python.PyNumber_Check(obj):
 *         return xpath.xmlXPathNewFloat(obj)             # <<<<<<<<<<<<<<
 *     if obj is None:
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 */
    __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_obj); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_r = xmlXPathNewFloat(__pyx_t_4);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":486
 *     if python.PyNumber_Check(obj):
 *         return xpath.xmlXPathNewFloat(obj)
 *     if obj is None:             # <<<<<<<<<<<<<<
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *     elif isinstance(obj, _Element):
 */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":487
 *         return xpath.xmlXPathNewFloat(obj)
 *     if obj is None:
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)             # <<<<<<<<<<<<<<
 *     elif isinstance(obj, _Element):
 *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
 */
    __pyx_v_resultSet = xmlXPathNodeSetCreate(NULL);
    goto __pyx_L7;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":488
 *     if obj is None:
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *     elif isinstance(obj, _Element):             # <<<<<<<<<<<<<<
 *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
 *     elif python.PySequence_Check(obj):
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_obj, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":489
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *     elif isinstance(obj, _Element):
 *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)             # <<<<<<<<<<<<<<
 *     elif python.PySequence_Check(obj):
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 */
    __pyx_v_resultSet = xmlXPathNodeSetCreate(((struct LxmlElement *)__pyx_v_obj)->_c_node);
    goto __pyx_L7;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":490
 *     elif isinstance(obj, _Element):
 *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
 *     elif python.PySequence_Check(obj):             # <<<<<<<<<<<<<<
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *         for element in obj:
 */
  __pyx_t_1 = PySequence_Check(__pyx_v_obj);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":491
 *         resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node)
 *     elif python.PySequence_Check(obj):
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)             # <<<<<<<<<<<<<<
 *         for element in obj:
 *             if isinstance(element, _Element):
 */
    __pyx_v_resultSet = xmlXPathNodeSetCreate(NULL);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":492
 *     elif python.PySequence_Check(obj):
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *         for element in obj:             # <<<<<<<<<<<<<<
 *             if isinstance(element, _Element):
 *                 node = <_Element>element
 */
    if (PyList_CheckExact(__pyx_v_obj) || PyTuple_CheckExact(__pyx_v_obj)) {
      __pyx_t_5 = 0; __pyx_t_2 = __pyx_v_obj; __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_obj); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
    }
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++;
      } else {
        __pyx_t_6 = PyIter_Next(__pyx_t_2);
        if (!__pyx_t_6) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_v_element);
      __pyx_v_element = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":493
 *         resultSet = xpath.xmlXPathNodeSetCreate(NULL)
 *         for element in obj:
 *             if isinstance(element, _Element):             # <<<<<<<<<<<<<<
 *                 node = <_Element>element
 *                 xpath.xmlXPathNodeSetAdd(resultSet, node._c_node)
 */
      __pyx_t_1 = PyObject_TypeCheck(__pyx_v_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Element))); 
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":494
 *         for element in obj:
 *             if isinstance(element, _Element):
 *                 node = <_Element>element             # <<<<<<<<<<<<<<
 *                 xpath.xmlXPathNodeSetAdd(resultSet, node._c_node)
 *             else:
 */
        __Pyx_INCREF(((PyObject *)((struct LxmlElement *)__pyx_v_element)));
        __Pyx_DECREF(((PyObject *)__pyx_v_node));
        __pyx_v_node = ((struct LxmlElement *)__pyx_v_element);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":495
 *             if isinstance(element, _Element):
 *                 node = <_Element>element
 *                 xpath.xmlXPathNodeSetAdd(resultSet, node._c_node)             # <<<<<<<<<<<<<<
 *             else:
 *                 xpath.xmlXPathFreeNodeSet(resultSet)
 */
        xmlXPathNodeSetAdd(__pyx_v_resultSet, __pyx_v_node->_c_node);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":497
 *                 xpath.xmlXPathNodeSetAdd(resultSet, node._c_node)
 *             else:
 *                 xpath.xmlXPathFreeNodeSet(resultSet)             # <<<<<<<<<<<<<<
 *                 raise XPathResultError, u"This is not a node: %r" % element
 *     else:
 */
        xmlXPathFreeNodeSet(__pyx_v_resultSet);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":498
 *             else:
 *                 xpath.xmlXPathFreeNodeSet(resultSet)
 *                 raise XPathResultError, u"This is not a node: %r" % element             # <<<<<<<<<<<<<<
 *     else:
 *         raise XPathResultError, u"Unknown return type: %s" % \
 */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathResultError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_258), __pyx_v_element); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_Raise(__pyx_t_6, __pyx_t_7, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L10:;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":500
 *                 raise XPathResultError, u"This is not a node: %r" % element
 *     else:
 *         raise XPathResultError, u"Unknown return type: %s" % \             # <<<<<<<<<<<<<<
 *             python._fqtypename(obj)
 *     return xpath.xmlXPathWrapNodeSet(resultSet)
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathResultError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":501
 *     else:
 *         raise XPathResultError, u"Unknown return type: %s" % \
 *             python._fqtypename(obj)             # <<<<<<<<<<<<<<
 *     return xpath.xmlXPathWrapNodeSet(resultSet)
 * 
 */
    __pyx_t_7 = __Pyx_PyBytes_FromString(_fqtypename(__pyx_v_obj)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_7));
    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_259), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_2, __pyx_t_6, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":502
 *         raise XPathResultError, u"Unknown return type: %s" % \
 *             python._fqtypename(obj)
 *     return xpath.xmlXPathWrapNodeSet(resultSet)             # <<<<<<<<<<<<<<
 * 
 * cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj,
 */
  __pyx_r = xmlXPathWrapNodeSet(__pyx_v_resultSet);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._wrapXPathObject");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_node);
  __Pyx_DECREF(__pyx_v_element);
  __Pyx_DECREF(__pyx_v_obj);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":504
 *     return xpath.xmlXPathWrapNodeSet(resultSet)
 * 
 * cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj,             # <<<<<<<<<<<<<<
 *                                _Document doc, _BaseContext context):
 *     if xpathObj.type == xpath.XPATH_UNDEFINED:
 */

static  PyObject *__pyx_f_4lxml_5etree__unwrapXPathObject(xmlXPathObject *__pyx_v_xpathObj, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
  PyObject *__pyx_v_stringval;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_unwrapXPathObject");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __pyx_v_stringval = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":506
 * cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj,
 *                                _Document doc, _BaseContext context):
 *     if xpathObj.type == xpath.XPATH_UNDEFINED:             # <<<<<<<<<<<<<<
 *         raise XPathResultError, u"Undefined xpath result"
 *     elif xpathObj.type == xpath.XPATH_NODESET:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_UNDEFINED);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":507
 *                                _Document doc, _BaseContext context):
 *     if xpathObj.type == xpath.XPATH_UNDEFINED:
 *         raise XPathResultError, u"Undefined xpath result"             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_NODESET:
 *         return _createNodeSetResult(xpathObj, doc, context)
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathResultError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, ((PyObject *)__pyx_kp_u_260), 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":508
 *     if xpathObj.type == xpath.XPATH_UNDEFINED:
 *         raise XPathResultError, u"Undefined xpath result"
 *     elif xpathObj.type == xpath.XPATH_NODESET:             # <<<<<<<<<<<<<<
 *         return _createNodeSetResult(xpathObj, doc, context)
 *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_NODESET);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":509
 *         raise XPathResultError, u"Undefined xpath result"
 *     elif xpathObj.type == xpath.XPATH_NODESET:
 *         return _createNodeSetResult(xpathObj, doc, context)             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
 *         return xpathObj.boolval
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree__createNodeSetResult(__pyx_v_xpathObj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":510
 *     elif xpathObj.type == xpath.XPATH_NODESET:
 *         return _createNodeSetResult(xpathObj, doc, context)
 *     elif xpathObj.type == xpath.XPATH_BOOLEAN:             # <<<<<<<<<<<<<<
 *         return xpathObj.boolval
 *     elif xpathObj.type == xpath.XPATH_NUMBER:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_BOOLEAN);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":511
 *         return _createNodeSetResult(xpathObj, doc, context)
 *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
 *         return xpathObj.boolval             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_NUMBER:
 *         return xpathObj.floatval
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_xpathObj->boolval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":512
 *     elif xpathObj.type == xpath.XPATH_BOOLEAN:
 *         return xpathObj.boolval
 *     elif xpathObj.type == xpath.XPATH_NUMBER:             # <<<<<<<<<<<<<<
 *         return xpathObj.floatval
 *     elif xpathObj.type == xpath.XPATH_STRING:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_NUMBER);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":513
 *         return xpathObj.boolval
 *     elif xpathObj.type == xpath.XPATH_NUMBER:
 *         return xpathObj.floatval             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_STRING:
 *         stringval = funicode(xpathObj.stringval)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_xpathObj->floatval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":514
 *     elif xpathObj.type == xpath.XPATH_NUMBER:
 *         return xpathObj.floatval
 *     elif xpathObj.type == xpath.XPATH_STRING:             # <<<<<<<<<<<<<<
 *         stringval = funicode(xpathObj.stringval)
 *         if context._build_smart_strings:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_STRING);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":515
 *         return xpathObj.floatval
 *     elif xpathObj.type == xpath.XPATH_STRING:
 *         stringval = funicode(xpathObj.stringval)             # <<<<<<<<<<<<<<
 *         if context._build_smart_strings:
 *             stringval = _elementStringResultFactory(
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_xpathObj->stringval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_stringval);
    __pyx_v_stringval = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":516
 *     elif xpathObj.type == xpath.XPATH_STRING:
 *         stringval = funicode(xpathObj.stringval)
 *         if context._build_smart_strings:             # <<<<<<<<<<<<<<
 *             stringval = _elementStringResultFactory(
 *                 stringval, None, 0, 0)
 */
    __pyx_t_1 = __pyx_v_context->_build_smart_strings;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":518
 *         if context._build_smart_strings:
 *             stringval = _elementStringResultFactory(
 *                 stringval, None, 0, 0)             # <<<<<<<<<<<<<<
 *         return stringval
 *     elif xpathObj.type == xpath.XPATH_POINT:
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree__elementStringResultFactory(__pyx_v_stringval, ((struct LxmlElement *)Py_None), 0, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_stringval);
      __pyx_v_stringval = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":519
 *             stringval = _elementStringResultFactory(
 *                 stringval, None, 0, 0)
 *         return stringval             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_POINT:
 *         raise NotImplementedError, u"XPATH_POINT"
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_stringval);
    __pyx_r = __pyx_v_stringval;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":520
 *                 stringval, None, 0, 0)
 *         return stringval
 *     elif xpathObj.type == xpath.XPATH_POINT:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError, u"XPATH_POINT"
 *     elif xpathObj.type == xpath.XPATH_RANGE:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_POINT);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":521
 *         return stringval
 *     elif xpathObj.type == xpath.XPATH_POINT:
 *         raise NotImplementedError, u"XPATH_POINT"             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_RANGE:
 *         raise NotImplementedError, u"XPATH_RANGE"
 */
    __Pyx_Raise(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_n_u__XPATH_POINT), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":522
 *     elif xpathObj.type == xpath.XPATH_POINT:
 *         raise NotImplementedError, u"XPATH_POINT"
 *     elif xpathObj.type == xpath.XPATH_RANGE:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError, u"XPATH_RANGE"
 *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_RANGE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":523
 *         raise NotImplementedError, u"XPATH_POINT"
 *     elif xpathObj.type == xpath.XPATH_RANGE:
 *         raise NotImplementedError, u"XPATH_RANGE"             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
 *         raise NotImplementedError, u"XPATH_LOCATIONSET"
 */
    __Pyx_Raise(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_n_u__XPATH_RANGE), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":524
 *     elif xpathObj.type == xpath.XPATH_RANGE:
 *         raise NotImplementedError, u"XPATH_RANGE"
 *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError, u"XPATH_LOCATIONSET"
 *     elif xpathObj.type == xpath.XPATH_USERS:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_LOCATIONSET);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":525
 *         raise NotImplementedError, u"XPATH_RANGE"
 *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
 *         raise NotImplementedError, u"XPATH_LOCATIONSET"             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_USERS:
 *         raise NotImplementedError, u"XPATH_USERS"
 */
    __Pyx_Raise(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_n_u__XPATH_LOCATIONSET), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":526
 *     elif xpathObj.type == xpath.XPATH_LOCATIONSET:
 *         raise NotImplementedError, u"XPATH_LOCATIONSET"
 *     elif xpathObj.type == xpath.XPATH_USERS:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError, u"XPATH_USERS"
 *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_USERS);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":527
 *         raise NotImplementedError, u"XPATH_LOCATIONSET"
 *     elif xpathObj.type == xpath.XPATH_USERS:
 *         raise NotImplementedError, u"XPATH_USERS"             # <<<<<<<<<<<<<<
 *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:
 *         return _createNodeSetResult(xpathObj, doc, context)
 */
    __Pyx_Raise(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_n_u__XPATH_USERS), 0);
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":528
 *     elif xpathObj.type == xpath.XPATH_USERS:
 *         raise NotImplementedError, u"XPATH_USERS"
 *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:             # <<<<<<<<<<<<<<
 *         return _createNodeSetResult(xpathObj, doc, context)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_xpathObj->type == XPATH_XSLT_TREE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":529
 *         raise NotImplementedError, u"XPATH_USERS"
 *     elif xpathObj.type == xpath.XPATH_XSLT_TREE:
 *         return _createNodeSetResult(xpathObj, doc, context)             # <<<<<<<<<<<<<<
 *     else:
 *         raise XPathResultError, u"Unknown xpath result %s" % unicode(xpathObj.type)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4lxml_5etree__createNodeSetResult(__pyx_v_xpathObj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":531
 *         return _createNodeSetResult(xpathObj, doc, context)
 *     else:
 *         raise XPathResultError, u"Unknown xpath result %s" % unicode(xpathObj.type)             # <<<<<<<<<<<<<<
 * 
 * cdef object _createNodeSetResult(xpath.xmlXPathObject* xpathObj, _Document doc,
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathResultError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyInt_FromLong(__pyx_v_xpathObj->type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_261), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, __pyx_t_4, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._unwrapXPathObject");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_stringval);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":533
 *         raise XPathResultError, u"Unknown xpath result %s" % unicode(xpathObj.type)
 * 
 * cdef object _createNodeSetResult(xpath.xmlXPathObject* xpathObj, _Document doc,             # <<<<<<<<<<<<<<
 *                                  _BaseContext context):
 *     cdef xmlNode* c_node
 */

static  PyObject *__pyx_f_4lxml_5etree__createNodeSetResult(xmlXPathObject *__pyx_v_xpathObj, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
  xmlNode *__pyx_v_c_node;
  int __pyx_v_i;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_createNodeSetResult");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __pyx_v_result = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":538
 *     cdef int i
 *     cdef list result
 *     result = []             # <<<<<<<<<<<<<<
 *     if xpathObj.nodesetval is NULL:
 *         return result
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":539
 *     cdef list result
 *     result = []
 *     if xpathObj.nodesetval is NULL:             # <<<<<<<<<<<<<<
 *         return result
 *     for i from 0 <= i < xpathObj.nodesetval.nodeNr:
 */
  __pyx_t_2 = (__pyx_v_xpathObj->nodesetval == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":540
 *     result = []
 *     if xpathObj.nodesetval is NULL:
 *         return result             # <<<<<<<<<<<<<<
 *     for i from 0 <= i < xpathObj.nodesetval.nodeNr:
 *         c_node = xpathObj.nodesetval.nodeTab[i]
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_result));
    __pyx_r = ((PyObject *)__pyx_v_result);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":541
 *     if xpathObj.nodesetval is NULL:
 *         return result
 *     for i from 0 <= i < xpathObj.nodesetval.nodeNr:             # <<<<<<<<<<<<<<
 *         c_node = xpathObj.nodesetval.nodeTab[i]
 *         _unpackNodeSetEntry(result, c_node, doc, context,
 */
  __pyx_t_3 = __pyx_v_xpathObj->nodesetval->nodeNr;
  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":542
 *         return result
 *     for i from 0 <= i < xpathObj.nodesetval.nodeNr:
 *         c_node = xpathObj.nodesetval.nodeTab[i]             # <<<<<<<<<<<<<<
 *         _unpackNodeSetEntry(result, c_node, doc, context,
 *                             xpathObj.type == xpath.XPATH_XSLT_TREE)
 */
    __pyx_v_c_node = (__pyx_v_xpathObj->nodesetval->nodeTab[__pyx_v_i]);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":544
 *         c_node = xpathObj.nodesetval.nodeTab[i]
 *         _unpackNodeSetEntry(result, c_node, doc, context,
 *                             xpathObj.type == xpath.XPATH_XSLT_TREE)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    __pyx_t_1 = __pyx_f_4lxml_5etree__unpackNodeSetEntry(__pyx_v_result, __pyx_v_c_node, __pyx_v_doc, __pyx_v_context, (__pyx_v_xpathObj->type == XPATH_XSLT_TREE)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":545
 *         _unpackNodeSetEntry(result, c_node, doc, context,
 *                             xpathObj.type == xpath.XPATH_XSLT_TREE)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef _unpackNodeSetEntry(list results, xmlNode* c_node, _Document doc,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._createNodeSetResult");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":547
 *     return result
 * 
 * cdef _unpackNodeSetEntry(list results, xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
 *                          _BaseContext context, bint is_fragment):
 *     cdef xmlNode* c_child
 */

static  PyObject *__pyx_f_4lxml_5etree__unpackNodeSetEntry(PyObject *__pyx_v_results, xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context, int __pyx_v_is_fragment) {
  xmlNode *__pyx_v_c_child;
  char *__pyx_v_s;
  PyObject *__pyx_v_href;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_unpackNodeSetEntry");
  __Pyx_INCREF(__pyx_v_results);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __pyx_v_href = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":551
 *     cdef xmlNode* c_child
 *     cdef char* s
 *     if _isElement(c_node):             # <<<<<<<<<<<<<<
 *         if c_node.doc != doc._c_doc and c_node.doc._private is NULL:
 *             # XXX: works, but maybe not always the right thing to do?
 */
  __pyx_t_1 = _isElement(__pyx_v_c_node);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":552
 *     cdef char* s
 *     if _isElement(c_node):
 *         if c_node.doc != doc._c_doc and c_node.doc._private is NULL:             # <<<<<<<<<<<<<<
 *             # XXX: works, but maybe not always the right thing to do?
 *             # XPath: only runs when extensions create or copy trees
 */
    __pyx_t_1 = (__pyx_v_c_node->doc != __pyx_v_doc->_c_doc);
    if (__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c_node->doc->_private == NULL);
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":557
 *             #        -> we store Python refs to these, so that is OK
 *             # XSLT: can it leak when merging trees from multiple sources?
 *             c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1)             # <<<<<<<<<<<<<<
 *             # FIXME: call _instantiateElementFromXPath() instead?
 *         results.append(
 */
      __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_doc->_c_doc, 1);
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":559
 *             c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1)
 *             # FIXME: call _instantiateElementFromXPath() instead?
 *         results.append(             # <<<<<<<<<<<<<<
 *             _fakeDocElementFactory(doc, c_node))
 *     elif c_node.type == tree.XML_TEXT_NODE or \
 */
    if (unlikely(__pyx_v_results == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":560
 *             # FIXME: call _instantiateElementFromXPath() instead?
 *         results.append(
 *             _fakeDocElementFactory(doc, c_node))             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_TEXT_NODE or \
 *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__fakeDocElementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_results), __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":561
 *         results.append(
 *             _fakeDocElementFactory(doc, c_node))
 *     elif c_node.type == tree.XML_TEXT_NODE or \             # <<<<<<<<<<<<<<
 *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
 *              c_node.type == tree.XML_ATTRIBUTE_NODE:
 */
  __pyx_t_3 = (__pyx_v_c_node->type == XML_TEXT_NODE);
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":562
 *             _fakeDocElementFactory(doc, c_node))
 *     elif c_node.type == tree.XML_TEXT_NODE or \
 *              c_node.type == tree.XML_CDATA_SECTION_NODE or \             # <<<<<<<<<<<<<<
 *              c_node.type == tree.XML_ATTRIBUTE_NODE:
 *         results.append(
 */
    __pyx_t_1 = (__pyx_v_c_node->type == XML_CDATA_SECTION_NODE);
    if (!__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":563
 *     elif c_node.type == tree.XML_TEXT_NODE or \
 *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
 *              c_node.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *         results.append(
 *             _buildElementStringResult(doc, c_node, context))
 */
      __pyx_t_2 = (__pyx_v_c_node->type == XML_ATTRIBUTE_NODE);
      __pyx_t_6 = __pyx_t_2;
    } else {
      __pyx_t_6 = __pyx_t_1;
    }
    __pyx_t_1 = __pyx_t_6;
  } else {
    __pyx_t_1 = __pyx_t_3;
  }
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":564
 *              c_node.type == tree.XML_CDATA_SECTION_NODE or \
 *              c_node.type == tree.XML_ATTRIBUTE_NODE:
 *         results.append(             # <<<<<<<<<<<<<<
 *             _buildElementStringResult(doc, c_node, context))
 *     elif c_node.type == tree.XML_NAMESPACE_DECL:
 */
    if (unlikely(__pyx_v_results == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":565
 *              c_node.type == tree.XML_ATTRIBUTE_NODE:
 *         results.append(
 *             _buildElementStringResult(doc, c_node, context))             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_NAMESPACE_DECL:
 *         s = (<xmlNs*>c_node).href
 */
    __pyx_t_4 = __pyx_f_4lxml_5etree__buildElementStringResult(__pyx_v_doc, __pyx_v_c_node, __pyx_v_context); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_results), __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":566
 *         results.append(
 *             _buildElementStringResult(doc, c_node, context))
 *     elif c_node.type == tree.XML_NAMESPACE_DECL:             # <<<<<<<<<<<<<<
 *         s = (<xmlNs*>c_node).href
 *         if s is NULL:
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_NAMESPACE_DECL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":567
 *             _buildElementStringResult(doc, c_node, context))
 *     elif c_node.type == tree.XML_NAMESPACE_DECL:
 *         s = (<xmlNs*>c_node).href             # <<<<<<<<<<<<<<
 *         if s is NULL:
 *             href = None
 */
    __pyx_v_s = ((xmlNs *)__pyx_v_c_node)->href;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":568
 *     elif c_node.type == tree.XML_NAMESPACE_DECL:
 *         s = (<xmlNs*>c_node).href
 *         if s is NULL:             # <<<<<<<<<<<<<<
 *             href = None
 *         else:
 */
    __pyx_t_1 = (__pyx_v_s == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":569
 *         s = (<xmlNs*>c_node).href
 *         if s is NULL:
 *             href = None             # <<<<<<<<<<<<<<
 *         else:
 *             href = funicode(s)
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = Py_None;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":571
 *             href = None
 *         else:
 *             href = funicode(s)             # <<<<<<<<<<<<<<
 *         s = (<xmlNs*>c_node).prefix
 *         if s is NULL:
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_href);
      __pyx_v_href = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_L5:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":572
 *         else:
 *             href = funicode(s)
 *         s = (<xmlNs*>c_node).prefix             # <<<<<<<<<<<<<<
 *         if s is NULL:
 *             prefix = None
 */
    __pyx_v_s = ((xmlNs *)__pyx_v_c_node)->prefix;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":573
 *             href = funicode(s)
 *         s = (<xmlNs*>c_node).prefix
 *         if s is NULL:             # <<<<<<<<<<<<<<
 *             prefix = None
 *         else:
 */
    __pyx_t_1 = (__pyx_v_s == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":574
 *         s = (<xmlNs*>c_node).prefix
 *         if s is NULL:
 *             prefix = None             # <<<<<<<<<<<<<<
 *         else:
 *             prefix = funicode(s)
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = Py_None;
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":576
 *             prefix = None
 *         else:
 *             prefix = funicode(s)             # <<<<<<<<<<<<<<
 *         results.append( (prefix, href) )
 *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_L6:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":577
 *         else:
 *             prefix = funicode(s)
 *         results.append( (prefix, href) )             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
 *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
 */
    if (unlikely(__pyx_v_results == Py_None)) {
      PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_prefix);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_prefix);
    __Pyx_GIVEREF(__pyx_v_prefix);
    __Pyx_INCREF(__pyx_v_href);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_href);
    __Pyx_GIVEREF(__pyx_v_href);
    __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_results), __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":578
 *             prefix = funicode(s)
 *         results.append( (prefix, href) )
 *     elif c_node.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
 *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
 *         # ignored for everything but result tree fragments
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_DOCUMENT_NODE);
  if (!__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":579
 *         results.append( (prefix, href) )
 *     elif c_node.type == tree.XML_DOCUMENT_NODE or \
 *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
 *         # ignored for everything but result tree fragments
 *         if is_fragment:
 */
    __pyx_t_3 = (__pyx_v_c_node->type == XML_HTML_DOCUMENT_NODE);
    __pyx_t_6 = __pyx_t_3;
  } else {
    __pyx_t_6 = __pyx_t_1;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":581
 *             c_node.type == tree.XML_HTML_DOCUMENT_NODE:
 *         # ignored for everything but result tree fragments
 *         if is_fragment:             # <<<<<<<<<<<<<<
 *             c_child = c_node.children
 *             while c_child is not NULL:
 */
    __pyx_t_6 = __pyx_v_is_fragment;
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":582
 *         # ignored for everything but result tree fragments
 *         if is_fragment:
 *             c_child = c_node.children             # <<<<<<<<<<<<<<
 *             while c_child is not NULL:
 *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
 */
      __pyx_v_c_child = __pyx_v_c_node->children;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":583
 *         if is_fragment:
 *             c_child = c_node.children
 *             while c_child is not NULL:             # <<<<<<<<<<<<<<
 *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
 *                 c_child = c_child.next
 */
      while (1) {
        __pyx_t_6 = (__pyx_v_c_child != NULL);
        if (!__pyx_t_6) break;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":584
 *             c_child = c_node.children
 *             while c_child is not NULL:
 *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)             # <<<<<<<<<<<<<<
 *                 c_child = c_child.next
 *     elif c_node.type == tree.XML_XINCLUDE_START or \
 */
        __pyx_t_4 = __pyx_f_4lxml_5etree__unpackNodeSetEntry(__pyx_v_results, __pyx_v_c_child, __pyx_v_doc, __pyx_v_context, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":585
 *             while c_child is not NULL:
 *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
 *                 c_child = c_child.next             # <<<<<<<<<<<<<<
 *     elif c_node.type == tree.XML_XINCLUDE_START or \
 *             c_node.type == tree.XML_XINCLUDE_END:
 */
        __pyx_v_c_child = __pyx_v_c_child->next;
      }
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":586
 *                 _unpackNodeSetEntry(results, c_child, doc, context, 0)
 *                 c_child = c_child.next
 *     elif c_node.type == tree.XML_XINCLUDE_START or \             # <<<<<<<<<<<<<<
 *             c_node.type == tree.XML_XINCLUDE_END:
 *         pass
 */
  __pyx_t_6 = (__pyx_v_c_node->type == XML_XINCLUDE_START);
  if (!__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":587
 *                 c_child = c_child.next
 *     elif c_node.type == tree.XML_XINCLUDE_START or \
 *             c_node.type == tree.XML_XINCLUDE_END:             # <<<<<<<<<<<<<<
 *         pass
 *     else:
 */
    __pyx_t_1 = (__pyx_v_c_node->type == XML_XINCLUDE_END);
    __pyx_t_3 = __pyx_t_1;
  } else {
    __pyx_t_3 = __pyx_t_6;
  }
  if (__pyx_t_3) {
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":591
 *     else:
 *         raise NotImplementedError, \
 *             u"Not yet implemented result node type: %d" % c_node.type             # <<<<<<<<<<<<<<
 * 
 * cdef void _freeXPathObject(xpath.xmlXPathObject* xpathObj):
 */
    __pyx_t_4 = PyInt_FromLong(__pyx_v_c_node->type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_262), __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_builtin_NotImplementedError, __pyx_t_7, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree._unpackNodeSetEntry");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_href);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_results);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":593
 *             u"Not yet implemented result node type: %d" % c_node.type
 * 
 * cdef void _freeXPathObject(xpath.xmlXPathObject* xpathObj):             # <<<<<<<<<<<<<<
 *     u"""Free the XPath object, but *never* free the *content* of node sets.
 *     Python dealloc will do that for us.
 */

static  void __pyx_f_4lxml_5etree__freeXPathObject(xmlXPathObject *__pyx_v_xpathObj) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_freeXPathObject");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":597
 *     Python dealloc will do that for us.
 *     """
 *     if xpathObj.nodesetval is not NULL:             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval)
 *         xpathObj.nodesetval = NULL
 */
  __pyx_t_1 = (__pyx_v_xpathObj->nodesetval != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":598
 *     """
 *     if xpathObj.nodesetval is not NULL:
 *         xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval)             # <<<<<<<<<<<<<<
 *         xpathObj.nodesetval = NULL
 *     xpath.xmlXPathFreeObject(xpathObj)
 */
    xmlXPathFreeNodeSet(__pyx_v_xpathObj->nodesetval);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":599
 *     if xpathObj.nodesetval is not NULL:
 *         xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval)
 *         xpathObj.nodesetval = NULL             # <<<<<<<<<<<<<<
 *     xpath.xmlXPathFreeObject(xpathObj)
 * 
 */
    __pyx_v_xpathObj->nodesetval = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":600
 *         xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval)
 *         xpathObj.nodesetval = NULL
 *     xpath.xmlXPathFreeObject(xpathObj)             # <<<<<<<<<<<<<<
 * 
 * cdef _Element _instantiateElementFromXPath(xmlNode* c_node, _Document doc,
 */
  xmlXPathFreeObject(__pyx_v_xpathObj);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":602
 *     xpath.xmlXPathFreeObject(xpathObj)
 * 
 * cdef _Element _instantiateElementFromXPath(xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
 *                                            _BaseContext context):
 *     # NOTE: this may copy the element - only call this when it can't leak
 */

static  struct LxmlElement *__pyx_f_4lxml_5etree__instantiateElementFromXPath(xmlNode *__pyx_v_c_node, struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_instantiateElementFromXPath");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":605
 *                                            _BaseContext context):
 *     # NOTE: this may copy the element - only call this when it can't leak
 *     if c_node.doc != doc._c_doc and c_node.doc._private is NULL:             # <<<<<<<<<<<<<<
 *         # not from the context document and not from a fake document
 *         # either => may still be from a known document, e.g. one
 */
  __pyx_t_1 = (__pyx_v_c_node->doc != __pyx_v_doc->_c_doc);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_node->doc->_private == NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":609
 *         # either => may still be from a known document, e.g. one
 *         # created by an extension function
 *         doc = context._findDocumentForNode(c_node)             # <<<<<<<<<<<<<<
 *         if doc is None:
 *             # not from a known document at all! => can only make a
 */
    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_findDocumentForNode(__pyx_v_context, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":610
 *         # created by an extension function
 *         doc = context._findDocumentForNode(c_node)
 *         if doc is None:             # <<<<<<<<<<<<<<
 *             # not from a known document at all! => can only make a
 *             # safety copy here
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_doc) == Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":613
 *             # not from a known document at all! => can only make a
 *             # safety copy here
 *             c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1)             # <<<<<<<<<<<<<<
 *     return _fakeDocElementFactory(doc, c_node)
 * 
 */
      __pyx_v_c_node = xmlDocCopyNode(__pyx_v_c_node, __pyx_v_doc->_c_doc, 1);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":614
 *             # safety copy here
 *             c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1)
 *     return _fakeDocElementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__fakeDocElementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = ((struct LxmlElement *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._instantiateElementFromXPath");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":625
 *     cdef readonly object is_attribute
 * 
 *     def getparent(self):             # <<<<<<<<<<<<<<
 *         return self._parent
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("getparent");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":626
 * 
 *     def getparent(self):
 *         return self._parent             # <<<<<<<<<<<<<<
 * 
 * class _ElementStringResult(str):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)__pyx_v_self)->_parent));
  __pyx_r = ((PyObject *)((struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)__pyx_v_self)->_parent);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":631
 *     # we need to use a Python class here, str cannot be C-subclassed
 *     # in Pyrex/Cython
 *     def getparent(self):             # <<<<<<<<<<<<<<
 *         return self._parent
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4lxml_5etree_20_ElementStringResult_getparent = {__Pyx_NAMESTR("getparent"), (PyCFunction)__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent, METH_O, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_4lxml_5etree_20_ElementStringResult_getparent(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getparent");
  __pyx_self = __pyx_self;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":632
 *     # in Pyrex/Cython
 *     def getparent(self):
 *         return self._parent             # <<<<<<<<<<<<<<
 * 
 * cdef object _elementStringResultFactory(string_value, _Element parent,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s___parent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ElementStringResult.getparent");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":634
 *         return self._parent
 * 
 * cdef object _elementStringResultFactory(string_value, _Element parent,             # <<<<<<<<<<<<<<
 *                                         bint is_attribute, bint is_tail):
 *     cdef _ElementUnicodeResult uresult
 */

static  PyObject *__pyx_f_4lxml_5etree__elementStringResultFactory(PyObject *__pyx_v_string_value, struct LxmlElement *__pyx_v_parent, int __pyx_v_is_attribute, int __pyx_v_is_tail) {
  struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *__pyx_v_uresult;
  int __pyx_v_is_text;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_elementStringResultFactory");
  __Pyx_INCREF(__pyx_v_string_value);
  __Pyx_INCREF((PyObject *)__pyx_v_parent);
  __pyx_v_uresult = ((struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":638
 *     cdef _ElementUnicodeResult uresult
 *     cdef bint is_text
 *     if parent is None:             # <<<<<<<<<<<<<<
 *         is_text = 0
 *     else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_parent) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":639
 *     cdef bint is_text
 *     if parent is None:
 *         is_text = 0             # <<<<<<<<<<<<<<
 *     else:
 *         is_text = not (is_tail or is_attribute)
 */
    __pyx_v_is_text = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":641
 *         is_text = 0
 *     else:
 *         is_text = not (is_tail or is_attribute)             # <<<<<<<<<<<<<<
 * 
 *     if python.PyString_CheckExact(string_value):
 */
    if (!__pyx_v_is_tail) {
      __pyx_t_1 = __pyx_v_is_attribute;
    } else {
      __pyx_t_1 = __pyx_v_is_tail;
    }
    __pyx_v_is_text = (!__pyx_t_1);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":643
 *         is_text = not (is_tail or is_attribute)
 * 
 *     if python.PyString_CheckExact(string_value):             # <<<<<<<<<<<<<<
 *         result = _ElementStringResult(string_value)
 *         result._parent = parent
 */
  __pyx_t_1 = PyString_CheckExact(__pyx_v_string_value);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":644
 * 
 *     if python.PyString_CheckExact(string_value):
 *         result = _ElementStringResult(string_value)             # <<<<<<<<<<<<<<
 *         result._parent = parent
 *         result.is_attribute = is_attribute
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s_264); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_string_value);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_string_value);
    __Pyx_GIVEREF(__pyx_v_string_value);
    __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":645
 *     if python.PyString_CheckExact(string_value):
 *         result = _ElementStringResult(string_value)
 *         result._parent = parent             # <<<<<<<<<<<<<<
 *         result.is_attribute = is_attribute
 *         result.is_tail = is_tail
 */
    if (PyObject_SetAttr(__pyx_v_result, __pyx_n_s___parent, ((PyObject *)__pyx_v_parent)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":646
 *         result = _ElementStringResult(string_value)
 *         result._parent = parent
 *         result.is_attribute = is_attribute             # <<<<<<<<<<<<<<
 *         result.is_tail = is_tail
 *         result.is_text = is_text
 */
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_is_attribute); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyObject_SetAttr(__pyx_v_result, __pyx_n_s__is_attribute, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":647
 *         result._parent = parent
 *         result.is_attribute = is_attribute
 *         result.is_tail = is_tail             # <<<<<<<<<<<<<<
 *         result.is_text = is_text
 *         return result
 */
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_is_tail); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyObject_SetAttr(__pyx_v_result, __pyx_n_s__is_tail, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":648
 *         result.is_attribute = is_attribute
 *         result.is_tail = is_tail
 *         result.is_text = is_text             # <<<<<<<<<<<<<<
 *         return result
 *     else:
 */
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_is_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyObject_SetAttr(__pyx_v_result, __pyx_n_s__is_text, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":649
 *         result.is_tail = is_tail
 *         result.is_text = is_text
 *         return result             # <<<<<<<<<<<<<<
 *     else:
 *         uresult = _ElementUnicodeResult(string_value)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_result);
    __pyx_r = __pyx_v_result;
    goto __pyx_L0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":651
 *         return result
 *     else:
 *         uresult = _ElementUnicodeResult(string_value)             # <<<<<<<<<<<<<<
 *         uresult._parent = parent
 *         uresult.is_attribute = is_attribute
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_string_value);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_string_value);
    __Pyx_GIVEREF(__pyx_v_string_value);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementUnicodeResult)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_v_uresult));
    __pyx_v_uresult = ((struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":652
 *     else:
 *         uresult = _ElementUnicodeResult(string_value)
 *         uresult._parent = parent             # <<<<<<<<<<<<<<
 *         uresult.is_attribute = is_attribute
 *         uresult.is_tail = is_tail
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_parent));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_parent));
    __Pyx_GOTREF(__pyx_v_uresult->_parent);
    __Pyx_DECREF(((PyObject *)__pyx_v_uresult->_parent));
    __pyx_v_uresult->_parent = __pyx_v_parent;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":653
 *         uresult = _ElementUnicodeResult(string_value)
 *         uresult._parent = parent
 *         uresult.is_attribute = is_attribute             # <<<<<<<<<<<<<<
 *         uresult.is_tail = is_tail
 *         uresult.is_text = is_text
 */
    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_attribute); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_uresult->is_attribute);
    __Pyx_DECREF(__pyx_v_uresult->is_attribute);
    __pyx_v_uresult->is_attribute = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":654
 *         uresult._parent = parent
 *         uresult.is_attribute = is_attribute
 *         uresult.is_tail = is_tail             # <<<<<<<<<<<<<<
 *         uresult.is_text = is_text
 *         return uresult
 */
    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_tail); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_uresult->is_tail);
    __Pyx_DECREF(__pyx_v_uresult->is_tail);
    __pyx_v_uresult->is_tail = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":655
 *         uresult.is_attribute = is_attribute
 *         uresult.is_tail = is_tail
 *         uresult.is_text = is_text             # <<<<<<<<<<<<<<
 *         return uresult
 * 
 */
    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_is_text); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_uresult->is_text);
    __Pyx_DECREF(__pyx_v_uresult->is_text);
    __pyx_v_uresult->is_text = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":656
 *         uresult.is_tail = is_tail
 *         uresult.is_text = is_text
 *         return uresult             # <<<<<<<<<<<<<<
 * 
 * cdef object _buildElementStringResult(_Document doc, xmlNode* c_node,
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_uresult));
    __pyx_r = ((PyObject *)__pyx_v_uresult);
    goto __pyx_L0;
  }
  __pyx_L4:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._elementStringResultFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_uresult);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF(__pyx_v_string_value);
  __Pyx_DECREF((PyObject *)__pyx_v_parent);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":658
 *         return uresult
 * 
 * cdef object _buildElementStringResult(_Document doc, xmlNode* c_node,             # <<<<<<<<<<<<<<
 *                                       _BaseContext context):
 *     cdef _Element parent
 */

static  PyObject *__pyx_f_4lxml_5etree__buildElementStringResult(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context) {
  struct LxmlElement *__pyx_v_parent;
  xmlNode *__pyx_v_c_element;
  char *__pyx_v_s;
  int __pyx_v_is_attribute;
  int __pyx_v_is_tail;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_buildElementStringResult");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __pyx_v_parent = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":665
 *     cdef bint is_attribute, is_text, is_tail
 * 
 *     if c_node.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
 *         is_attribute = 1
 *         is_tail = 0
 */
  __pyx_t_1 = (__pyx_v_c_node->type == XML_ATTRIBUTE_NODE);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":666
 * 
 *     if c_node.type == tree.XML_ATTRIBUTE_NODE:
 *         is_attribute = 1             # <<<<<<<<<<<<<<
 *         is_tail = 0
 *         s = tree.xmlNodeGetContent(c_node)
 */
    __pyx_v_is_attribute = 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":667
 *     if c_node.type == tree.XML_ATTRIBUTE_NODE:
 *         is_attribute = 1
 *         is_tail = 0             # <<<<<<<<<<<<<<
 *         s = tree.xmlNodeGetContent(c_node)
 *         try:
 */
    __pyx_v_is_tail = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":668
 *         is_attribute = 1
 *         is_tail = 0
 *         s = tree.xmlNodeGetContent(c_node)             # <<<<<<<<<<<<<<
 *         try:
 *             value = funicode(s)
 */
    __pyx_v_s = xmlNodeGetContent(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":669
 *         is_tail = 0
 *         s = tree.xmlNodeGetContent(c_node)
 *         try:             # <<<<<<<<<<<<<<
 *             value = funicode(s)
 *         finally:
 */
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":670
 *         s = tree.xmlNodeGetContent(c_node)
 *         try:
 *             value = funicode(s)             # <<<<<<<<<<<<<<
 *         finally:
 *             tree.xmlFree(s)
 */
      __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L5;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_2;
      __pyx_t_2 = 0;
    }
    /*finally:*/ {
      int __pyx_why;
      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
      int __pyx_exc_lineno;
      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
      __pyx_why = 0; goto __pyx_L6;
      __pyx_L5: {
        __pyx_why = 4;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
        __pyx_exc_lineno = __pyx_lineno;
        goto __pyx_L6;
      }
      __pyx_L6:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":672
 *             value = funicode(s)
 *         finally:
 *             tree.xmlFree(s)             # <<<<<<<<<<<<<<
 *         c_element = NULL
 *     else:
 */
      xmlFree(__pyx_v_s);
      switch (__pyx_why) {
        case 4: {
          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
          __pyx_lineno = __pyx_exc_lineno;
          __pyx_exc_type = 0;
          __pyx_exc_value = 0;
          __pyx_exc_tb = 0;
          goto __pyx_L1_error;
        }
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":673
 *         finally:
 *             tree.xmlFree(s)
 *         c_element = NULL             # <<<<<<<<<<<<<<
 *     else:
 *         #assert c_node.type == tree.XML_TEXT_NODE or c_node.type == tree.XML_CDATA_SECTION_NODE, "invalid node type"
 */
    __pyx_v_c_element = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":676
 *     else:
 *         #assert c_node.type == tree.XML_TEXT_NODE or c_node.type == tree.XML_CDATA_SECTION_NODE, "invalid node type"
 *         is_attribute = 0             # <<<<<<<<<<<<<<
 *         # may be tail text or normal text
 *         value = funicode(c_node.content)
 */
    __pyx_v_is_attribute = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":678
 *         is_attribute = 0
 *         # may be tail text or normal text
 *         value = funicode(c_node.content)             # <<<<<<<<<<<<<<
 *         c_element = _previousElement(c_node)
 *         is_tail = c_element is not NULL
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->content); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_value);
    __pyx_v_value = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":679
 *         # may be tail text or normal text
 *         value = funicode(c_node.content)
 *         c_element = _previousElement(c_node)             # <<<<<<<<<<<<<<
 *         is_tail = c_element is not NULL
 * 
 */
    __pyx_v_c_element = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":680
 *         value = funicode(c_node.content)
 *         c_element = _previousElement(c_node)
 *         is_tail = c_element is not NULL             # <<<<<<<<<<<<<<
 * 
 *     if not context._build_smart_strings:
 */
    __pyx_v_is_tail = (__pyx_v_c_element != NULL);
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":682
 *         is_tail = c_element is not NULL
 * 
 *     if not context._build_smart_strings:             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  __pyx_t_1 = (!__pyx_v_context->_build_smart_strings);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":683
 * 
 *     if not context._build_smart_strings:
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     if c_element is NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_value);
    __pyx_r = __pyx_v_value;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":685
 *         return value
 * 
 *     if c_element is NULL:             # <<<<<<<<<<<<<<
 *         # non-tail text or attribute text
 *         c_element = c_node.parent
 */
  __pyx_t_1 = (__pyx_v_c_element == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":687
 *     if c_element is NULL:
 *         # non-tail text or attribute text
 *         c_element = c_node.parent             # <<<<<<<<<<<<<<
 *         while c_element is not NULL and not _isElement(c_element):
 *             c_element = c_element.parent
 */
    __pyx_v_c_element = __pyx_v_c_node->parent;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":688
 *         # non-tail text or attribute text
 *         c_element = c_node.parent
 *         while c_element is not NULL and not _isElement(c_element):             # <<<<<<<<<<<<<<
 *             c_element = c_element.parent
 * 
 */
    while (1) {
      __pyx_t_1 = (__pyx_v_c_element != NULL);
      if (__pyx_t_1) {
        __pyx_t_3 = (!_isElement(__pyx_v_c_element));
        __pyx_t_4 = __pyx_t_3;
      } else {
        __pyx_t_4 = __pyx_t_1;
      }
      if (!__pyx_t_4) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":689
 *         c_element = c_node.parent
 *         while c_element is not NULL and not _isElement(c_element):
 *             c_element = c_element.parent             # <<<<<<<<<<<<<<
 * 
 *     if c_element is not NULL:
 */
      __pyx_v_c_element = __pyx_v_c_element->parent;
    }
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":691
 *             c_element = c_element.parent
 * 
 *     if c_element is not NULL:             # <<<<<<<<<<<<<<
 *         parent = _instantiateElementFromXPath(c_element, doc, context)
 * 
 */
  __pyx_t_4 = (__pyx_v_c_element != NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":692
 * 
 *     if c_element is not NULL:
 *         parent = _instantiateElementFromXPath(c_element, doc, context)             # <<<<<<<<<<<<<<
 * 
 *     return _elementStringResultFactory(
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__instantiateElementFromXPath(__pyx_v_c_element, __pyx_v_doc, __pyx_v_context)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_parent));
    __pyx_v_parent = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":694
 *         parent = _instantiateElementFromXPath(c_element, doc, context)
 * 
 *     return _elementStringResultFactory(             # <<<<<<<<<<<<<<
 *         value, parent, is_attribute, is_tail)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":695
 * 
 *     return _elementStringResultFactory(
 *         value, parent, is_attribute, is_tail)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__elementStringResultFactory(__pyx_v_value, __pyx_v_parent, __pyx_v_is_attribute, __pyx_v_is_tail); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._buildElementStringResult");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_parent);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":700
 * # callbacks for XPath/XSLT extension functions
 * 
 * cdef void _extension_function_call(_BaseContext context, function,             # <<<<<<<<<<<<<<
 *                                    xpath.xmlXPathParserContext* ctxt, int nargs):
 *     cdef _Document doc
 */

static  void __pyx_f_4lxml_5etree__extension_function_call(struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context, PyObject *__pyx_v_function, xmlXPathParserContext *__pyx_v_ctxt, int __pyx_v_nargs) {
  struct LxmlDocument *__pyx_v_doc;
  xmlXPathObject *__pyx_v_obj;
  int __pyx_v_i;
  PyObject *__pyx_v_args;
  PyObject *__pyx_v_o;
  PyObject *__pyx_v_res;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  xmlXPathObject *__pyx_t_6;
  __Pyx_RefNannySetupContext("_extension_function_call");
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF(__pyx_v_function);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_args = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_o = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_res = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":706
 *     cdef int i
 *     cdef list args
 *     doc = context._doc             # <<<<<<<<<<<<<<
 *     try:
 *         args = []
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_context->_doc));
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = __pyx_v_context->_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":707
 *     cdef list args
 *     doc = context._doc
 *     try:             # <<<<<<<<<<<<<<
 *         args = []
 *         for i from 0 <= i < nargs:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":708
 *     doc = context._doc
 *     try:
 *         args = []             # <<<<<<<<<<<<<<
 *         for i from 0 <= i < nargs:
 *             obj = xpath.valuePop(ctxt)
 */
      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_DECREF(((PyObject *)__pyx_v_args));
      __pyx_v_args = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":709
 *     try:
 *         args = []
 *         for i from 0 <= i < nargs:             # <<<<<<<<<<<<<<
 *             obj = xpath.valuePop(ctxt)
 *             o = _unwrapXPathObject(obj, doc, context)
 */
      __pyx_t_2 = __pyx_v_nargs;
      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":710
 *         args = []
 *         for i from 0 <= i < nargs:
 *             obj = xpath.valuePop(ctxt)             # <<<<<<<<<<<<<<
 *             o = _unwrapXPathObject(obj, doc, context)
 *             _freeXPathObject(obj)
 */
        __pyx_v_obj = valuePop(__pyx_v_ctxt);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":711
 *         for i from 0 <= i < nargs:
 *             obj = xpath.valuePop(ctxt)
 *             o = _unwrapXPathObject(obj, doc, context)             # <<<<<<<<<<<<<<
 *             _freeXPathObject(obj)
 *             args.append(o)
 */
        __pyx_t_1 = __pyx_f_4lxml_5etree__unwrapXPathObject(__pyx_v_obj, __pyx_v_doc, __pyx_v_context); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_v_o);
        __pyx_v_o = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":712
 *             obj = xpath.valuePop(ctxt)
 *             o = _unwrapXPathObject(obj, doc, context)
 *             _freeXPathObject(obj)             # <<<<<<<<<<<<<<
 *             args.append(o)
 *         args.reverse()
 */
        __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_obj);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":713
 *             o = _unwrapXPathObject(obj, doc, context)
 *             _freeXPathObject(obj)
 *             args.append(o)             # <<<<<<<<<<<<<<
 *         args.reverse()
 * 
 */
        if (unlikely(__pyx_v_args == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;} 
        }
        __pyx_t_3 = PyList_Append(((PyObject *)__pyx_v_args), __pyx_v_o); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":714
 *             _freeXPathObject(obj)
 *             args.append(o)
 *         args.reverse()             # <<<<<<<<<<<<<<
 * 
 *         res = function(context, *args)
 */
      if (unlikely(__pyx_v_args == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'reverse'"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L3_error;} 
      }
      __pyx_t_2 = PyList_Reverse(((PyObject *)__pyx_v_args)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L3_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":716
 *         args.reverse()
 * 
 *         res = function(context, *args)             # <<<<<<<<<<<<<<
 *         # wrap result for XPath consumption
 *         obj = _wrapXPathObject(res)
 */
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_context));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
      __pyx_t_4 = PySequence_Tuple(((PyObject *)__pyx_v_args)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __pyx_t_5 = PyNumber_Add(__pyx_t_1, ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_v_function, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_v_res);
      __pyx_v_res = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":718
 *         res = function(context, *args)
 *         # wrap result for XPath consumption
 *         obj = _wrapXPathObject(res)             # <<<<<<<<<<<<<<
 *         # prevent Python from deallocating elements handed to libxml2
 *         context._hold(res)
 */
      __pyx_t_6 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_res); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __pyx_v_obj = __pyx_t_6;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":720
 *         obj = _wrapXPathObject(res)
 *         # prevent Python from deallocating elements handed to libxml2
 *         context._hold(res)             # <<<<<<<<<<<<<<
 *         xpath.valuePush(ctxt, obj)
 *     except:
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_hold(__pyx_v_context, __pyx_v_res); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":721
 *         # prevent Python from deallocating elements handed to libxml2
 *         context._hold(res)
 *         xpath.valuePush(ctxt, obj)             # <<<<<<<<<<<<<<
 *     except:
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)
 */
      valuePush(__pyx_v_ctxt, __pyx_v_obj);
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":722
 *         context._hold(res)
 *         xpath.valuePush(ctxt, obj)
 *     except:             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)
 *         context._exc._store_raised()
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._extension_function_call");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":723
 *         xpath.valuePush(ctxt, obj)
 *     except:
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)             # <<<<<<<<<<<<<<
 *         context._exc._store_raised()
 * 
 */
      xmlXPathErr(__pyx_v_ctxt, XPATH_EXPR_ERROR);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":724
 *     except:
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR)
 *         context._exc._store_raised()             # <<<<<<<<<<<<<<
 * 
 * # lookup the function by name and call it
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->_exc->__pyx_vtab)->_store_raised(__pyx_v_context->_exc);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("lxml.etree._extension_function_call");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_o);
  __Pyx_DECREF(__pyx_v_res);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":728
 * # lookup the function by name and call it
 * 
 * cdef void _xpath_function_call(xpath.xmlXPathParserContext* ctxt,             # <<<<<<<<<<<<<<
 *                                int nargs) with gil:
 *     cdef xpath.xmlXPathContext* rctxt
 */

static  void __pyx_f_4lxml_5etree__xpath_function_call(xmlXPathParserContext *__pyx_v_ctxt, int __pyx_v_nargs) {
  xmlXPathContext *__pyx_v_rctxt;
  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_v_context;
  PyObject *__pyx_v_function;
  PyObject *__pyx_v_fref;
  PyObject *__pyx_v_exception;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_xpath_function_call");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_function = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_fref = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_exception = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":732
 *     cdef xpath.xmlXPathContext* rctxt
 *     cdef _BaseContext context
 *     rctxt = ctxt.context             # <<<<<<<<<<<<<<
 *     context = <_BaseContext>(rctxt.userData)
 *     function = context._find_cached_function(rctxt.functionURI, rctxt.function)
 */
  __pyx_v_rctxt = __pyx_v_ctxt->context;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":733
 *     cdef _BaseContext context
 *     rctxt = ctxt.context
 *     context = <_BaseContext>(rctxt.userData)             # <<<<<<<<<<<<<<
 *     function = context._find_cached_function(rctxt.functionURI, rctxt.function)
 *     if function is not None:
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_rctxt->userData)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_rctxt->userData);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":734
 *     rctxt = ctxt.context
 *     context = <_BaseContext>(rctxt.userData)
 *     function = context._find_cached_function(rctxt.functionURI, rctxt.function)             # <<<<<<<<<<<<<<
 *     if function is not None:
 *         _extension_function_call(context, function, ctxt, nargs)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseContext *)__pyx_v_context->__pyx_vtab)->_find_cached_function(__pyx_v_context, __pyx_v_rctxt->functionURI, __pyx_v_rctxt->function); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_function);
  __pyx_v_function = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":735
 *     context = <_BaseContext>(rctxt.userData)
 *     function = context._find_cached_function(rctxt.functionURI, rctxt.function)
 *     if function is not None:             # <<<<<<<<<<<<<<
 *         _extension_function_call(context, function, ctxt, nargs)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_function != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":736
 *     function = context._find_cached_function(rctxt.functionURI, rctxt.function)
 *     if function is not None:
 *         _extension_function_call(context, function, ctxt, nargs)             # <<<<<<<<<<<<<<
 *     else:
 *         if rctxt.functionURI is not NULL:
 */
    __pyx_f_4lxml_5etree__extension_function_call(__pyx_v_context, __pyx_v_function, __pyx_v_ctxt, __pyx_v_nargs);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":738
 *         _extension_function_call(context, function, ctxt, nargs)
 *     else:
 *         if rctxt.functionURI is not NULL:             # <<<<<<<<<<<<<<
 *             fref = u"{%s}%s" % (rctxt.functionURI, rctxt.function)
 *         else:
 */
    __pyx_t_2 = (__pyx_v_rctxt->functionURI != NULL);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":739
 *     else:
 *         if rctxt.functionURI is not NULL:
 *             fref = u"{%s}%s" % (rctxt.functionURI, rctxt.function)             # <<<<<<<<<<<<<<
 *         else:
 *             fref = rctxt.function
 */
      __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_rctxt->functionURI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_rctxt->function); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
      PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
      __pyx_t_1 = 0;
      __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_27), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_fref);
      __pyx_v_fref = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":741
 *             fref = u"{%s}%s" % (rctxt.functionURI, rctxt.function)
 *         else:
 *             fref = rctxt.function             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)
 *         exception = XPathFunctionError(u"XPath function '%s' not found" % fref)
 */
      __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_rctxt->function); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __Pyx_DECREF(__pyx_v_fref);
      __pyx_v_fref = ((PyObject *)__pyx_t_3);
      __pyx_t_3 = 0;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":742
 *         else:
 *             fref = rctxt.function
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)             # <<<<<<<<<<<<<<
 *         exception = XPathFunctionError(u"XPath function '%s' not found" % fref)
 *         context._exc._store_exception(exception)
 */
    xmlXPathErr(__pyx_v_ctxt, XPATH_UNKNOWN_FUNC_ERROR);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":743
 *             fref = rctxt.function
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)
 *         exception = XPathFunctionError(u"XPath function '%s' not found" % fref)             # <<<<<<<<<<<<<<
 *         context._exc._store_exception(exception)
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathFunctionError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_266), __pyx_v_fref); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_exception);
    __pyx_v_exception = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":744
 *         xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR)
 *         exception = XPathFunctionError(u"XPath function '%s' not found" % fref)
 *         context._exc._store_exception(exception)             # <<<<<<<<<<<<<<
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->_exc->__pyx_vtab)->_store_exception(__pyx_v_context->_exc, __pyx_v_exception);
  }
  __pyx_L3:;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._xpath_function_call");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_function);
  __Pyx_DECREF(__pyx_v_fref);
  __Pyx_DECREF(__pyx_v_exception);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":31
 * )
 * 
 * cdef int _register_xpath_function(void* ctxt, name_utf, ns_utf):             # <<<<<<<<<<<<<<
 *     if ns_utf is None:
 *         return xpath.xmlXPathRegisterFunc(
 */

static  int __pyx_f_4lxml_5etree__register_xpath_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_register_xpath_function");
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_ns_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":32
 * 
 * cdef int _register_xpath_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:             # <<<<<<<<<<<<<<
 *         return xpath.xmlXPathRegisterFunc(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf),
 */
  __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":35
 *         return xpath.xmlXPathRegisterFunc(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf),
 *             _xpath_function_call)             # <<<<<<<<<<<<<<
 *     else:
 *         return xpath.xmlXPathRegisterFuncNS(
 */
    __pyx_r = xmlXPathRegisterFunc(((xmlXPathContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), __pyx_f_4lxml_5etree__xpath_function_call);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":39
 *         return xpath.xmlXPathRegisterFuncNS(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf), _cstr(ns_utf),
 *             _xpath_function_call)             # <<<<<<<<<<<<<<
 * 
 * cdef int _unregister_xpath_function(void* ctxt, name_utf, ns_utf):
 */
    __pyx_r = xmlXPathRegisterFuncNS(((xmlXPathContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), PyString_AS_STRING(__pyx_v_ns_utf), __pyx_f_4lxml_5etree__xpath_function_call);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":41
 *             _xpath_function_call)
 * 
 * cdef int _unregister_xpath_function(void* ctxt, name_utf, ns_utf):             # <<<<<<<<<<<<<<
 *     if ns_utf is None:
 *         return xpath.xmlXPathRegisterFunc(
 */

static  int __pyx_f_4lxml_5etree__unregister_xpath_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_unregister_xpath_function");
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_ns_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":42
 * 
 * cdef int _unregister_xpath_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:             # <<<<<<<<<<<<<<
 *         return xpath.xmlXPathRegisterFunc(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf), NULL)
 */
  __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":44
 *     if ns_utf is None:
 *         return xpath.xmlXPathRegisterFunc(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf), NULL)             # <<<<<<<<<<<<<<
 *     else:
 *         return xpath.xmlXPathRegisterFuncNS(
 */
    __pyx_r = xmlXPathRegisterFunc(((xmlXPathContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), NULL);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":47
 *     else:
 *         return xpath.xmlXPathRegisterFuncNS(
 *             <xpath.xmlXPathContext*>ctxt, _cstr(name_utf), _cstr(ns_utf), NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_r = xmlXPathRegisterFuncNS(((xmlXPathContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), PyString_AS_STRING(__pyx_v_ns_utf), NULL);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":52
 * cdef class _XPathContext(_BaseContext):
 *     cdef object _variables
 *     def __init__(self, namespaces, extensions, enable_regexp, variables,             # <<<<<<<<<<<<<<
 *                  build_smart_strings):
 *         self._variables = variables
 */

static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_13_XPathContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_enable_regexp = 0;
  PyObject *__pyx_v_variables = 0;
  PyObject *__pyx_v_build_smart_strings = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__enable_regexp,&__pyx_n_s__variables,&__pyx_n_s__build_smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__enable_regexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__variables);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  4:
      values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__build_smart_strings);
      if (likely(values[4])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_namespaces = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_enable_regexp = values[2];
    __pyx_v_variables = values[3];
    __pyx_v_build_smart_strings = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_namespaces = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_extensions = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_enable_regexp = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_variables = PyTuple_GET_ITEM(__pyx_args, 3);
    __pyx_v_build_smart_strings = PyTuple_GET_ITEM(__pyx_args, 4);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XPathContext.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":54
 *     def __init__(self, namespaces, extensions, enable_regexp, variables,
 *                  build_smart_strings):
 *         self._variables = variables             # <<<<<<<<<<<<<<
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,
 *                               build_smart_strings)
 */
  __Pyx_INCREF(__pyx_v_variables);
  __Pyx_GIVEREF(__pyx_v_variables);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathContext *)__pyx_v_self)->_variables);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree__XPathContext *)__pyx_v_self)->_variables);
  ((struct __pyx_obj_4lxml_5etree__XPathContext *)__pyx_v_self)->_variables = __pyx_v_variables;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":55
 *                  build_smart_strings):
 *         self._variables = variables
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,             # <<<<<<<<<<<<<<
 *                               build_smart_strings)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseContext)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":56
 *         self._variables = variables
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,
 *                               build_smart_strings)             # <<<<<<<<<<<<<<
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_enable_regexp);
  __Pyx_GIVEREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(__pyx_v_build_smart_strings);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_build_smart_strings);
  __Pyx_GIVEREF(__pyx_v_build_smart_strings);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XPathContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":58
 *                               build_smart_strings)
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):             # <<<<<<<<<<<<<<
 *         self._set_xpath_context(xpathCtxt)
 *         self._setupDict(xpathCtxt)
 */

static  PyObject *__pyx_f_4lxml_5etree_13_XPathContext_set_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("set_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":59
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._set_xpath_context(xpathCtxt)             # <<<<<<<<<<<<<<
 *         self._setupDict(xpathCtxt)
 *         self.registerLocalNamespaces()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_xpath_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xpathCtxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":60
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._set_xpath_context(xpathCtxt)
 *         self._setupDict(xpathCtxt)             # <<<<<<<<<<<<<<
 *         self.registerLocalNamespaces()
 *         self.registerLocalFunctions(xpathCtxt, _register_xpath_function)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->_setupDict(__pyx_v_self, __pyx_v_xpathCtxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":61
 *         self._set_xpath_context(xpathCtxt)
 *         self._setupDict(xpathCtxt)
 *         self.registerLocalNamespaces()             # <<<<<<<<<<<<<<
 *         self.registerLocalFunctions(xpathCtxt, _register_xpath_function)
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":62
 *         self._setupDict(xpathCtxt)
 *         self.registerLocalNamespaces()
 *         self.registerLocalFunctions(xpathCtxt, _register_xpath_function)             # <<<<<<<<<<<<<<
 * 
 *     cdef register_context(self, _Document doc):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xpathCtxt, __pyx_f_4lxml_5etree__register_xpath_function);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathContext.set_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":64
 *         self.registerLocalFunctions(xpathCtxt, _register_xpath_function)
 * 
 *     cdef register_context(self, _Document doc):             # <<<<<<<<<<<<<<
 *         self._register_context(doc)
 *         self.registerGlobalNamespaces()
 */

static  PyObject *__pyx_f_4lxml_5etree_13_XPathContext_register_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, struct LxmlDocument *__pyx_v_doc) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("register_context");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":65
 * 
 *     cdef register_context(self, _Document doc):
 *         self._register_context(doc)             # <<<<<<<<<<<<<<
 *         self.registerGlobalNamespaces()
 *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._register_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":66
 *     cdef register_context(self, _Document doc):
 *         self._register_context(doc)
 *         self.registerGlobalNamespaces()             # <<<<<<<<<<<<<<
 *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
 *         if self._variables is not None:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":67
 *         self._register_context(doc)
 *         self.registerGlobalNamespaces()
 *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)             # <<<<<<<<<<<<<<
 *         if self._variables is not None:
 *             self.registerVariables(self._variables)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_self->__pyx_base._xpathCtxt, __pyx_f_4lxml_5etree__register_xpath_function);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":68
 *         self.registerGlobalNamespaces()
 *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
 *         if self._variables is not None:             # <<<<<<<<<<<<<<
 *             self.registerVariables(self._variables)
 * 
 */
  __pyx_t_2 = (__pyx_v_self->_variables != Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":69
 *         self.registerGlobalFunctions(self._xpathCtxt, _register_xpath_function)
 *         if self._variables is not None:
 *             self.registerVariables(self._variables)             # <<<<<<<<<<<<<<
 * 
 *     cdef unregister_context(self):
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->registerVariables(__pyx_v_self, __pyx_v_self->_variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathContext.register_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":71
 *             self.registerVariables(self._variables)
 * 
 *     cdef unregister_context(self):             # <<<<<<<<<<<<<<
 *         self.unregisterGlobalFunctions(
 *             self._xpathCtxt, _unregister_xpath_function)
 */

static  PyObject *__pyx_f_4lxml_5etree_13_XPathContext_unregister_context(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("unregister_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":73
 *     cdef unregister_context(self):
 *         self.unregisterGlobalFunctions(
 *             self._xpathCtxt, _unregister_xpath_function)             # <<<<<<<<<<<<<<
 *         self.unregisterGlobalNamespaces()
 *         xpath.xmlXPathRegisteredVariablesCleanup(self._xpathCtxt)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.unregisterGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_self->__pyx_base._xpathCtxt, __pyx_f_4lxml_5etree__unregister_xpath_function); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":74
 *         self.unregisterGlobalFunctions(
 *             self._xpathCtxt, _unregister_xpath_function)
 *         self.unregisterGlobalNamespaces()             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathRegisteredVariablesCleanup(self._xpathCtxt)
 *         self._cleanup_context()
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.unregisterGlobalNamespaces(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":75
 *             self._xpathCtxt, _unregister_xpath_function)
 *         self.unregisterGlobalNamespaces()
 *         xpath.xmlXPathRegisteredVariablesCleanup(self._xpathCtxt)             # <<<<<<<<<<<<<<
 *         self._cleanup_context()
 * 
 */
  xmlXPathRegisteredVariablesCleanup(__pyx_v_self->__pyx_base._xpathCtxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":76
 *         self.unregisterGlobalNamespaces()
 *         xpath.xmlXPathRegisteredVariablesCleanup(self._xpathCtxt)
 *         self._cleanup_context()             # <<<<<<<<<<<<<<
 * 
 *     cdef registerVariables(self, variable_dict):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cleanup_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathContext.unregister_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":78
 *         self._cleanup_context()
 * 
 *     cdef registerVariables(self, variable_dict):             # <<<<<<<<<<<<<<
 *         for name, value in variable_dict.items():
 *             name_utf = self._to_utf(name)
 */

static  PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariables(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, PyObject *__pyx_v_variable_dict) {
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  xmlXPathObject *__pyx_t_7;
  __Pyx_RefNannySetupContext("registerVariables");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_variable_dict);
  __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":79
 * 
 *     cdef registerVariables(self, variable_dict):
 *         for name, value in variable_dict.items():             # <<<<<<<<<<<<<<
 *             name_utf = self._to_utf(name)
 *             xpath.xmlXPathRegisterVariable(
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_variable_dict, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_name);
      __pyx_v_name = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":80
 *     cdef registerVariables(self, variable_dict):
 *         for name, value in variable_dict.items():
 *             name_utf = self._to_utf(name)             # <<<<<<<<<<<<<<
 *             xpath.xmlXPathRegisterVariable(
 *                 self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_name_utf);
    __pyx_v_name_utf = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":82
 *             name_utf = self._to_utf(name)
 *             xpath.xmlXPathRegisterVariable(
 *                 self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))             # <<<<<<<<<<<<<<
 * 
 *     cdef registerVariable(self, name, value):
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_value); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    xmlXPathRegisterVariable(__pyx_v_self->__pyx_base._xpathCtxt, PyString_AS_STRING(__pyx_v_name_utf), __pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._XPathContext.registerVariables");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_variable_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":84
 *                 self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 * 
 *     cdef registerVariable(self, name, value):             # <<<<<<<<<<<<<<
 *         name_utf = self._to_utf(name)
 *         xpath.xmlXPathRegisterVariable(
 */

static  PyObject *__pyx_f_4lxml_5etree_13_XPathContext_registerVariable(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  xmlXPathObject *__pyx_t_2;
  __Pyx_RefNannySetupContext("registerVariable");
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":85
 * 
 *     cdef registerVariable(self, name, value):
 *         name_utf = self._to_utf(name)             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathRegisterVariable(
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._to_utf(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_name_utf);
  __pyx_v_name_utf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":87
 *         name_utf = self._to_utf(name)
 *         xpath.xmlXPathRegisterVariable(
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))             # <<<<<<<<<<<<<<
 * 
 *     cdef void _registerVariable(self, name_utf, value):
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_value); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  xmlXPathRegisterVariable(__pyx_v_self->__pyx_base._xpathCtxt, PyString_AS_STRING(__pyx_v_name_utf), __pyx_t_2);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathContext.registerVariable");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":89
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 * 
 *     cdef void _registerVariable(self, name_utf, value):             # <<<<<<<<<<<<<<
 *         xpath.xmlXPathRegisterVariable(
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 */

static  void __pyx_f_4lxml_5etree_13_XPathContext__registerVariable(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_value) {
  xmlXPathObject *__pyx_t_1;
  __Pyx_RefNannySetupContext("_registerVariable");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":91
 *     cdef void _registerVariable(self, name_utf, value):
 *         xpath.xmlXPathRegisterVariable(
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))             # <<<<<<<<<<<<<<
 * 
 *     cdef void _setupDict(self, xpath.xmlXPathContext* xpathCtxt):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__wrapXPathObject(__pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  xmlXPathRegisterVariable(__pyx_v_self->__pyx_base._xpathCtxt, PyString_AS_STRING(__pyx_v_name_utf), __pyx_t_1);

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree._XPathContext._registerVariable");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":93
 *             self._xpathCtxt, _cstr(name_utf), _wrapXPathObject(value))
 * 
 *     cdef void _setupDict(self, xpath.xmlXPathContext* xpathCtxt):             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.initXPathParserDict(xpathCtxt)
 * 
 */

static  void __pyx_f_4lxml_5etree_13_XPathContext__setupDict(struct __pyx_obj_4lxml_5etree__XPathContext *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
  __Pyx_RefNannySetupContext("_setupDict");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":94
 * 
 *     cdef void _setupDict(self, xpath.xmlXPathContext* xpathCtxt):
 *         __GLOBAL_PARSER_CONTEXT.initXPathParserDict(xpathCtxt)             # <<<<<<<<<<<<<<
 * 
 * cdef bint _XPATH_VERSION_WARNING_REQUIRED
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initXPathParserDict(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_xpathCtxt);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":108
 *     cdef _ErrorLog _error_log
 * 
 *     def __init__(self, namespaces, extensions, enable_regexp,             # <<<<<<<<<<<<<<
 *                  smart_strings):
 *         global _XPATH_VERSION_WARNING_REQUIRED
 */

static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_enable_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  PyObject *__pyx_v_warnings;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__enable_regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__enable_regexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_namespaces = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_enable_regexp = values[2];
    __pyx_v_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_namespaces = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_extensions = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_enable_regexp = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_smart_strings = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);
  __pyx_v_warnings = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":111
 *                  smart_strings):
 *         global _XPATH_VERSION_WARNING_REQUIRED
 *         if _XPATH_VERSION_WARNING_REQUIRED:             # <<<<<<<<<<<<<<
 *             _XPATH_VERSION_WARNING_REQUIRED = 0
 *             import warnings
 */
  __pyx_t_1 = __pyx_v_4lxml_5etree__XPATH_VERSION_WARNING_REQUIRED;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":112
 *         global _XPATH_VERSION_WARNING_REQUIRED
 *         if _XPATH_VERSION_WARNING_REQUIRED:
 *             _XPATH_VERSION_WARNING_REQUIRED = 0             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(u"This version of libxml2 has a known XPath bug. " + \
 */
    __pyx_v_4lxml_5etree__XPATH_VERSION_WARNING_REQUIRED = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":113
 *         if _XPATH_VERSION_WARNING_REQUIRED:
 *             _XPATH_VERSION_WARNING_REQUIRED = 0
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(u"This version of libxml2 has a known XPath bug. " + \
 *                           u"Use it at your own risk.")
 */
    __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__warnings), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_warnings);
    __pyx_v_warnings = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":114
 *             _XPATH_VERSION_WARNING_REQUIRED = 0
 *             import warnings
 *             warnings.warn(u"This version of libxml2 has a known XPath bug. " + \             # <<<<<<<<<<<<<<
 *                           u"Use it at your own risk.")
 *         self._error_log = _ErrorLog()
 */
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_warnings, __pyx_n_s__warn); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_kp_u_273), ((PyObject *)__pyx_kp_u_274)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":116
 *             warnings.warn(u"This version of libxml2 has a known XPath bug. " + \
 *                           u"Use it at your own risk.")
 *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 *         self._context = _XPathContext(namespaces, extensions,
 *                                       enable_regexp, None, smart_strings)
 */
  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_error_log);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_error_log));
  ((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":118
 *         self._error_log = _ErrorLog()
 *         self._context = _XPathContext(namespaces, extensions,
 *                                       enable_regexp, None, smart_strings)             # <<<<<<<<<<<<<<
 *         if config.ENABLE_THREADING:
 *             self._eval_lock = python.PyThread_allocate_lock()
 */
  __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_enable_regexp);
  __Pyx_GIVEREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_3, 3, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_v_smart_strings);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_smart_strings);
  __Pyx_GIVEREF(__pyx_v_smart_strings);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XPathContext)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":117
 *                           u"Use it at your own risk.")
 *         self._error_log = _ErrorLog()
 *         self._context = _XPathContext(namespaces, extensions,             # <<<<<<<<<<<<<<
 *                                       enable_regexp, None, smart_strings)
 *         if config.ENABLE_THREADING:
 */
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_context);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_context));
  ((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_context = ((struct __pyx_obj_4lxml_5etree__XPathContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":119
 *         self._context = _XPathContext(namespaces, extensions,
 *                                       enable_regexp, None, smart_strings)
 *         if config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
 *             self._eval_lock = python.PyThread_allocate_lock()
 *             if self._eval_lock is NULL:
 */
  __pyx_t_1 = ENABLE_THREADING;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":120
 *                                       enable_regexp, None, smart_strings)
 *         if config.ENABLE_THREADING:
 *             self._eval_lock = python.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
 *             if self._eval_lock is NULL:
 *                 python.PyErr_NoMemory()
 */
    ((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_eval_lock = PyThread_allocate_lock();

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":121
 *         if config.ENABLE_THREADING:
 *             self._eval_lock = python.PyThread_allocate_lock()
 *             if self._eval_lock is NULL:             # <<<<<<<<<<<<<<
 *                 python.PyErr_NoMemory()
 * 
 */
    __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_eval_lock == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":122
 *             self._eval_lock = python.PyThread_allocate_lock()
 *             if self._eval_lock is NULL:
 *                 python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     property error_log:
 */
      __pyx_t_4 = PyErr_NoMemory(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_warnings);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_enable_regexp);
  __Pyx_DECREF(__pyx_v_smart_strings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":125
 * 
 *     property error_log:
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._error_log.copy()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":126
 *     property error_log:
 *         def __get__(self):
 *             return self._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":128
 *             return self._error_log.copy()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._xpathCtxt is not NULL:
 *             xpath.xmlXPathFreeContext(self._xpathCtxt)
 */

static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":129
 * 
 *     def __dealloc__(self):
 *         if self._xpathCtxt is not NULL:             # <<<<<<<<<<<<<<
 *             xpath.xmlXPathFreeContext(self._xpathCtxt)
 *         if config.ENABLE_THREADING:
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_xpathCtxt != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":130
 *     def __dealloc__(self):
 *         if self._xpathCtxt is not NULL:
 *             xpath.xmlXPathFreeContext(self._xpathCtxt)             # <<<<<<<<<<<<<<
 *         if config.ENABLE_THREADING:
 *             if self._eval_lock is not NULL:
 */
    xmlXPathFreeContext(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_xpathCtxt);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":131
 *         if self._xpathCtxt is not NULL:
 *             xpath.xmlXPathFreeContext(self._xpathCtxt)
 *         if config.ENABLE_THREADING:             # <<<<<<<<<<<<<<
 *             if self._eval_lock is not NULL:
 *                 python.PyThread_free_lock(self._eval_lock)
 */
  __pyx_t_1 = ENABLE_THREADING;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":132
 *             xpath.xmlXPathFreeContext(self._xpathCtxt)
 *         if config.ENABLE_THREADING:
 *             if self._eval_lock is not NULL:             # <<<<<<<<<<<<<<
 *                 python.PyThread_free_lock(self._eval_lock)
 * 
 */
    __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_eval_lock != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":133
 *         if config.ENABLE_THREADING:
 *             if self._eval_lock is not NULL:
 *                 python.PyThread_free_lock(self._eval_lock)             # <<<<<<<<<<<<<<
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 */
      PyThread_free_lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)->_eval_lock);
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":135
 *                 python.PyThread_free_lock(self._eval_lock)
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):             # <<<<<<<<<<<<<<
 *         self._xpathCtxt = xpathCtxt
 *         self._context.set_context(xpathCtxt)
 */

static  PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, xmlXPathContext *__pyx_v_xpathCtxt) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("set_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":136
 * 
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._xpathCtxt = xpathCtxt             # <<<<<<<<<<<<<<
 *         self._context.set_context(xpathCtxt)
 * 
 */
  __pyx_v_self->_xpathCtxt = __pyx_v_xpathCtxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":137
 *     cdef set_context(self, xpath.xmlXPathContext* xpathCtxt):
 *         self._xpathCtxt = xpathCtxt
 *         self._context.set_context(xpathCtxt)             # <<<<<<<<<<<<<<
 * 
 *     def evaluate(self, _eval_arg, **_variables):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->_context->__pyx_base.__pyx_vtab)->set_context(__pyx_v_self->_context, __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.set_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":139
 *         self._context.set_context(xpathCtxt)
 * 
 *     def evaluate(self, _eval_arg, **_variables):             # <<<<<<<<<<<<<<
 *         u"""evaluate(self, _eval_arg, **_variables)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_evaluate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_19_XPathEvaluatorBase_evaluate[] = "evaluate(self, _eval_arg, **_variables)\n\n        Evaluate an XPath expression.\n\n        Instead of calling this method, you can also call the evaluator object\n        itself.\n\n        Variables may be provided as keyword arguments.  Note that namespaces\n        are currently not supported for variables.\n\n        :deprecated: call the object, not its method.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_evaluate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__eval_arg = 0;
  PyObject *__pyx_v__variables = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___eval_arg,0};
  __Pyx_RefNannySetupContext("evaluate");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___eval_arg);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "evaluate") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__eval_arg = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__eval_arg = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("evaluate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.evaluate");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":152
 *         :deprecated: call the object, not its method.
 *         """
 *         return self(_eval_arg, **_variables)             # <<<<<<<<<<<<<<
 * 
 *     cdef bint _checkAbsolutePath(self, char* path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v__eval_arg);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__eval_arg);
  __Pyx_GIVEREF(__pyx_v__eval_arg);
  __pyx_t_2 = __Pyx_PyEval_CallObjectWithKeywords(__pyx_v_self, __pyx_t_1, __pyx_v__variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase.evaluate");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":154
 *         return self(_eval_arg, **_variables)
 * 
 *     cdef bint _checkAbsolutePath(self, char* path):             # <<<<<<<<<<<<<<
 *         cdef char c
 *         if path is NULL:
 */

static  int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, char *__pyx_v_path) {
  char __pyx_v_c;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_checkAbsolutePath");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":156
 *     cdef bint _checkAbsolutePath(self, char* path):
 *         cdef char c
 *         if path is NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         c = path[0]
 */
  __pyx_t_1 = (__pyx_v_path == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":157
 *         cdef char c
 *         if path is NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         c = path[0]
 *         while c == c' ' or c == c'\t':
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":158
 *         if path is NULL:
 *             return 0
 *         c = path[0]             # <<<<<<<<<<<<<<
 *         while c == c' ' or c == c'\t':
 *             path = path + 1
 */
  __pyx_v_c = (__pyx_v_path[0]);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":159
 *             return 0
 *         c = path[0]
 *         while c == c' ' or c == c'\t':             # <<<<<<<<<<<<<<
 *             path = path + 1
 *             c = path[0]
 */
  while (1) {
    __pyx_t_1 = (__pyx_v_c == ' ');
    if (!__pyx_t_1) {
      __pyx_t_2 = (__pyx_v_c == '\t');
      __pyx_t_3 = __pyx_t_2;
    } else {
      __pyx_t_3 = __pyx_t_1;
    }
    if (!__pyx_t_3) break;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":160
 *         c = path[0]
 *         while c == c' ' or c == c'\t':
 *             path = path + 1             # <<<<<<<<<<<<<<
 *             c = path[0]
 *         return c == c'/'
 */
    __pyx_v_path = (__pyx_v_path + 1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":161
 *         while c == c' ' or c == c'\t':
 *             path = path + 1
 *             c = path[0]             # <<<<<<<<<<<<<<
 *         return c == c'/'
 * 
 */
    __pyx_v_c = (__pyx_v_path[0]);
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":162
 *             path = path + 1
 *             c = path[0]
 *         return c == c'/'             # <<<<<<<<<<<<<<
 * 
 *     cdef int _lock(self) except -1:
 */
  __pyx_r = (__pyx_v_c == '/');
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":164
 *         return c == c'/'
 * 
 *     cdef int _lock(self) except -1:             # <<<<<<<<<<<<<<
 *         cdef int result
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:
 */

static  int __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
  int __pyx_v_result;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("_lock");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":166
 *     cdef int _lock(self) except -1:
 *         cdef int result
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 result = python.PyThread_acquire_lock(
 */
  if (ENABLE_THREADING) {
    __pyx_t_1 = (__pyx_v_self->_eval_lock != NULL);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = ENABLE_THREADING;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":167
 *         cdef int result
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 result = python.PyThread_acquire_lock(
 *                     self._eval_lock, python.WAIT_LOCK)
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":169
 *             with nogil:
 *                 result = python.PyThread_acquire_lock(
 *                     self._eval_lock, python.WAIT_LOCK)             # <<<<<<<<<<<<<<
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"
 */
        __pyx_v_result = PyThread_acquire_lock(__pyx_v_self->_eval_lock, WAIT_LOCK);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":167
 *         cdef int result
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 result = python.PyThread_acquire_lock(
 *                     self._eval_lock, python.WAIT_LOCK)
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":170
 *                 result = python.PyThread_acquire_lock(
 *                     self._eval_lock, python.WAIT_LOCK)
 *             if result == 0:             # <<<<<<<<<<<<<<
 *                 raise ParserError, u"parser locking failed"
 *         return 0
 */
    __pyx_t_2 = (__pyx_v_result == 0);
    if (__pyx_t_2) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":171
 *                     self._eval_lock, python.WAIT_LOCK)
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParserError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_132), 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[17]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":172
 *             if result == 0:
 *                 raise ParserError, u"parser locking failed"
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef void _unlock(self):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase._lock");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":174
 *         return 0
 * 
 *     cdef void _unlock(self):             # <<<<<<<<<<<<<<
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:
 *             python.PyThread_release_lock(self._eval_lock)
 */

static  void __pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("_unlock");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":175
 * 
 *     cdef void _unlock(self):
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:             # <<<<<<<<<<<<<<
 *             python.PyThread_release_lock(self._eval_lock)
 * 
 */
  if (ENABLE_THREADING) {
    __pyx_t_1 = (__pyx_v_self->_eval_lock != NULL);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = ENABLE_THREADING;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":176
 *     cdef void _unlock(self):
 *         if config.ENABLE_THREADING and self._eval_lock != NULL:
 *             python.PyThread_release_lock(self._eval_lock)             # <<<<<<<<<<<<<<
 * 
 *     cdef _raise_parse_error(self):
 */
    PyThread_release_lock(__pyx_v_self->_eval_lock);
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":178
 *             python.PyThread_release_lock(self._eval_lock)
 * 
 *     cdef _raise_parse_error(self):             # <<<<<<<<<<<<<<
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 */

static  PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_parse_error(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_entries;
  PyObject *__pyx_v_message;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_raise_parse_error");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_entries = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":180
 *     cdef _raise_parse_error(self):
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)             # <<<<<<<<<<<<<<
 *         if entries:
 *             message = entries._buildExceptionMessage(None)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s__filter_types); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_entries));
  __pyx_v_entries = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":181
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 *         if entries:             # <<<<<<<<<<<<<<
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":182
 *         entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 *         if entries:
 *             message = entries._buildExceptionMessage(None)             # <<<<<<<<<<<<<<
 *             if message is not None:
 *                 raise XPathSyntaxError(message, self._error_log)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_entries->__pyx_vtab)->_buildExceptionMessage(__pyx_v_entries, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":183
 *         if entries:
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:             # <<<<<<<<<<<<<<
 *                 raise XPathSyntaxError(message, self._error_log)
 *         raise XPathSyntaxError(self._error_log._buildExceptionMessage(
 */
    __pyx_t_4 = (__pyx_v_message != Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":184
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:
 *                 raise XPathSyntaxError(message, self._error_log)             # <<<<<<<<<<<<<<
 *         raise XPathSyntaxError(self._error_log._buildExceptionMessage(
 *                 u"Error in xpath expression"),
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->_error_log));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
      __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[17]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":185
 *             if message is not None:
 *                 raise XPathSyntaxError(message, self._error_log)
 *         raise XPathSyntaxError(self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                 u"Error in xpath expression"),
 *                                self._error_log)
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathSyntaxError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_275)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":187
 *         raise XPathSyntaxError(self._error_log._buildExceptionMessage(
 *                 u"Error in xpath expression"),
 *                                self._error_log)             # <<<<<<<<<<<<<<
 * 
 *     cdef _raise_eval_error(self):
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self->_error_log));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  {__pyx_filename = __pyx_f[17]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase._raise_parse_error");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entries);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":189
 *                                self._error_log)
 * 
 *     cdef _raise_eval_error(self):             # <<<<<<<<<<<<<<
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_EVAL_ERRORS)
 */

static  PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_eval_error(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_v_entries;
  PyObject *__pyx_v_message;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("_raise_eval_error");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_entries = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":191
 *     cdef _raise_eval_error(self):
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_EVAL_ERRORS)             # <<<<<<<<<<<<<<
 *         if not entries:
 *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s__filter_types); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS);
  __Pyx_GIVEREF(__pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_entries));
  __pyx_v_entries = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":192
 *         cdef _BaseErrorLog entries
 *         entries = self._error_log.filter_types(_XPATH_EVAL_ERRORS)
 *         if not entries:             # <<<<<<<<<<<<<<
 *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 *         if entries:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = (!__pyx_t_4);
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":193
 *         entries = self._error_log.filter_types(_XPATH_EVAL_ERRORS)
 *         if not entries:
 *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)             # <<<<<<<<<<<<<<
 *         if entries:
 *             message = entries._buildExceptionMessage(None)
 */
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self->_error_log), __pyx_n_s__filter_types); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
    __Pyx_GIVEREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
    __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_v_entries));
    __pyx_v_entries = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":194
 *         if not entries:
 *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 *         if entries:             # <<<<<<<<<<<<<<
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_entries)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":195
 *             entries = self._error_log.filter_types(_XPATH_SYNTAX_ERRORS)
 *         if entries:
 *             message = entries._buildExceptionMessage(None)             # <<<<<<<<<<<<<<
 *             if message is not None:
 *                 raise XPathEvalError(message, self._error_log)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)__pyx_v_entries->__pyx_vtab)->_buildExceptionMessage(__pyx_v_entries, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_message);
    __pyx_v_message = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":196
 *         if entries:
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:             # <<<<<<<<<<<<<<
 *                 raise XPathEvalError(message, self._error_log)
 *         raise XPathEvalError(self._error_log._buildExceptionMessage(
 */
    __pyx_t_5 = (__pyx_v_message != Py_None);
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":197
 *             message = entries._buildExceptionMessage(None)
 *             if message is not None:
 *                 raise XPathEvalError(message, self._error_log)             # <<<<<<<<<<<<<<
 *         raise XPathEvalError(self._error_log._buildExceptionMessage(
 *                 u"Error in xpath expression"),
 */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathEvalError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->_error_log));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[17]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":198
 *             if message is not None:
 *                 raise XPathEvalError(message, self._error_log)
 *         raise XPathEvalError(self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                 u"Error in xpath expression"),
 *                              self._error_log)
 */
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathEvalError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_275)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":200
 *         raise XPathEvalError(self._error_log._buildExceptionMessage(
 *                 u"Error in xpath expression"),
 *                              self._error_log)             # <<<<<<<<<<<<<<
 * 
 *     cdef object _handle_result(self, xpath.xmlXPathObject* xpathObj, _Document doc):
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_error_log));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self->_error_log));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  {__pyx_filename = __pyx_f[17]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase._raise_eval_error");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_entries);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":202
 *                              self._error_log)
 * 
 *     cdef object _handle_result(self, xpath.xmlXPathObject* xpathObj, _Document doc):             # <<<<<<<<<<<<<<
 *         if self._context._exc._has_raised():
 *             if xpathObj is not NULL:
 */

static  PyObject *__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *__pyx_v_self, xmlXPathObject *__pyx_v_xpathObj, struct LxmlDocument *__pyx_v_doc) {
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_handle_result");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":203
 * 
 *     cdef object _handle_result(self, xpath.xmlXPathObject* xpathObj, _Document doc):
 *         if self._context._exc._has_raised():             # <<<<<<<<<<<<<<
 *             if xpathObj is not NULL:
 *                 _freeXPathObject(xpathObj)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_context->__pyx_base._exc->__pyx_vtab)->_has_raised(__pyx_v_self->_context->__pyx_base._exc);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":204
 *     cdef object _handle_result(self, xpath.xmlXPathObject* xpathObj, _Document doc):
 *         if self._context._exc._has_raised():
 *             if xpathObj is not NULL:             # <<<<<<<<<<<<<<
 *                 _freeXPathObject(xpathObj)
 *                 xpathObj = NULL
 */
    __pyx_t_1 = (__pyx_v_xpathObj != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":205
 *         if self._context._exc._has_raised():
 *             if xpathObj is not NULL:
 *                 _freeXPathObject(xpathObj)             # <<<<<<<<<<<<<<
 *                 xpathObj = NULL
 *             self._context._release_temp_refs()
 */
      __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_xpathObj);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":206
 *             if xpathObj is not NULL:
 *                 _freeXPathObject(xpathObj)
 *                 xpathObj = NULL             # <<<<<<<<<<<<<<
 *             self._context._release_temp_refs()
 *             self._context._exc._raise_if_stored()
 */
      __pyx_v_xpathObj = NULL;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":207
 *                 _freeXPathObject(xpathObj)
 *                 xpathObj = NULL
 *             self._context._release_temp_refs()             # <<<<<<<<<<<<<<
 *             self._context._exc._raise_if_stored()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->_context->__pyx_base.__pyx_vtab)->__pyx_base._release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":208
 *                 xpathObj = NULL
 *             self._context._release_temp_refs()
 *             self._context._exc._raise_if_stored()             # <<<<<<<<<<<<<<
 * 
 *         if xpathObj is NULL:
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_self->_context->__pyx_base._exc->__pyx_vtab)->_raise_if_stored(__pyx_v_self->_context->__pyx_base._exc); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":210
 *             self._context._exc._raise_if_stored()
 * 
 *         if xpathObj is NULL:             # <<<<<<<<<<<<<<
 *             self._context._release_temp_refs()
 *             self._raise_eval_error()
 */
  __pyx_t_1 = (__pyx_v_xpathObj == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":211
 * 
 *         if xpathObj is NULL:
 *             self._context._release_temp_refs()             # <<<<<<<<<<<<<<
 *             self._raise_eval_error()
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->_context->__pyx_base.__pyx_vtab)->__pyx_base._release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":212
 *         if xpathObj is NULL:
 *             self._context._release_temp_refs()
 *             self._raise_eval_error()             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self->__pyx_vtab)->_raise_eval_error(__pyx_v_self); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":214
 *             self._raise_eval_error()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             result = _unwrapXPathObject(xpathObj, doc, self._context)
 *         finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":215
 * 
 *         try:
 *             result = _unwrapXPathObject(xpathObj, doc, self._context)             # <<<<<<<<<<<<<<
 *         finally:
 *             _freeXPathObject(xpathObj)
 */
    __pyx_t_2 = __pyx_f_4lxml_5etree__unwrapXPathObject(__pyx_v_xpathObj, __pyx_v_doc, ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":217
 *             result = _unwrapXPathObject(xpathObj, doc, self._context)
 *         finally:
 *             _freeXPathObject(xpathObj)             # <<<<<<<<<<<<<<
 *             self._context._release_temp_refs()
 * 
 */
    __pyx_f_4lxml_5etree__freeXPathObject(__pyx_v_xpathObj);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":218
 *         finally:
 *             _freeXPathObject(xpathObj)
 *             self._context._release_temp_refs()             # <<<<<<<<<<<<<<
 * 
 *         return result
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)__pyx_v_self->_context->__pyx_base.__pyx_vtab)->__pyx_base._release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L10;
    __pyx_L9_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L10:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":220
 *             self._context._release_temp_refs()
 * 
 *         return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._XPathEvaluatorBase._handle_result");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":237
 *     """
 *     cdef _Element _element
 *     def __init__(self, _Element element not None, *, namespaces=None,             # <<<<<<<<<<<<<<
 *                  extensions=None, regexp=True, smart_strings=True):
 *         cdef xpath.xmlXPathContext* xpathCtxt
 */

static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElement *__pyx_v_element = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  xmlXPathContext *__pyx_v_xpathCtxt;
  struct LxmlDocument *__pyx_v_doc;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":238
 *     cdef _Element _element
 *     def __init__(self, _Element element not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         cdef int ns_register_status
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_276;
    values[4] = __pyx_k_277;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_element = ((struct LxmlElement *)values[0]);
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_regexp = values[3];
    __pyx_v_smart_strings = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_element = ((struct LxmlElement *)PyTuple_GET_ITEM(__pyx_args, 0));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":237
 *     """
 *     cdef _Element _element
 *     def __init__(self, _Element element not None, *, namespaces=None,             # <<<<<<<<<<<<<<
 *                  extensions=None, regexp=True, smart_strings=True):
 *         cdef xpath.xmlXPathContext* xpathCtxt
 */
    __pyx_v_namespaces = ((PyObject *)Py_None);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":238
 *     cdef _Element _element
 *     def __init__(self, _Element element not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         cdef int ns_register_status
 */
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_276;
    __pyx_v_smart_strings = __pyx_k_277;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_element);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":242
 *         cdef int ns_register_status
 *         cdef _Document doc
 *         self._element = element             # <<<<<<<<<<<<<<
 *         doc = element._doc
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_element));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element));
  ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element = __pyx_v_element;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":243
 *         cdef _Document doc
 *         self._element = element
 *         doc = element._doc             # <<<<<<<<<<<<<<
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 *                                      regexp, smart_strings)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_element->_doc));
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = __pyx_v_element->_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":244
 *         self._element = element
 *         doc = element._doc
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,             # <<<<<<<<<<<<<<
 *                                      regexp, smart_strings)
 *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XPathEvaluatorBase)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":245
 *         doc = element._doc
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 *                                      regexp, smart_strings)             # <<<<<<<<<<<<<<
 *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
 *         if xpathCtxt is NULL:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_regexp);
  __Pyx_GIVEREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_smart_strings);
  __Pyx_GIVEREF(__pyx_v_smart_strings);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":246
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 *                                      regexp, smart_strings)
 *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)             # <<<<<<<<<<<<<<
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()
 */
  __pyx_v_xpathCtxt = xmlXPathNewContext(__pyx_v_doc->_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":247
 *                                      regexp, smart_strings)
 *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
 *         if xpathCtxt is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         self.set_context(xpathCtxt)
 */
  __pyx_t_4 = (__pyx_v_xpathCtxt == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":248
 *         xpathCtxt = xpath.xmlXPathNewContext(doc._c_doc)
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         self.set_context(xpathCtxt)
 * 
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":249
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()
 *         self.set_context(xpathCtxt)             # <<<<<<<<<<<<<<
 * 
 *     def register_namespace(self, prefix, uri):
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base.set_context(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_regexp);
  __Pyx_DECREF(__pyx_v_smart_strings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":251
 *         self.set_context(xpathCtxt)
 * 
 *     def register_namespace(self, prefix, uri):             # <<<<<<<<<<<<<<
 *         u"""Register a namespace with the XPath context.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_21XPathElementEvaluator_register_namespace[] = "Register a namespace with the XPath context.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespace(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_prefix = 0;
  PyObject *__pyx_v_uri = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__prefix,&__pyx_n_s__uri,0};
  __Pyx_RefNannySetupContext("register_namespace");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__prefix);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__uri);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("register_namespace", 1, 2, 2, 1); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "register_namespace") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_prefix = values[0];
    __pyx_v_uri = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_prefix = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_uri = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("register_namespace", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.register_namespace");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":254
 *         u"""Register a namespace with the XPath context.
 *         """
 *         self._context.addNamespace(prefix, uri)             # <<<<<<<<<<<<<<
 * 
 *     def register_namespaces(self, namespaces):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->__pyx_base.addNamespace(((struct __pyx_obj_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context), __pyx_v_prefix, __pyx_v_uri); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.register_namespace");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":256
 *         self._context.addNamespace(prefix, uri)
 * 
 *     def register_namespaces(self, namespaces):             # <<<<<<<<<<<<<<
 *         u"""Register a prefix -> uri dict.
 *         """
 */

static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespaces(PyObject *__pyx_v_self, PyObject *__pyx_v_namespaces); /*proto*/
static char __pyx_doc_4lxml_5etree_21XPathElementEvaluator_register_namespaces[] = "Register a prefix -> uri dict.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespaces(PyObject *__pyx_v_self, PyObject *__pyx_v_namespaces) {
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_v_uri;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("register_namespaces");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_uri = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":259
 *         u"""Register a prefix -> uri dict.
 *         """
 *         for prefix, uri in namespaces.items():             # <<<<<<<<<<<<<<
 *             self._context.addNamespace(prefix, uri)
 * 
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_namespaces, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_uri);
      __pyx_v_uri = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_uri);
      __pyx_v_uri = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":260
 *         """
 *         for prefix, uri in namespaces.items():
 *             self._context.addNamespace(prefix, uri)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, _path, **_variables):
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->__pyx_base.addNamespace(((struct __pyx_obj_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context), __pyx_v_prefix, __pyx_v_uri); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.register_namespaces");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_uri);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":262
 *             self._context.addNamespace(prefix, uri)
 * 
 *     def __call__(self, _path, **_variables):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, _path, **_variables)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_21XPathElementEvaluator___call__[] = "__call__(self, _path, **_variables)\n\n        Evaluate an XPath expression on the document.\n\n        Variables may be provided as keyword arguments.  Note that namespaces\n        are currently not supported for variables.\n\n        Absolute XPath expressions (starting with '/') will be evaluated\n        against the ElementTree as returned by getroottree().\n        ";
static PyObject *__pyx_pf_4lxml_5etree_21XPathElementEvaluator___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__path = 0;
  PyObject *__pyx_v__variables = 0;
  xmlXPathObject *__pyx_v_xpathObj;
  struct LxmlDocument *__pyx_v_doc;
  char *__pyx_v_c_path;
  PyObject *__pyx_v_path;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___path,0};
  __Pyx_RefNannySetupContext("__call__");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__path = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__path = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v__path);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_path = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":276
 *         cdef _Document doc
 *         cdef char* c_path
 *         path = _utf8(_path)             # <<<<<<<<<<<<<<
 *         doc = self._element._doc
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v__path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_path);
  __pyx_v_path = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":277
 *         cdef char* c_path
 *         path = _utf8(_path)
 *         doc = self._element._doc             # <<<<<<<<<<<<<<
 * 
 *         self._lock()
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element->_doc));
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element->_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":279
 *         doc = self._element._doc
 * 
 *         self._lock()             # <<<<<<<<<<<<<<
 *         self._error_log.connect()
 *         self._xpathCtxt.node = self._element._c_node
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":280
 * 
 *         self._lock()
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         self._xpathCtxt.node = self._element._c_node
 *         try:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":281
 *         self._lock()
 *         self._error_log.connect()
 *         self._xpathCtxt.node = self._element._c_node             # <<<<<<<<<<<<<<
 *         try:
 *             self._context.register_context(doc)
 */
  ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._xpathCtxt->node = ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":282
 *         self._error_log.connect()
 *         self._xpathCtxt.node = self._element._c_node
 *         try:             # <<<<<<<<<<<<<<
 *             self._context.register_context(doc)
 *             self._context.registerVariables(_variables)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":283
 *         self._xpathCtxt.node = self._element._c_node
 *         try:
 *             self._context.register_context(doc)             # <<<<<<<<<<<<<<
 *             self._context.registerVariables(_variables)
 *             c_path = _cstr(path)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->register_context(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context, __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":284
 *         try:
 *             self._context.register_context(doc)
 *             self._context.registerVariables(_variables)             # <<<<<<<<<<<<<<
 *             c_path = _cstr(path)
 *             with nogil:
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->registerVariables(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":285
 *             self._context.register_context(doc)
 *             self._context.registerVariables(_variables)
 *             c_path = _cstr(path)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 xpathObj = xpath.xmlXPathEvalExpression(
 */
    __pyx_v_c_path = PyString_AS_STRING(__pyx_v_path);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":286
 *             self._context.registerVariables(_variables)
 *             c_path = _cstr(path)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xpathObj = xpath.xmlXPathEvalExpression(
 *                     c_path, self._xpathCtxt)
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":288
 *             with nogil:
 *                 xpathObj = xpath.xmlXPathEvalExpression(
 *                     c_path, self._xpathCtxt)             # <<<<<<<<<<<<<<
 *             result = self._handle_result(xpathObj, doc)
 *         finally:
 */
        __pyx_v_xpathObj = xmlXPathEvalExpression(__pyx_v_c_path, ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._xpathCtxt);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":286
 *             self._context.registerVariables(_variables)
 *             c_path = _cstr(path)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xpathObj = xpath.xmlXPathEvalExpression(
 *                     c_path, self._xpathCtxt)
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":289
 *                 xpathObj = xpath.xmlXPathEvalExpression(
 *                     c_path, self._xpathCtxt)
 *             result = self._handle_result(xpathObj, doc)             # <<<<<<<<<<<<<<
 *         finally:
 *             self._error_log.disconnect()
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":291
 *             result = self._handle_result(xpathObj, doc)
 *         finally:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             self._context.unregister_context()
 *             self._unlock()
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":292
 *         finally:
 *             self._error_log.disconnect()
 *             self._context.unregister_context()             # <<<<<<<<<<<<<<
 *             self._unlock()
 * 
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->unregister_context(((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base._context); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":293
 *             self._error_log.disconnect()
 *             self._context.unregister_context()
 *             self._unlock()             # <<<<<<<<<<<<<<
 * 
 *         return result
 */
    ((struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
    goto __pyx_L13;
    __pyx_L12_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L13:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":295
 *             self._unlock()
 * 
 *         return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XPathElementEvaluator.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v__path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":308
 *     you pass ``smart_strings=False``.
 *     """
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,             # <<<<<<<<<<<<<<
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(
 */

static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct LxmlElementTree *__pyx_v_etree = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":309
 *     """
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_278;
    values[4] = __pyx_k_279;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = ((struct LxmlElementTree *)values[0]);
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_regexp = values[3];
    __pyx_v_smart_strings = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = ((struct LxmlElementTree *)PyTuple_GET_ITEM(__pyx_args, 0));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":308
 *     you pass ``smart_strings=False``.
 *     """
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,             # <<<<<<<<<<<<<<
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(
 */
    __pyx_v_namespaces = ((PyObject *)Py_None);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":309
 *     """
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,
 */
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_278;
    __pyx_v_smart_strings = __pyx_k_279;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XPathDocumentEvaluator.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_etree), __pyx_ptype_4lxml_5etree__ElementTree, 0, "etree", 0))) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":310
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(             # <<<<<<<<<<<<<<
 *             self, etree._context_node, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPathElementEvaluator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":311
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 * 
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(((PyObject *)__pyx_v_etree->_context_node));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_etree->_context_node));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_etree->_context_node));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":310
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(             # <<<<<<<<<<<<<<
 *             self, etree._context_node, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":311
 *                  extensions=None, regexp=True, smart_strings=True):
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 * 
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":312
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, _path, **_variables):
 */
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__regexp), __pyx_v_regexp) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.XPathDocumentEvaluator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":314
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 * 
 *     def __call__(self, _path, **_variables):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, _path, **_variables)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_22XPathDocumentEvaluator___call__[] = "__call__(self, _path, **_variables)\n\n        Evaluate an XPath expression on the document.\n\n        Variables may be provided as keyword arguments.  Note that namespaces\n        are currently not supported for variables.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__path = 0;
  PyObject *__pyx_v__variables = 0;
  xmlXPathObject *__pyx_v_xpathObj;
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_v_doc;
  char *__pyx_v_c_path;
  PyObject *__pyx_v_path;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___path,0};
  __Pyx_RefNannySetupContext("__call__");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__path = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__path = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree.XPathDocumentEvaluator.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v__path);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_path = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":326
 *         cdef _Document doc
 *         cdef char* c_path
 *         path = _utf8(_path)             # <<<<<<<<<<<<<<
 *         doc = self._element._doc
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v__path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_path);
  __pyx_v_path = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":327
 *         cdef char* c_path
 *         path = _utf8(_path)
 *         doc = self._element._doc             # <<<<<<<<<<<<<<
 * 
 *         self._lock()
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base._element->_doc));
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base._element->_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":329
 *         doc = self._element._doc
 * 
 *         self._lock()             # <<<<<<<<<<<<<<
 *         self._error_log.connect()
 *         try:
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":330
 * 
 *         self._lock()
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         try:
 *             self._context.register_context(doc)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":331
 *         self._lock()
 *         self._error_log.connect()
 *         try:             # <<<<<<<<<<<<<<
 *             self._context.register_context(doc)
 *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":332
 *         self._error_log.connect()
 *         try:
 *             self._context.register_context(doc)             # <<<<<<<<<<<<<<
 *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
 *             try:
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context->__pyx_base.__pyx_vtab)->register_context(((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context, __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":333
 *         try:
 *             self._context.register_context(doc)
 *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)             # <<<<<<<<<<<<<<
 *             try:
 *                 self._context.registerVariables(_variables)
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base._element->_c_node); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __pyx_v_c_doc = __pyx_t_3;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":334
 *             self._context.register_context(doc)
 *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
 *             try:             # <<<<<<<<<<<<<<
 *                 self._context.registerVariables(_variables)
 *                 c_path = _cstr(path)
 */
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":335
 *             c_doc = _fakeRootDoc(doc._c_doc, self._element._c_node)
 *             try:
 *                 self._context.registerVariables(_variables)             # <<<<<<<<<<<<<<
 *                 c_path = _cstr(path)
 *                 with nogil:
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context->__pyx_base.__pyx_vtab)->registerVariables(((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L10;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":336
 *             try:
 *                 self._context.registerVariables(_variables)
 *                 c_path = _cstr(path)             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     self._xpathCtxt.doc  = c_doc
 */
      __pyx_v_c_path = PyString_AS_STRING(__pyx_v_path);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":337
 *                 self._context.registerVariables(_variables)
 *                 c_path = _cstr(path)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     self._xpathCtxt.doc  = c_doc
 *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
 */
      { PyThreadState *_save;
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":338
 *                 c_path = _cstr(path)
 *                 with nogil:
 *                     self._xpathCtxt.doc  = c_doc             # <<<<<<<<<<<<<<
 *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
 *                     xpathObj = xpath.xmlXPathEvalExpression(
 */
          ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._xpathCtxt->doc = __pyx_v_c_doc;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":339
 *                 with nogil:
 *                     self._xpathCtxt.doc  = c_doc
 *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)             # <<<<<<<<<<<<<<
 *                     xpathObj = xpath.xmlXPathEvalExpression(
 *                         c_path, self._xpathCtxt)
 */
          ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._xpathCtxt->node = xmlDocGetRootElement(__pyx_v_c_doc);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":341
 *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
 *                     xpathObj = xpath.xmlXPathEvalExpression(
 *                         c_path, self._xpathCtxt)             # <<<<<<<<<<<<<<
 *                 result = self._handle_result(xpathObj, doc)
 *             finally:
 */
          __pyx_v_xpathObj = xmlXPathEvalExpression(__pyx_v_c_path, ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._xpathCtxt);
        }
        /*finally:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":337
 *                 self._context.registerVariables(_variables)
 *                 c_path = _cstr(path)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     self._xpathCtxt.doc  = c_doc
 *                     self._xpathCtxt.node = tree.xmlDocGetRootElement(c_doc)
 */
          Py_BLOCK_THREADS
        }
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":342
 *                     xpathObj = xpath.xmlXPathEvalExpression(
 *                         c_path, self._xpathCtxt)
 *                 result = self._handle_result(xpathObj, doc)             # <<<<<<<<<<<<<<
 *             finally:
 *                 _destroyFakeDoc(doc._c_doc, c_doc)
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L10;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_result);
      __pyx_v_result = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    /*finally:*/ {
      int __pyx_why;
      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
      int __pyx_exc_lineno;
      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
      __pyx_why = 0; goto __pyx_L11;
      __pyx_L10: {
        __pyx_why = 4;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
        __pyx_exc_lineno = __pyx_lineno;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":344
 *                 result = self._handle_result(xpathObj, doc)
 *             finally:
 *                 _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 *                 self._context.unregister_context()
 *         finally:
 */
      __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":345
 *             finally:
 *                 _destroyFakeDoc(doc._c_doc, c_doc)
 *                 self._context.unregister_context()             # <<<<<<<<<<<<<<
 *         finally:
 *             self._error_log.disconnect()
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context->__pyx_base.__pyx_vtab)->unregister_context(((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._context); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L16;
      __pyx_L15_error:;
      if (__pyx_why == 4) {
        Py_XDECREF(__pyx_exc_type);
        Py_XDECREF(__pyx_exc_value);
        Py_XDECREF(__pyx_exc_tb);
      }
      goto __pyx_L7;
      __pyx_L16:;
      switch (__pyx_why) {
        case 4: {
          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
          __pyx_lineno = __pyx_exc_lineno;
          __pyx_exc_type = 0;
          __pyx_exc_value = 0;
          __pyx_exc_tb = 0;
          goto __pyx_L7;
        }
      }
    }
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":347
 *                 self._context.unregister_context()
 *         finally:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             self._unlock()
 * 
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":348
 *         finally:
 *             self._error_log.disconnect()
 *             self._unlock()             # <<<<<<<<<<<<<<
 * 
 *         return result
 */
    ((struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator *)((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":350
 *             self._unlock()
 * 
 *         return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XPathDocumentEvaluator.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v__path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":353
 * 
 * 
 * def XPathEvaluator(etree_or_element, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
 *                    regexp=True, smart_strings=True):
 *     u"""XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 */

static PyObject *__pyx_pf_4lxml_5etree_XPathEvaluator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_XPathEvaluator[] = "XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)\n\n    Creates an XPath evaluator for an ElementTree or an Element.\n\n    The resulting object can be called with an XPath expression as argument\n    and XPath variables provided as keyword arguments.\n\n    Additional namespace declarations can be passed with the\n    'namespace' keyword argument.  EXSLT regular expression support\n    can be disabled with the 'regexp' boolean keyword (defaults to\n    True).  Smart strings will be returned for string results unless\n    you pass ``smart_strings=False``.\n    ";
static PyObject *__pyx_pf_4lxml_5etree_XPathEvaluator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree_or_element = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree_or_element,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("XPathEvaluator");
  __pyx_self = __pyx_self;
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_280;
    values[4] = __pyx_k_281;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree_or_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "XPathEvaluator") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree_or_element = values[0];
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_regexp = values[3];
    __pyx_v_smart_strings = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_namespaces = ((PyObject *)Py_None);
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_280;
    __pyx_v_smart_strings = __pyx_k_281;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("XPathEvaluator", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XPathEvaluator");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_etree_or_element);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":368
 *     you pass ``smart_strings=False``.
 *     """
 *     if isinstance(etree_or_element, _ElementTree):             # <<<<<<<<<<<<<<
 *         return XPathDocumentEvaluator(
 *             etree_or_element, namespaces=namespaces,
 */
  __pyx_t_1 = PyObject_TypeCheck(__pyx_v_etree_or_element, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree))); 
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":369
 *     """
 *     if isinstance(etree_or_element, _ElementTree):
 *         return XPathDocumentEvaluator(             # <<<<<<<<<<<<<<
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":370
 *     if isinstance(etree_or_element, _ElementTree):
 *         return XPathDocumentEvaluator(
 *             etree_or_element, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_etree_or_element);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_etree_or_element);
    __Pyx_GIVEREF(__pyx_v_etree_or_element);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":369
 *     """
 *     if isinstance(etree_or_element, _ElementTree):
 *         return XPathDocumentEvaluator(             # <<<<<<<<<<<<<<
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":370
 *     if isinstance(etree_or_element, _ElementTree):
 *         return XPathDocumentEvaluator(
 *             etree_or_element, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 *     else:
 */
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":371
 *         return XPathDocumentEvaluator(
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 *     else:
 *         return XPathElementEvaluator(
 */
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__regexp), __pyx_v_regexp) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPathDocumentEvaluator)), __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":373
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 *     else:
 *         return XPathElementEvaluator(             # <<<<<<<<<<<<<<
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
    __Pyx_XDECREF(__pyx_r);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":374
 *     else:
 *         return XPathElementEvaluator(
 *             etree_or_element, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 * 
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_etree_or_element);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_etree_or_element);
    __Pyx_GIVEREF(__pyx_v_etree_or_element);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":373
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 *     else:
 *         return XPathElementEvaluator(             # <<<<<<<<<<<<<<
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":374
 *     else:
 *         return XPathElementEvaluator(
 *             etree_or_element, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)
 * 
 */
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":375
 *         return XPathElementEvaluator(
 *             etree_or_element, namespaces=namespaces,
 *             extensions=extensions, regexp=regexp, smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__regexp), __pyx_v_regexp) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPathElementEvaluator)), __pyx_t_4, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  __pyx_L6:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.XPathEvaluator");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_etree_or_element);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_regexp);
  __Pyx_DECREF(__pyx_v_smart_strings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":393
 *     cdef readonly object path
 * 
 *     def __init__(self, path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
 *                  regexp=True, smart_strings=True):
 *         cdef xpath.xmlXPathContext* xpathCtxt
 */

static int __pyx_pf_4lxml_5etree_5XPath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_5XPath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  xmlXPathContext *__pyx_v_xpathCtxt;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__path,&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_282;
    values[4] = __pyx_k_283;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_path = values[0];
    __pyx_v_namespaces = values[1];
    __pyx_v_extensions = values[2];
    __pyx_v_regexp = values[3];
    __pyx_v_smart_strings = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_path = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_namespaces = ((PyObject *)Py_None);
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_282;
    __pyx_v_smart_strings = __pyx_k_283;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XPath.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":396
 *                  regexp=True, smart_strings=True):
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,             # <<<<<<<<<<<<<<
 *                                      regexp, smart_strings)
 *         self.path = path
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XPathEvaluatorBase)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":397
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 *                                      regexp, smart_strings)             # <<<<<<<<<<<<<<
 *         self.path = path
 *         path = _utf8(path)
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_regexp);
  __Pyx_GIVEREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_smart_strings);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_smart_strings);
  __Pyx_GIVEREF(__pyx_v_smart_strings);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":398
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 *                                      regexp, smart_strings)
 *         self.path = path             # <<<<<<<<<<<<<<
 *         path = _utf8(path)
 *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->path);
  __Pyx_DECREF(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->path);
  ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->path = __pyx_v_path;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":399
 *                                      regexp, smart_strings)
 *         self.path = path
 *         path = _utf8(path)             # <<<<<<<<<<<<<<
 *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
 *         if xpathCtxt is NULL:
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_v_path);
  __pyx_v_path = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":400
 *         self.path = path
 *         path = _utf8(path)
 *         xpathCtxt = xpath.xmlXPathNewContext(NULL)             # <<<<<<<<<<<<<<
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()
 */
  __pyx_v_xpathCtxt = xmlXPathNewContext(NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":401
 *         path = _utf8(path)
 *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
 *         if xpathCtxt is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         self.set_context(xpathCtxt)
 */
  __pyx_t_4 = (__pyx_v_xpathCtxt == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":402
 *         xpathCtxt = xpath.xmlXPathNewContext(NULL)
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         self.set_context(xpathCtxt)
 *         self._error_log.connect()
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":403
 *         if xpathCtxt is NULL:
 *             python.PyErr_NoMemory()
 *         self.set_context(xpathCtxt)             # <<<<<<<<<<<<<<
 *         self._error_log.connect()
 *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _cstr(path))
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base.set_context(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathCtxt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":404
 *             python.PyErr_NoMemory()
 *         self.set_context(xpathCtxt)
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _cstr(path))
 *         self._error_log.disconnect()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":405
 *         self.set_context(xpathCtxt)
 *         self._error_log.connect()
 *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _cstr(path))             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 *         if self._xpath is NULL:
 */
  ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->_xpath = xmlXPathCtxtCompile(__pyx_v_xpathCtxt, PyString_AS_STRING(__pyx_v_path));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":406
 *         self._error_log.connect()
 *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _cstr(path))
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         if self._xpath is NULL:
 *             self._raise_parse_error()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":407
 *         self._xpath = xpath.xmlXPathCtxtCompile(xpathCtxt, _cstr(path))
 *         self._error_log.disconnect()
 *         if self._xpath is NULL:             # <<<<<<<<<<<<<<
 *             self._raise_parse_error()
 * 
 */
  __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->_xpath == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":408
 *         self._error_log.disconnect()
 *         if self._xpath is NULL:
 *             self._raise_parse_error()             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, _etree_or_element, **_variables):
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._raise_parse_error(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.XPath.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_regexp);
  __Pyx_DECREF(__pyx_v_smart_strings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":410
 *             self._raise_parse_error()
 * 
 *     def __call__(self, _etree_or_element, **_variables):             # <<<<<<<<<<<<<<
 *         u"__call__(self, _etree_or_element, **_variables)"
 *         cdef xpath.xmlXPathObject*  xpathObj
 */

static PyObject *__pyx_pf_4lxml_5etree_5XPath___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_5XPath___call__[] = "__call__(self, _etree_or_element, **_variables)";
static PyObject *__pyx_pf_4lxml_5etree_5XPath___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__etree_or_element = 0;
  PyObject *__pyx_v__variables = 0;
  xmlXPathObject *__pyx_v_xpathObj;
  struct LxmlDocument *__pyx_v_document;
  struct LxmlElement *__pyx_v_element;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___etree_or_element,0};
  __Pyx_RefNannySetupContext("__call__");
  __pyx_v__variables = PyDict_New(); if (unlikely(!__pyx_v__variables)) return NULL;
  __Pyx_GOTREF(__pyx_v__variables);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___etree_or_element);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__etree_or_element = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__etree_or_element = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_AddTraceback("lxml.etree.XPath.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v__etree_or_element);
  __pyx_v_document = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_element = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":416
 *         cdef _Element element
 * 
 *         document = _documentOrRaise(_etree_or_element)             # <<<<<<<<<<<<<<
 *         element  = _rootNodeOrRaise(_etree_or_element)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v__etree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_document));
  __pyx_v_document = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":417
 * 
 *         document = _documentOrRaise(_etree_or_element)
 *         element  = _rootNodeOrRaise(_etree_or_element)             # <<<<<<<<<<<<<<
 * 
 *         self._lock()
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v__etree_or_element)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_element));
  __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":419
 *         element  = _rootNodeOrRaise(_etree_or_element)
 * 
 *         self._lock()             # <<<<<<<<<<<<<<
 *         self._error_log.connect()
 *         self._xpathCtxt.doc  = document._c_doc
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._lock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":420
 * 
 *         self._lock()
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         self._xpathCtxt.doc  = document._c_doc
 *         self._xpathCtxt.node = element._c_node
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":421
 *         self._lock()
 *         self._error_log.connect()
 *         self._xpathCtxt.doc  = document._c_doc             # <<<<<<<<<<<<<<
 *         self._xpathCtxt.node = element._c_node
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._xpathCtxt->doc = __pyx_v_document->_c_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":422
 *         self._error_log.connect()
 *         self._xpathCtxt.doc  = document._c_doc
 *         self._xpathCtxt.node = element._c_node             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._xpathCtxt->node = __pyx_v_element->_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":424
 *         self._xpathCtxt.node = element._c_node
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self._context.register_context(document)
 *             self._context.registerVariables(_variables)
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":425
 * 
 *         try:
 *             self._context.register_context(document)             # <<<<<<<<<<<<<<
 *             self._context.registerVariables(_variables)
 *             with nogil:
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->register_context(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context, __pyx_v_document); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":426
 *         try:
 *             self._context.register_context(document)
 *             self._context.registerVariables(_variables)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 xpathObj = xpath.xmlXPathCompiledEval(
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->registerVariables(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context, __pyx_v__variables); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":427
 *             self._context.register_context(document)
 *             self._context.registerVariables(_variables)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xpathObj = xpath.xmlXPathCompiledEval(
 *                     self._xpath, self._xpathCtxt)
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":429
 *             with nogil:
 *                 xpathObj = xpath.xmlXPathCompiledEval(
 *                     self._xpath, self._xpathCtxt)             # <<<<<<<<<<<<<<
 *             result = self._handle_result(xpathObj, document)
 *         finally:
 */
        __pyx_v_xpathObj = xmlXPathCompiledEval(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->_xpath, ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._xpathCtxt);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":427
 *             self._context.register_context(document)
 *             self._context.registerVariables(_variables)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xpathObj = xpath.xmlXPathCompiledEval(
 *                     self._xpath, self._xpathCtxt)
 */
        Py_BLOCK_THREADS
      }
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":430
 *                 xpathObj = xpath.xmlXPathCompiledEval(
 *                     self._xpath, self._xpathCtxt)
 *             result = self._handle_result(xpathObj, document)             # <<<<<<<<<<<<<<
 *         finally:
 *             self._error_log.disconnect()
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._handle_result(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self), __pyx_v_xpathObj, __pyx_v_document); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L7;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":432
 *             result = self._handle_result(xpathObj, document)
 *         finally:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             self._context.unregister_context()
 *             self._unlock()
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":433
 *         finally:
 *             self._error_log.disconnect()
 *             self._context.unregister_context()             # <<<<<<<<<<<<<<
 *             self._unlock()
 *         return result
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XPathContext *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context->__pyx_base.__pyx_vtab)->unregister_context(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base._context); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":434
 *             self._error_log.disconnect()
 *             self._context.unregister_context()
 *             self._unlock()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    ((struct __pyx_vtabstruct_4lxml_5etree_XPath *)((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->__pyx_base.__pyx_vtab)->__pyx_base._unlock(((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)__pyx_v_self));
    goto __pyx_L13;
    __pyx_L12_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L13:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":435
 *             self._context.unregister_context()
 *             self._unlock()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XPath.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v__variables);
  __Pyx_DECREF((PyObject *)__pyx_v_document);
  __Pyx_DECREF((PyObject *)__pyx_v_element);
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v__etree_or_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":437
 *         return result
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._xpath is not NULL:
 *             xpath.xmlXPathFreeCompExpr(self._xpath)
 */

static void __pyx_pf_4lxml_5etree_5XPath___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_5XPath___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":438
 * 
 *     def __dealloc__(self):
 *         if self._xpath is not NULL:             # <<<<<<<<<<<<<<
 *             xpath.xmlXPathFreeCompExpr(self._xpath)
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->_xpath != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":439
 *     def __dealloc__(self):
 *         if self._xpath is not NULL:
 *             xpath.xmlXPathFreeCompExpr(self._xpath)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
    xmlXPathFreeCompExpr(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->_xpath);
    goto __pyx_L5;
  }
  __pyx_L5:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":441
 *             xpath.xmlXPathFreeCompExpr(self._xpath)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.path
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_5XPath___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_5XPath___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannySetupContext("__repr__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":442
 * 
 *     def __repr__(self):
 *         return self.path             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->path);
  __pyx_r = ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_v_self)->path;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":459
 *     you pass ``smart_strings=False``.
 *     """
 *     def __init__(self, path, *, extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         path, namespaces = self._nsextract_path(path)
 *         XPath.__init__(self, path, namespaces=namespaces,
 */

static int __pyx_pf_4lxml_5etree_7ETXPath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_7ETXPath___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_smart_strings = 0;
  PyObject *__pyx_v_namespaces;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__path,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_284;
    values[3] = __pyx_k_285;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__path);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__smart_strings);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_path = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_regexp = values[2];
    __pyx_v_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_path = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_284;
    __pyx_v_smart_strings = __pyx_k_285;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.ETXPath.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF(__pyx_v_path);
  __pyx_v_namespaces = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":460
 *     """
 *     def __init__(self, path, *, extensions=None, regexp=True, smart_strings=True):
 *         path, namespaces = self._nsextract_path(path)             # <<<<<<<<<<<<<<
 *         XPath.__init__(self, path, namespaces=namespaces,
 *                        extensions=extensions, regexp=regexp,
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree_ETXPath *)((struct __pyx_obj_4lxml_5etree_ETXPath *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_vtab)->_nsextract_path(((struct __pyx_obj_4lxml_5etree_ETXPath *)__pyx_v_self), __pyx_v_path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
    PyObject* tuple = __pyx_t_1;
    __pyx_t_2 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_namespaces);
    __pyx_v_namespaces = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_UnpackItem(__pyx_t_4, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_4, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_EndUnpack(__pyx_t_4) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_v_path);
    __pyx_v_path = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_v_namespaces);
    __pyx_v_namespaces = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":461
 *     def __init__(self, path, *, extensions=None, regexp=True, smart_strings=True):
 *         path, namespaces = self._nsextract_path(path)
 *         XPath.__init__(self, path, namespaces=namespaces,             # <<<<<<<<<<<<<<
 *                        extensions=extensions, regexp=regexp,
 *                        smart_strings=smart_strings)
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPath)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__namespaces), __pyx_v_namespaces) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":462
 *         path, namespaces = self._nsextract_path(path)
 *         XPath.__init__(self, path, namespaces=namespaces,
 *                        extensions=extensions, regexp=regexp,             # <<<<<<<<<<<<<<
 *                        smart_strings=smart_strings)
 * 
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__extensions), __pyx_v_extensions) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__regexp), __pyx_v_regexp) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":463
 *         XPath.__init__(self, path, namespaces=namespaces,
 *                        extensions=extensions, regexp=regexp,
 *                        smart_strings=smart_strings)             # <<<<<<<<<<<<<<
 * 
 *     cdef _nsextract_path(self, path):
 */
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__smart_strings), __pyx_v_smart_strings) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.ETXPath.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":465
 *                        smart_strings=smart_strings)
 * 
 *     cdef _nsextract_path(self, path):             # <<<<<<<<<<<<<<
 *         # replace {namespaces} by new prefixes
 *         cdef dict namespaces = {}
 */

static  PyObject *__pyx_f_4lxml_5etree_7ETXPath__nsextract_path(struct __pyx_obj_4lxml_5etree_ETXPath *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_namespace_defs = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_path_utf;
  PyObject *__pyx_v_stripped_path;
  PyObject *__pyx_v_namespace_def;
  PyObject *__pyx_v_prefix;
  PyObject *__pyx_v_namespace;
  PyObject *__pyx_v_prefix_str;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  __Pyx_RefNannySetupContext("_nsextract_path");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_v_path_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_stripped_path = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_namespace_def = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_namespace = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_prefix_str = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":467
 *     cdef _nsextract_path(self, path):
 *         # replace {namespaces} by new prefixes
 *         cdef dict namespaces = {}             # <<<<<<<<<<<<<<
 *         cdef list namespace_defs = []
 *         cdef int i
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_namespaces = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":468
 *         # replace {namespaces} by new prefixes
 *         cdef dict namespaces = {}
 *         cdef list namespace_defs = []             # <<<<<<<<<<<<<<
 *         cdef int i
 *         path_utf = _utf8(path)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_namespace_defs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":470
 *         cdef list namespace_defs = []
 *         cdef int i
 *         path_utf = _utf8(path)             # <<<<<<<<<<<<<<
 *         stripped_path = _replace_strings('', path_utf) # remove string literals
 *         i = 1
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_v_path_utf);
  __pyx_v_path_utf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":471
 *         cdef int i
 *         path_utf = _utf8(path)
 *         stripped_path = _replace_strings('', path_utf) # remove string literals             # <<<<<<<<<<<<<<
 *         i = 1
 *         for namespace_def in _find_namespaces(stripped_path):
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_14));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_14));
  __Pyx_INCREF(__pyx_v_path_utf);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_path_utf);
  __Pyx_GIVEREF(__pyx_v_path_utf);
  __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree__replace_strings, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_stripped_path);
  __pyx_v_stripped_path = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":472
 *         path_utf = _utf8(path)
 *         stripped_path = _replace_strings('', path_utf) # remove string literals
 *         i = 1             # <<<<<<<<<<<<<<
 *         for namespace_def in _find_namespaces(stripped_path):
 *             if namespace_def not in namespace_defs:
 */
  __pyx_v_i = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":473
 *         stripped_path = _replace_strings('', path_utf) # remove string literals
 *         i = 1
 *         for namespace_def in _find_namespaces(stripped_path):             # <<<<<<<<<<<<<<
 *             if namespace_def not in namespace_defs:
 *                 prefix = python.PyString_FromFormat("__xpp%02d", i)
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_stripped_path);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_stripped_path);
  __Pyx_GIVEREF(__pyx_v_stripped_path);
  __pyx_t_1 = PyObject_Call(__pyx_v_4lxml_5etree__find_namespaces, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++;
    } else {
      __pyx_t_1 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_1) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_v_namespace_def);
    __pyx_v_namespace_def = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":474
 *         i = 1
 *         for namespace_def in _find_namespaces(stripped_path):
 *             if namespace_def not in namespace_defs:             # <<<<<<<<<<<<<<
 *                 prefix = python.PyString_FromFormat("__xpp%02d", i)
 *                 i += 1
 */
    __pyx_t_4 = (__Pyx_NegateNonNeg(PySequence_Contains(((PyObject *)__pyx_v_namespace_defs), __pyx_v_namespace_def))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":475
 *         for namespace_def in _find_namespaces(stripped_path):
 *             if namespace_def not in namespace_defs:
 *                 prefix = python.PyString_FromFormat("__xpp%02d", i)             # <<<<<<<<<<<<<<
 *                 i += 1
 *                 namespace_defs.append(namespace_def)
 */
      __pyx_t_1 = PyString_FromFormat(__pyx_k_286, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_prefix);
      __pyx_v_prefix = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":476
 *             if namespace_def not in namespace_defs:
 *                 prefix = python.PyString_FromFormat("__xpp%02d", i)
 *                 i += 1             # <<<<<<<<<<<<<<
 *                 namespace_defs.append(namespace_def)
 *                 namespace = namespace_def[1:-1] # remove '{}'
 */
      __pyx_v_i += 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":477
 *                 prefix = python.PyString_FromFormat("__xpp%02d", i)
 *                 i += 1
 *                 namespace_defs.append(namespace_def)             # <<<<<<<<<<<<<<
 *                 namespace = namespace_def[1:-1] # remove '{}'
 *                 namespace = python.PyUnicode_FromEncodedObject(
 */
      if (unlikely(__pyx_v_namespace_defs == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[17]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_5 = PyList_Append(((PyObject *)__pyx_v_namespace_defs), __pyx_v_namespace_def); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":478
 *                 i += 1
 *                 namespace_defs.append(namespace_def)
 *                 namespace = namespace_def[1:-1] # remove '{}'             # <<<<<<<<<<<<<<
 *                 namespace = python.PyUnicode_FromEncodedObject(
 *                     namespace, 'UTF-8', 'strict')
 */
      __pyx_t_1 = PySequence_GetSlice(__pyx_v_namespace_def, 1, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_namespace);
      __pyx_v_namespace = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":480
 *                 namespace = namespace_def[1:-1] # remove '{}'
 *                 namespace = python.PyUnicode_FromEncodedObject(
 *                     namespace, 'UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *                 namespaces[
 *                     python.PyUnicode_FromEncodedObject(prefix, 'UTF-8', 'strict')
 */
      __pyx_t_1 = PyUnicode_FromEncodedObject(__pyx_v_namespace, __pyx_k_20, __pyx_k__strict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_namespace);
      __pyx_v_namespace = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":482
 *                     namespace, 'UTF-8', 'strict')
 *                 namespaces[
 *                     python.PyUnicode_FromEncodedObject(prefix, 'UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *                     ] = namespace
 *                 prefix_str = prefix + ':'
 */
      __pyx_t_1 = PyUnicode_FromEncodedObject(__pyx_v_prefix, __pyx_k_20, __pyx_k__strict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(((PyObject *)__pyx_v_namespaces), __pyx_t_1, __pyx_v_namespace) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":484
 *                     python.PyUnicode_FromEncodedObject(prefix, 'UTF-8', 'strict')
 *                     ] = namespace
 *                 prefix_str = prefix + ':'             # <<<<<<<<<<<<<<
 *                 # FIXME: this also replaces {namespaces} within strings!
 *                 path_utf = path_utf.replace(namespace_def, prefix_str)
 */
      __pyx_t_1 = PyNumber_Add(__pyx_v_prefix, ((PyObject *)__pyx_kp_s_287)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_prefix_str);
      __pyx_v_prefix_str = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":486
 *                 prefix_str = prefix + ':'
 *                 # FIXME: this also replaces {namespaces} within strings!
 *                 path_utf = path_utf.replace(namespace_def, prefix_str)             # <<<<<<<<<<<<<<
 *         path = python.PyUnicode_FromEncodedObject(path_utf, 'UTF-8', 'strict')
 *         return path, namespaces
 */
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_path_utf, __pyx_n_s__replace); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_namespace_def);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_namespace_def);
      __Pyx_GIVEREF(__pyx_v_namespace_def);
      __Pyx_INCREF(__pyx_v_prefix_str);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_prefix_str);
      __Pyx_GIVEREF(__pyx_v_prefix_str);
      __pyx_t_7 = PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_path_utf);
      __pyx_v_path_utf = __pyx_t_7;
      __pyx_t_7 = 0;
      goto __pyx_L5;
    }
    __pyx_L5:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":487
 *                 # FIXME: this also replaces {namespaces} within strings!
 *                 path_utf = path_utf.replace(namespace_def, prefix_str)
 *         path = python.PyUnicode_FromEncodedObject(path_utf, 'UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         return path, namespaces
 */
  __pyx_t_2 = PyUnicode_FromEncodedObject(__pyx_v_path_utf, __pyx_k_20, __pyx_k__strict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_path);
  __pyx_v_path = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":488
 *                 path_utf = path_utf.replace(namespace_def, prefix_str)
 *         path = python.PyUnicode_FromEncodedObject(path_utf, 'UTF-8', 'strict')
 *         return path, namespaces             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_path);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_path);
  __Pyx_GIVEREF(__pyx_v_path);
  __Pyx_INCREF(((PyObject *)__pyx_v_namespaces));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_namespaces));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_namespaces));
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.ETXPath._nsextract_path");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_namespaces);
  __Pyx_XDECREF(__pyx_v_namespace_defs);
  __Pyx_DECREF(__pyx_v_path_utf);
  __Pyx_DECREF(__pyx_v_stripped_path);
  __Pyx_DECREF(__pyx_v_namespace_def);
  __Pyx_DECREF(__pyx_v_prefix);
  __Pyx_DECREF(__pyx_v_namespace);
  __Pyx_DECREF(__pyx_v_prefix_str);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":54
 *     cdef _BaseParser _parser
 * 
 *     cdef _XSLTResolverContext _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _XSLTResolverContext context
 *         context = _XSLTResolverContext()
 */

static  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":56
 *     cdef _XSLTResolverContext _copy(self):
 *         cdef _XSLTResolverContext context
 *         context = _XSLTResolverContext()             # <<<<<<<<<<<<<<
 *         _initXSLTResolverContext(context, self._parser)
 *         context._c_style_doc = self._c_style_doc
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTResolverContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":57
 *         cdef _XSLTResolverContext context
 *         context = _XSLTResolverContext()
 *         _initXSLTResolverContext(context, self._parser)             # <<<<<<<<<<<<<<
 *         context._c_style_doc = self._c_style_doc
 *         return context
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__initXSLTResolverContext(__pyx_v_context, __pyx_v_self->_parser); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":58
 *         context = _XSLTResolverContext()
 *         _initXSLTResolverContext(context, self._parser)
 *         context._c_style_doc = self._c_style_doc             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __pyx_v_context->_c_style_doc = __pyx_v_self->_c_style_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":59
 *         _initXSLTResolverContext(context, self._parser)
 *         context._c_style_doc = self._c_style_doc
 *         return context             # <<<<<<<<<<<<<<
 * 
 * cdef _initXSLTResolverContext(_XSLTResolverContext context,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = __pyx_v_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTResolverContext._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":61
 *         return context
 * 
 * cdef _initXSLTResolverContext(_XSLTResolverContext context,             # <<<<<<<<<<<<<<
 *                               _BaseParser parser):
 *     _initResolverContext(context, parser.resolvers)
 */

static  PyObject *__pyx_f_4lxml_5etree__initXSLTResolverContext(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_context, struct __pyx_obj_4lxml_5etree__BaseParser *__pyx_v_parser) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_initXSLTResolverContext");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":63
 * cdef _initXSLTResolverContext(_XSLTResolverContext context,
 *                               _BaseParser parser):
 *     _initResolverContext(context, parser.resolvers)             # <<<<<<<<<<<<<<
 *     context._parser = parser
 *     context._c_style_doc = NULL
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__resolvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ResolverRegistry))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __pyx_f_4lxml_5etree__initResolverContext(((struct __pyx_obj_4lxml_5etree__ResolverContext *)__pyx_v_context), ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":64
 *                               _BaseParser parser):
 *     _initResolverContext(context, parser.resolvers)
 *     context._parser = parser             # <<<<<<<<<<<<<<
 *     context._c_style_doc = NULL
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_parser));
  __Pyx_GOTREF(__pyx_v_context->_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_parser));
  __pyx_v_context->_parser = __pyx_v_parser;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":65
 *     _initResolverContext(context, parser.resolvers)
 *     context._parser = parser
 *     context._c_style_doc = NULL             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _xslt_resolve_from_python(char* c_uri, void* c_context,
 */
  __pyx_v_context->_c_style_doc = NULL;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._initXSLTResolverContext");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":67
 *     context._c_style_doc = NULL
 * 
 * cdef xmlDoc* _xslt_resolve_from_python(char* c_uri, void* c_context,             # <<<<<<<<<<<<<<
 *                                        int parse_options, int* error) with gil:
 *     # call the Python document loaders
 */

static  xmlDoc *__pyx_f_4lxml_5etree__xslt_resolve_from_python(char *__pyx_v_c_uri, void *__pyx_v_c_context, int __pyx_v_parse_options, int *__pyx_v_error) {
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *__pyx_v_resolvers;
  struct __pyx_obj_4lxml_5etree__InputDocument *__pyx_v_doc_ref;
  xmlDoc *__pyx_v_c_doc;
  PyObject *__pyx_v_uri;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  xmlDoc *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  xmlDoc *__pyx_t_8;
  xmlDoc *__pyx_t_9;
  xmlDoc *__pyx_t_10;
  xmlDoc *__pyx_t_11;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_xslt_resolve_from_python");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_uri = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":75
 *     cdef xmlDoc* c_doc
 * 
 *     error[0] = 0             # <<<<<<<<<<<<<<
 *     context = <_XSLTResolverContext>c_context
 * 
 */
  (__pyx_v_error[0]) = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":76
 * 
 *     error[0] = 0
 *     context = <_XSLTResolverContext>c_context             # <<<<<<<<<<<<<<
 * 
 *     # shortcut if we resolve the stylesheet itself
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_c_context)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_c_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":79
 * 
 *     # shortcut if we resolve the stylesheet itself
 *     c_doc = context._c_style_doc             # <<<<<<<<<<<<<<
 *     if c_doc is not NULL and c_doc.URL is not NULL:
 *         if cstd.strcmp(c_uri, c_doc.URL) == 0:
 */
  __pyx_v_c_doc = __pyx_v_context->_c_style_doc;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":80
 *     # shortcut if we resolve the stylesheet itself
 *     c_doc = context._c_style_doc
 *     if c_doc is not NULL and c_doc.URL is not NULL:             # <<<<<<<<<<<<<<
 *         if cstd.strcmp(c_uri, c_doc.URL) == 0:
 *             return _copyDoc(c_doc, 1)
 */
  __pyx_t_1 = (__pyx_v_c_doc != NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_c_doc->URL != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":81
 *     c_doc = context._c_style_doc
 *     if c_doc is not NULL and c_doc.URL is not NULL:
 *         if cstd.strcmp(c_uri, c_doc.URL) == 0:             # <<<<<<<<<<<<<<
 *             return _copyDoc(c_doc, 1)
 * 
 */
    __pyx_t_3 = (strcmp(__pyx_v_c_uri, __pyx_v_c_doc->URL) == 0);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":82
 *     if c_doc is not NULL and c_doc.URL is not NULL:
 *         if cstd.strcmp(c_uri, c_doc.URL) == 0:
 *             return _copyDoc(c_doc, 1)             # <<<<<<<<<<<<<<
 * 
 *     # delegate to the Python resolvers
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_doc, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_r = __pyx_t_4;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":85
 * 
 *     # delegate to the Python resolvers
 *     try:             # <<<<<<<<<<<<<<
 *         resolvers = context._resolvers
 *         if cstd.strncmp('string://__STRING__XSLT__/', c_uri, 26) == 0:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":86
 *     # delegate to the Python resolvers
 *     try:
 *         resolvers = context._resolvers             # <<<<<<<<<<<<<<
 *         if cstd.strncmp('string://__STRING__XSLT__/', c_uri, 26) == 0:
 *             c_uri += 26
 */
      __Pyx_INCREF(((PyObject *)__pyx_v_context->__pyx_base._resolvers));
      __Pyx_DECREF(((PyObject *)__pyx_v_resolvers));
      __pyx_v_resolvers = __pyx_v_context->__pyx_base._resolvers;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":87
 *     try:
 *         resolvers = context._resolvers
 *         if cstd.strncmp('string://__STRING__XSLT__/', c_uri, 26) == 0:             # <<<<<<<<<<<<<<
 *             c_uri += 26
 *         uri = _decodeFilename(c_uri)
 */
      __pyx_t_3 = (strncmp(__pyx_k_288, __pyx_v_c_uri, 26) == 0);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":88
 *         resolvers = context._resolvers
 *         if cstd.strncmp('string://__STRING__XSLT__/', c_uri, 26) == 0:
 *             c_uri += 26             # <<<<<<<<<<<<<<
 *         uri = _decodeFilename(c_uri)
 *         doc_ref = resolvers.resolve(uri, None, context)
 */
        __pyx_v_c_uri += 26;
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":89
 *         if cstd.strncmp('string://__STRING__XSLT__/', c_uri, 26) == 0:
 *             c_uri += 26
 *         uri = _decodeFilename(c_uri)             # <<<<<<<<<<<<<<
 *         doc_ref = resolvers.resolve(uri, None, context)
 * 
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_uri); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_v_uri);
      __pyx_v_uri = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":90
 *             c_uri += 26
 *         uri = _decodeFilename(c_uri)
 *         doc_ref = resolvers.resolve(uri, None, context)             # <<<<<<<<<<<<<<
 * 
 *         c_doc = NULL
 */
      __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_resolvers), __pyx_n_s__resolve); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_uri);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_uri);
      __Pyx_GIVEREF(__pyx_v_uri);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_6, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_INCREF(((PyObject *)__pyx_v_context));
      PyTuple_SET_ITEM(__pyx_t_6, 2, ((PyObject *)__pyx_v_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
      __pyx_t_7 = PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__InputDocument))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(((PyObject *)__pyx_v_doc_ref));
      __pyx_v_doc_ref = ((struct __pyx_obj_4lxml_5etree__InputDocument *)__pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":92
 *         doc_ref = resolvers.resolve(uri, None, context)
 * 
 *         c_doc = NULL             # <<<<<<<<<<<<<<
 *         if doc_ref is not None:
 *             if doc_ref._type == PARSER_DATA_STRING:
 */
      __pyx_v_c_doc = NULL;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":93
 * 
 *         c_doc = NULL
 *         if doc_ref is not None:             # <<<<<<<<<<<<<<
 *             if doc_ref._type == PARSER_DATA_STRING:
 *                 c_doc = _parseDoc(
 */
      __pyx_t_3 = (((PyObject *)__pyx_v_doc_ref) != Py_None);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":94
 *         c_doc = NULL
 *         if doc_ref is not None:
 *             if doc_ref._type == PARSER_DATA_STRING:             # <<<<<<<<<<<<<<
 *                 c_doc = _parseDoc(
 *                     doc_ref._data_bytes, doc_ref._filename, context._parser)
 */
        __pyx_t_3 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_STRING);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":96
 *             if doc_ref._type == PARSER_DATA_STRING:
 *                 c_doc = _parseDoc(
 *                     doc_ref._data_bytes, doc_ref._filename, context._parser)             # <<<<<<<<<<<<<<
 *             elif doc_ref._type == PARSER_DATA_FILENAME:
 *                 c_doc = _parseDocFromFile(doc_ref._filename, context._parser)
 */
          __pyx_t_8 = __pyx_f_4lxml_5etree__parseDoc(__pyx_v_doc_ref->_data_bytes, __pyx_v_doc_ref->_filename, __pyx_v_context->_parser); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __pyx_v_c_doc = __pyx_t_8;
          goto __pyx_L15;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":97
 *                 c_doc = _parseDoc(
 *                     doc_ref._data_bytes, doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_FILENAME:             # <<<<<<<<<<<<<<
 *                 c_doc = _parseDocFromFile(doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_FILE:
 */
        __pyx_t_3 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_FILENAME);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":98
 *                     doc_ref._data_bytes, doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_FILENAME:
 *                 c_doc = _parseDocFromFile(doc_ref._filename, context._parser)             # <<<<<<<<<<<<<<
 *             elif doc_ref._type == PARSER_DATA_FILE:
 *                 c_doc = _parseDocFromFilelike(
 */
          __pyx_t_9 = __pyx_f_4lxml_5etree__parseDocFromFile(__pyx_v_doc_ref->_filename, __pyx_v_context->_parser); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __pyx_v_c_doc = __pyx_t_9;
          goto __pyx_L15;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":99
 *             elif doc_ref._type == PARSER_DATA_FILENAME:
 *                 c_doc = _parseDocFromFile(doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_FILE:             # <<<<<<<<<<<<<<
 *                 c_doc = _parseDocFromFilelike(
 *                     doc_ref._file, doc_ref._filename, context._parser)
 */
        __pyx_t_3 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_FILE);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":101
 *             elif doc_ref._type == PARSER_DATA_FILE:
 *                 c_doc = _parseDocFromFilelike(
 *                     doc_ref._file, doc_ref._filename, context._parser)             # <<<<<<<<<<<<<<
 *             elif doc_ref._type == PARSER_DATA_EMPTY:
 *                 c_doc = _newXMLDoc()
 */
          __pyx_t_10 = __pyx_f_4lxml_5etree__parseDocFromFilelike(__pyx_v_doc_ref->_file, __pyx_v_doc_ref->_filename, __pyx_v_context->_parser); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __pyx_v_c_doc = __pyx_t_10;
          goto __pyx_L15;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":102
 *                 c_doc = _parseDocFromFilelike(
 *                     doc_ref._file, doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_EMPTY:             # <<<<<<<<<<<<<<
 *                 c_doc = _newXMLDoc()
 *             if c_doc is not NULL and c_doc.URL is NULL:
 */
        __pyx_t_3 = (__pyx_v_doc_ref->_type == __pyx_e_4lxml_5etree_PARSER_DATA_EMPTY);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":103
 *                     doc_ref._file, doc_ref._filename, context._parser)
 *             elif doc_ref._type == PARSER_DATA_EMPTY:
 *                 c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
 *             if c_doc is not NULL and c_doc.URL is NULL:
 *                 c_doc.URL = tree.xmlStrdup(c_uri)
 */
          __pyx_t_11 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __pyx_v_c_doc = __pyx_t_11;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":104
 *             elif doc_ref._type == PARSER_DATA_EMPTY:
 *                 c_doc = _newXMLDoc()
 *             if c_doc is not NULL and c_doc.URL is NULL:             # <<<<<<<<<<<<<<
 *                 c_doc.URL = tree.xmlStrdup(c_uri)
 *         return c_doc
 */
        __pyx_t_3 = (__pyx_v_c_doc != NULL);
        if (__pyx_t_3) {
          __pyx_t_1 = (__pyx_v_c_doc->URL == NULL);
          __pyx_t_2 = __pyx_t_1;
        } else {
          __pyx_t_2 = __pyx_t_3;
        }
        if (__pyx_t_2) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":105
 *                 c_doc = _newXMLDoc()
 *             if c_doc is not NULL and c_doc.URL is NULL:
 *                 c_doc.URL = tree.xmlStrdup(c_uri)             # <<<<<<<<<<<<<<
 *         return c_doc
 *     except:
 */
          __pyx_v_c_doc->URL = xmlStrdup(__pyx_v_c_uri);
          goto __pyx_L16;
        }
        __pyx_L16:;
        goto __pyx_L14;
      }
      __pyx_L14:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":106
 *             if c_doc is not NULL and c_doc.URL is NULL:
 *                 c_doc.URL = tree.xmlStrdup(c_uri)
 *         return c_doc             # <<<<<<<<<<<<<<
 *     except:
 *         context._store_raised()
 */
      __pyx_r = __pyx_v_c_doc;
      goto __pyx_L9_try_return;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L9_try_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":107
 *                 c_doc.URL = tree.xmlStrdup(c_uri)
 *         return c_doc
 *     except:             # <<<<<<<<<<<<<<
 *         context._store_raised()
 *         error[0] = 1
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._xslt_resolve_from_python");
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":108
 *         return c_doc
 *     except:
 *         context._store_raised()             # <<<<<<<<<<<<<<
 *         error[0] = 1
 *         return NULL
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_context));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":109
 *     except:
 *         context._store_raised()
 *         error[0] = 1             # <<<<<<<<<<<<<<
 *         return NULL
 * 
 */
      (__pyx_v_error[0]) = 1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":110
 *         context._store_raised()
 *         error[0] = 1
 *         return NULL             # <<<<<<<<<<<<<<
 * 
 * cdef void _xslt_store_resolver_exception(char* c_uri, void* context,
 */
      __pyx_r = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L8_except_return;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("lxml.etree._xslt_resolve_from_python");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_resolvers);
  __Pyx_DECREF((PyObject *)__pyx_v_doc_ref);
  __Pyx_DECREF(__pyx_v_uri);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":112
 *         return NULL
 * 
 * cdef void _xslt_store_resolver_exception(char* c_uri, void* context,             # <<<<<<<<<<<<<<
 *                                          xslt.xsltLoadType c_type) with gil:
 *     try:
 */

static  void __pyx_f_4lxml_5etree__xslt_store_resolver_exception(char *__pyx_v_c_uri, void *__pyx_v_context, xsltLoadType __pyx_v_c_type) {
  PyObject *__pyx_v_message;
  PyObject *__pyx_v_exception;
  PyObject *__pyx_v_e;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_xslt_store_resolver_exception");
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_exception = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_e = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":114
 * cdef void _xslt_store_resolver_exception(char* c_uri, void* context,
 *                                          xslt.xsltLoadType c_type) with gil:
 *     try:             # <<<<<<<<<<<<<<
 *         message = u"Cannot resolve URI %s" % _decodeFilename(c_uri)
 *         if c_type == xslt.XSLT_LOAD_DOCUMENT:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":115
 *                                          xslt.xsltLoadType c_type) with gil:
 *     try:
 *         message = u"Cannot resolve URI %s" % _decodeFilename(c_uri)             # <<<<<<<<<<<<<<
 *         if c_type == xslt.XSLT_LOAD_DOCUMENT:
 *             exception = XSLTApplyError(message)
 */
      __pyx_t_1 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_c_uri); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_289), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":116
 *     try:
 *         message = u"Cannot resolve URI %s" % _decodeFilename(c_uri)
 *         if c_type == xslt.XSLT_LOAD_DOCUMENT:             # <<<<<<<<<<<<<<
 *             exception = XSLTApplyError(message)
 *         else:
 */
      __pyx_t_3 = (__pyx_v_c_type == XSLT_LOAD_DOCUMENT);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":117
 *         message = u"Cannot resolve URI %s" % _decodeFilename(c_uri)
 *         if c_type == xslt.XSLT_LOAD_DOCUMENT:
 *             exception = XSLTApplyError(message)             # <<<<<<<<<<<<<<
 *         else:
 *             exception = XSLTParseError(message)
 */
        __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTApplyError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_message);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_message);
        __Pyx_GIVEREF(__pyx_v_message);
        __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_v_exception);
        __pyx_v_exception = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L11;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":119
 *             exception = XSLTApplyError(message)
 *         else:
 *             exception = XSLTParseError(message)             # <<<<<<<<<<<<<<
 *         (<_XSLTResolverContext>context)._store_exception(exception)
 *     except Exception, e:
 */
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_message);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_message);
        __Pyx_GIVEREF(__pyx_v_message);
        __pyx_t_2 = PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_v_exception);
        __pyx_v_exception = __pyx_t_2;
        __pyx_t_2 = 0;
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":120
 *         else:
 *             exception = XSLTParseError(message)
 *         (<_XSLTResolverContext>context)._store_exception(exception)             # <<<<<<<<<<<<<<
 *     except Exception, e:
 *         (<_XSLTResolverContext>context)._store_exception(e)
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_exception(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)), __pyx_v_exception);
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L10_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":121
 *             exception = XSLTParseError(message)
 *         (<_XSLTResolverContext>context)._store_exception(exception)
 *     except Exception, e:             # <<<<<<<<<<<<<<
 *         (<_XSLTResolverContext>context)._store_exception(e)
 * 
 */
    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("lxml.etree._xslt_store_resolver_exception");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_v_e);
      __pyx_v_e = __pyx_t_1;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":122
 *         (<_XSLTResolverContext>context)._store_exception(exception)
 *     except Exception, e:
 *         (<_XSLTResolverContext>context)._store_exception(e)             # <<<<<<<<<<<<<<
 * 
 * cdef xmlDoc* _xslt_doc_loader(char* c_uri, tree.xmlDict* c_dict,
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._store_exception(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_v_context)), __pyx_v_e);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L10_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("lxml.etree._xslt_store_resolver_exception");
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF(__pyx_v_exception);
  __Pyx_DECREF(__pyx_v_e);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":124
 *         (<_XSLTResolverContext>context)._store_exception(e)
 * 
 * cdef xmlDoc* _xslt_doc_loader(char* c_uri, tree.xmlDict* c_dict,             # <<<<<<<<<<<<<<
 *                               int parse_options, void* c_ctxt,
 *                               xslt.xsltLoadType c_type) nogil:
 */

static  xmlDoc *__pyx_f_4lxml_5etree__xslt_doc_loader(char *__pyx_v_c_uri, xmlDict *__pyx_v_c_dict, int __pyx_v_parse_options, void *__pyx_v_c_ctxt, xsltLoadType __pyx_v_c_type) {
  xmlDoc *__pyx_v_c_doc;
  void *__pyx_v_c_pcontext;
  int __pyx_v_error;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":134
 *     cdef int error
 *     # find resolver contexts of stylesheet and transformed doc
 *     if c_type == xslt.XSLT_LOAD_DOCUMENT:             # <<<<<<<<<<<<<<
 *         # transformation time
 *         c_pcontext = (<xslt.xsltTransformContext*>c_ctxt)._private
 */
  __pyx_t_1 = (__pyx_v_c_type == XSLT_LOAD_DOCUMENT);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":136
 *     if c_type == xslt.XSLT_LOAD_DOCUMENT:
 *         # transformation time
 *         c_pcontext = (<xslt.xsltTransformContext*>c_ctxt)._private             # <<<<<<<<<<<<<<
 *     elif c_type == xslt.XSLT_LOAD_STYLESHEET:
 *         # include/import resolution while parsing
 */
    __pyx_v_c_pcontext = ((xsltTransformContext *)__pyx_v_c_ctxt)->_private;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":137
 *         # transformation time
 *         c_pcontext = (<xslt.xsltTransformContext*>c_ctxt)._private
 *     elif c_type == xslt.XSLT_LOAD_STYLESHEET:             # <<<<<<<<<<<<<<
 *         # include/import resolution while parsing
 *         c_pcontext = (<xslt.xsltStylesheet*>c_ctxt).doc._private
 */
  __pyx_t_1 = (__pyx_v_c_type == XSLT_LOAD_STYLESHEET);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":139
 *     elif c_type == xslt.XSLT_LOAD_STYLESHEET:
 *         # include/import resolution while parsing
 *         c_pcontext = (<xslt.xsltStylesheet*>c_ctxt).doc._private             # <<<<<<<<<<<<<<
 *     else:
 *         c_pcontext = NULL
 */
    __pyx_v_c_pcontext = ((xsltStylesheet *)__pyx_v_c_ctxt)->doc->_private;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":141
 *         c_pcontext = (<xslt.xsltStylesheet*>c_ctxt).doc._private
 *     else:
 *         c_pcontext = NULL             # <<<<<<<<<<<<<<
 * 
 *     if c_pcontext is NULL:
 */
    __pyx_v_c_pcontext = NULL;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":143
 *         c_pcontext = NULL
 * 
 *     if c_pcontext is NULL:             # <<<<<<<<<<<<<<
 *         # can't call Python without context, fall back to default loader
 *         return XSLT_DOC_DEFAULT_LOADER(
 */
  __pyx_t_1 = (__pyx_v_c_pcontext == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":146
 *         # can't call Python without context, fall back to default loader
 *         return XSLT_DOC_DEFAULT_LOADER(
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)             # <<<<<<<<<<<<<<
 * 
 *     c_doc = _xslt_resolve_from_python(c_uri, c_pcontext, parse_options, &error)
 */
    __pyx_r = __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER(__pyx_v_c_uri, __pyx_v_c_dict, __pyx_v_parse_options, __pyx_v_c_ctxt, __pyx_v_c_type);
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":148
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)
 * 
 *     c_doc = _xslt_resolve_from_python(c_uri, c_pcontext, parse_options, &error)             # <<<<<<<<<<<<<<
 *     if c_doc is NULL and not error:
 *         c_doc = XSLT_DOC_DEFAULT_LOADER(
 */
  __pyx_v_c_doc = __pyx_f_4lxml_5etree__xslt_resolve_from_python(__pyx_v_c_uri, __pyx_v_c_pcontext, __pyx_v_parse_options, (&__pyx_v_error));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":149
 * 
 *     c_doc = _xslt_resolve_from_python(c_uri, c_pcontext, parse_options, &error)
 *     if c_doc is NULL and not error:             # <<<<<<<<<<<<<<
 *         c_doc = XSLT_DOC_DEFAULT_LOADER(
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)
 */
  __pyx_t_1 = (__pyx_v_c_doc == NULL);
  if (__pyx_t_1) {
    __pyx_t_2 = (!__pyx_v_error);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":151
 *     if c_doc is NULL and not error:
 *         c_doc = XSLT_DOC_DEFAULT_LOADER(
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)             # <<<<<<<<<<<<<<
 *         if c_doc is NULL:
 *             _xslt_store_resolver_exception(c_uri, c_pcontext, c_type)
 */
    __pyx_v_c_doc = __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER(__pyx_v_c_uri, __pyx_v_c_dict, __pyx_v_parse_options, __pyx_v_c_ctxt, __pyx_v_c_type);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":152
 *         c_doc = XSLT_DOC_DEFAULT_LOADER(
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)
 *         if c_doc is NULL:             # <<<<<<<<<<<<<<
 *             _xslt_store_resolver_exception(c_uri, c_pcontext, c_type)
 * 
 */
    __pyx_t_3 = (__pyx_v_c_doc == NULL);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":153
 *             c_uri, c_dict, parse_options, c_ctxt, c_type)
 *         if c_doc is NULL:
 *             _xslt_store_resolver_exception(c_uri, c_pcontext, c_type)             # <<<<<<<<<<<<<<
 * 
 *     if c_doc is not NULL and c_type == xslt.XSLT_LOAD_STYLESHEET:
 */
      __pyx_f_4lxml_5etree__xslt_store_resolver_exception(__pyx_v_c_uri, __pyx_v_c_pcontext, __pyx_v_c_type);
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":155
 *             _xslt_store_resolver_exception(c_uri, c_pcontext, c_type)
 * 
 *     if c_doc is not NULL and c_type == xslt.XSLT_LOAD_STYLESHEET:             # <<<<<<<<<<<<<<
 *         c_doc._private = c_pcontext
 *     return c_doc
 */
  __pyx_t_3 = (__pyx_v_c_doc != NULL);
  if (__pyx_t_3) {
    __pyx_t_1 = (__pyx_v_c_type == XSLT_LOAD_STYLESHEET);
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":156
 * 
 *     if c_doc is not NULL and c_type == xslt.XSLT_LOAD_STYLESHEET:
 *         c_doc._private = c_pcontext             # <<<<<<<<<<<<<<
 *     return c_doc
 * 
 */
    __pyx_v_c_doc->_private = __pyx_v_c_pcontext;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":157
 *     if c_doc is not NULL and c_type == xslt.XSLT_LOAD_STYLESHEET:
 *         c_doc._private = c_pcontext
 *     return c_doc             # <<<<<<<<<<<<<<
 * 
 * cdef xslt.xsltDocLoaderFunc XSLT_DOC_DEFAULT_LOADER
 */
  __pyx_r = __pyx_v_c_doc;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":189
 *     """
 *     cdef xslt.xsltSecurityPrefs* _prefs
 *     def __init__(self, *, read_file=True, write_file=True, create_dir=True,             # <<<<<<<<<<<<<<
 *                  read_network=True, write_network=True):
 *         self._prefs = xslt.xsltNewSecurityPrefs()
 */

static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_17XSLTAccessControl___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_read_file = 0;
  PyObject *__pyx_v_write_file = 0;
  PyObject *__pyx_v_create_dir = 0;
  PyObject *__pyx_v_read_network = 0;
  PyObject *__pyx_v_write_network = 0;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__read_file,&__pyx_n_s__write_file,&__pyx_n_s__create_dir,&__pyx_n_s__read_network,&__pyx_n_s__write_network,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[5] = {0,0,0,0,0};
    values[0] = __pyx_k_290;
    values[1] = __pyx_k_291;
    values[2] = __pyx_k_292;
    values[3] = __pyx_k_293;
    values[4] = __pyx_k_294;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__read_file);
      if (value) { values[0] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__write_file);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__create_dir);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__read_network);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__write_network);
      if (value) { values[4] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_read_file = values[0];
    __pyx_v_write_file = values[1];
    __pyx_v_create_dir = values[2];
    __pyx_v_read_network = values[3];
    __pyx_v_write_network = values[4];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_read_file = __pyx_k_290;
    __pyx_v_write_file = __pyx_k_291;
    __pyx_v_create_dir = __pyx_k_292;
    __pyx_v_read_network = __pyx_k_293;
    __pyx_v_write_network = __pyx_k_294;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_read_file);
  __Pyx_INCREF(__pyx_v_write_file);
  __Pyx_INCREF(__pyx_v_create_dir);
  __Pyx_INCREF(__pyx_v_read_network);
  __Pyx_INCREF(__pyx_v_write_network);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":191
 *     def __init__(self, *, read_file=True, write_file=True, create_dir=True,
 *                  read_network=True, write_network=True):
 *         self._prefs = xslt.xsltNewSecurityPrefs()             # <<<<<<<<<<<<<<
 *         if self._prefs is NULL:
 *             python.PyErr_NoMemory()
 */
  ((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->_prefs = xsltNewSecurityPrefs();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":192
 *                  read_network=True, write_network=True):
 *         self._prefs = xslt.xsltNewSecurityPrefs()
 *         if self._prefs is NULL:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *         self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file)
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->_prefs == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":193
 *         self._prefs = xslt.xsltNewSecurityPrefs()
 *         if self._prefs is NULL:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *         self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file)
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":194
 *         if self._prefs is NULL:
 *             python.PyErr_NoMemory()
 *         self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file)             # <<<<<<<<<<<<<<
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)
 *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_setAccess(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_READ_FILE, __pyx_v_read_file); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":195
 *             python.PyErr_NoMemory()
 *         self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file)
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)             # <<<<<<<<<<<<<<
 *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
 *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_setAccess(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_WRITE_FILE, __pyx_v_write_file); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":196
 *         self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file)
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)
 *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)             # <<<<<<<<<<<<<<
 *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_setAccess(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_CREATE_DIRECTORY, __pyx_v_create_dir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":197
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file)
 *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
 *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)             # <<<<<<<<<<<<<<
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_setAccess(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_READ_NETWORK, __pyx_v_read_network); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":198
 *         self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir)
 *         self._setAccess(xslt.XSLT_SECPREF_READ_NETWORK, read_network)
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)             # <<<<<<<<<<<<<<
 * 
 *     DENY_ALL = XSLTAccessControl(
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_setAccess(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_WRITE_NETWORK, __pyx_v_write_network); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_read_file);
  __Pyx_DECREF(__pyx_v_write_file);
  __Pyx_DECREF(__pyx_v_create_dir);
  __Pyx_DECREF(__pyx_v_read_network);
  __Pyx_DECREF(__pyx_v_write_network);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":208
 *         read_network=True, write_network=False)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._prefs is not NULL:
 *             xslt.xsltFreeSecurityPrefs(self._prefs)
 */

static void __pyx_pf_4lxml_5etree_17XSLTAccessControl___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_17XSLTAccessControl___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":209
 * 
 *     def __dealloc__(self):
 *         if self._prefs is not NULL:             # <<<<<<<<<<<<<<
 *             xslt.xsltFreeSecurityPrefs(self._prefs)
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->_prefs != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":210
 *     def __dealloc__(self):
 *         if self._prefs is not NULL:
 *             xslt.xsltFreeSecurityPrefs(self._prefs)             # <<<<<<<<<<<<<<
 * 
 *     cdef _setAccess(self, xslt.xsltSecurityOption option, allow):
 */
    xsltFreeSecurityPrefs(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->_prefs);
    goto __pyx_L5;
  }
  __pyx_L5:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":212
 *             xslt.xsltFreeSecurityPrefs(self._prefs)
 * 
 *     cdef _setAccess(self, xslt.xsltSecurityOption option, allow):             # <<<<<<<<<<<<<<
 *         cdef xslt.xsltSecurityCheck function
 *         if allow:
 */

static  PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltSecurityOption __pyx_v_option, PyObject *__pyx_v_allow) {
  xsltSecurityCheck __pyx_v_function;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_setAccess");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_allow);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":214
 *     cdef _setAccess(self, xslt.xsltSecurityOption option, allow):
 *         cdef xslt.xsltSecurityCheck function
 *         if allow:             # <<<<<<<<<<<<<<
 *             function = xslt.xsltSecurityAllow
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_allow); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":215
 *         cdef xslt.xsltSecurityCheck function
 *         if allow:
 *             function = xslt.xsltSecurityAllow             # <<<<<<<<<<<<<<
 *         else:
 *             function = xslt.xsltSecurityForbid
 */
    __pyx_v_function = xsltSecurityAllow;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":217
 *             function = xslt.xsltSecurityAllow
 *         else:
 *             function = xslt.xsltSecurityForbid             # <<<<<<<<<<<<<<
 *         xslt.xsltSetSecurityPrefs(self._prefs, option, function)
 * 
 */
    __pyx_v_function = xsltSecurityForbid;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":218
 *         else:
 *             function = xslt.xsltSecurityForbid
 *         xslt.xsltSetSecurityPrefs(self._prefs, option, function)             # <<<<<<<<<<<<<<
 * 
 *     cdef void _register_in_context(self, xslt.xsltTransformContext* ctxt):
 */
  xsltSetSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_option, __pyx_v_function);

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl._setAccess");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_allow);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":220
 *         xslt.xsltSetSecurityPrefs(self._prefs, option, function)
 * 
 *     cdef void _register_in_context(self, xslt.xsltTransformContext* ctxt):             # <<<<<<<<<<<<<<
 *         xslt.xsltSetCtxtSecurityPrefs(self._prefs, ctxt)
 * 
 */

static  void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltTransformContext *__pyx_v_ctxt) {
  __Pyx_RefNannySetupContext("_register_in_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":221
 * 
 *     cdef void _register_in_context(self, xslt.xsltTransformContext* ctxt):
 *         xslt.xsltSetCtxtSecurityPrefs(self._prefs, ctxt)             # <<<<<<<<<<<<<<
 * 
 *     property options:
 */
  xsltSetCtxtSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_ctxt);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":225
 *     property options:
 *         u"The access control configuration as a map of options."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return {
 *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
 */

static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":226
 *         u"The access control configuration as a map of options."
 *         def __get__(self):
 *             return {             # <<<<<<<<<<<<<<
 *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
 *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":227
 *         def __get__(self):
 *             return {
 *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),             # <<<<<<<<<<<<<<
 *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
 *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_optval(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_READ_FILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_u__read_file), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":228
 *             return {
 *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
 *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),             # <<<<<<<<<<<<<<
 *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
 *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_optval(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_WRITE_FILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_u__write_file), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":229
 *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
 *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
 *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),             # <<<<<<<<<<<<<<
 *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
 *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_optval(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_CREATE_DIRECTORY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_u__create_dir), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":230
 *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
 *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
 *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),             # <<<<<<<<<<<<<<
 *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
 *                 }
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_optval(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_READ_NETWORK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_u__read_network), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":231
 *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
 *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
 *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),             # <<<<<<<<<<<<<<
 *                 }
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self)->__pyx_vtab)->_optval(((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_self), XSLT_SECPREF_WRITE_NETWORK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_u__write_network), __pyx_t_2) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.options.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":234
 *                 }
 * 
 *     cdef _optval(self, xslt.xsltSecurityOption option):             # <<<<<<<<<<<<<<
 *         cdef xslt.xsltSecurityCheck function
 *         function = xslt.xsltGetSecurityPrefs(self._prefs, option)
 */

static  PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *__pyx_v_self, xsltSecurityOption __pyx_v_option) {
  xsltSecurityCheck __pyx_v_function;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_optval");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":236
 *     cdef _optval(self, xslt.xsltSecurityOption option):
 *         cdef xslt.xsltSecurityCheck function
 *         function = xslt.xsltGetSecurityPrefs(self._prefs, option)             # <<<<<<<<<<<<<<
 *         if function is <xslt.xsltSecurityCheck>xslt.xsltSecurityAllow:
 *             return True
 */
  __pyx_v_function = xsltGetSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_option);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":237
 *         cdef xslt.xsltSecurityCheck function
 *         function = xslt.xsltGetSecurityPrefs(self._prefs, option)
 *         if function is <xslt.xsltSecurityCheck>xslt.xsltSecurityAllow:             # <<<<<<<<<<<<<<
 *             return True
 *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:
 */
  __pyx_t_1 = (__pyx_v_function == ((int (*)(xsltSecurityPrefs *, xsltTransformContext *, char *))xsltSecurityAllow));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":238
 *         function = xslt.xsltGetSecurityPrefs(self._prefs, option)
 *         if function is <xslt.xsltSecurityCheck>xslt.xsltSecurityAllow:
 *             return True             # <<<<<<<<<<<<<<
 *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":239
 *         if function is <xslt.xsltSecurityCheck>xslt.xsltSecurityAllow:
 *             return True
 *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:             # <<<<<<<<<<<<<<
 *             return False
 *         else:
 */
  __pyx_t_1 = (__pyx_v_function == ((int (*)(xsltSecurityPrefs *, xsltTransformContext *, char *))xsltSecurityForbid));
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":240
 *             return True
 *         elif function is <xslt.xsltSecurityCheck>xslt.xsltSecurityForbid:
 *             return False             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":242
 *             return False
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl._optval");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":244
 *             return None
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         items = self.options.items()
 *         items.sort()
 */

static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl___repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl___repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_items;
  PyObject *__pyx_v_item;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  __Pyx_RefNannySetupContext("__repr__");
  __pyx_v_items = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_item = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":245
 * 
 *     def __repr__(self):
 *         items = self.options.items()             # <<<<<<<<<<<<<<
 *         items.sort()
 *         return u"%s(%s)" % (
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__options); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_items);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":246
 *     def __repr__(self):
 *         items = self.options.items()
 *         items.sort()             # <<<<<<<<<<<<<<
 *         return u"%s(%s)" % (
 *             funicode(python._fqtypename(self)).split(u'.')[-1],
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_items, __pyx_n_s__sort); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":247
 *         items = self.options.items()
 *         items.sort()
 *         return u"%s(%s)" % (             # <<<<<<<<<<<<<<
 *             funicode(python._fqtypename(self)).split(u'.')[-1],
 *             u', '.join([u"%s=%r" % item for item in items]))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":248
 *         items.sort()
 *         return u"%s(%s)" % (
 *             funicode(python._fqtypename(self)).split(u'.')[-1],             # <<<<<<<<<<<<<<
 *             u', '.join([u"%s=%r" % item for item in items]))
 * 
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(_fqtypename(__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_2));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_2));
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":249
 *         return u"%s(%s)" % (
 *             funicode(python._fqtypename(self)).split(u'.')[-1],
 *             u', '.join([u"%s=%r" % item for item in items]))             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_296), __pyx_n_s__join); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  if (PyList_CheckExact(__pyx_v_items) || PyTuple_CheckExact(__pyx_v_items)) {
    __pyx_t_4 = 0; __pyx_t_5 = __pyx_v_items; __Pyx_INCREF(__pyx_t_5);
  } else {
    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_5))) {
      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
      __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
    } else {
      __pyx_t_6 = PyIter_Next(__pyx_t_5);
      if (!__pyx_t_6) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_v_item);
    __pyx_v_item = __pyx_t_6;
    __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_297), __pyx_v_item); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyList_Append(__pyx_t_1, (PyObject*)__pyx_t_6); if (unlikely(__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_t_1));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_1));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_295), __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree.XSLTAccessControl.__repr__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_items);
  __Pyx_DECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":254
 * # XSLT
 * 
 * cdef int _register_xslt_function(void* ctxt, name_utf, ns_utf):             # <<<<<<<<<<<<<<
 *     if ns_utf is None:
 *         return 0
 */

static  int __pyx_f_4lxml_5etree__register_xslt_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_register_xslt_function");
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_ns_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":255
 * 
 * cdef int _register_xslt_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:             # <<<<<<<<<<<<<<
 *         return 0
 *     return xslt.xsltRegisterExtFunction(
 */
  __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":256
 * cdef int _register_xslt_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:
 *         return 0             # <<<<<<<<<<<<<<
 *     return xslt.xsltRegisterExtFunction(
 *         <xslt.xsltTransformContext*>ctxt, _cstr(name_utf), _cstr(ns_utf),
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":259
 *     return xslt.xsltRegisterExtFunction(
 *         <xslt.xsltTransformContext*>ctxt, _cstr(name_utf), _cstr(ns_utf),
 *         _xpath_function_call)             # <<<<<<<<<<<<<<
 * 
 * cdef int _unregister_xslt_function(void* ctxt, name_utf, ns_utf):
 */
  __pyx_r = xsltRegisterExtFunction(((xsltTransformContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), PyString_AS_STRING(__pyx_v_ns_utf), __pyx_f_4lxml_5etree__xpath_function_call);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":261
 *         _xpath_function_call)
 * 
 * cdef int _unregister_xslt_function(void* ctxt, name_utf, ns_utf):             # <<<<<<<<<<<<<<
 *     if ns_utf is None:
 *         return 0
 */

static  int __pyx_f_4lxml_5etree__unregister_xslt_function(void *__pyx_v_ctxt, PyObject *__pyx_v_name_utf, PyObject *__pyx_v_ns_utf) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_unregister_xslt_function");
  __Pyx_INCREF(__pyx_v_name_utf);
  __Pyx_INCREF(__pyx_v_ns_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":262
 * 
 * cdef int _unregister_xslt_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:             # <<<<<<<<<<<<<<
 *         return 0
 *     return xslt.xsltRegisterExtFunction(
 */
  __pyx_t_1 = (__pyx_v_ns_utf == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":263
 * cdef int _unregister_xslt_function(void* ctxt, name_utf, ns_utf):
 *     if ns_utf is None:
 *         return 0             # <<<<<<<<<<<<<<
 *     return xslt.xsltRegisterExtFunction(
 *         <xslt.xsltTransformContext*>ctxt, _cstr(name_utf), _cstr(ns_utf),
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":266
 *     return xslt.xsltRegisterExtFunction(
 *         <xslt.xsltTransformContext*>ctxt, _cstr(name_utf), _cstr(ns_utf),
 *         NULL)             # <<<<<<<<<<<<<<
 * 
 * cdef dict EMPTY_DICT = {}
 */
  __pyx_r = xsltRegisterExtFunction(((xsltTransformContext *)__pyx_v_ctxt), PyString_AS_STRING(__pyx_v_name_utf), PyString_AS_STRING(__pyx_v_ns_utf), NULL);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":274
 *     cdef _ReadOnlyElementProxy _extension_element_proxy
 *     cdef dict _extension_elements
 *     def __init__(self, namespaces, extensions, enable_regexp,             # <<<<<<<<<<<<<<
 *                  build_smart_strings):
 *         self._xsltCtxt = NULL
 */

static int __pyx_pf_4lxml_5etree_12_XSLTContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_12_XSLTContext___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_namespaces = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_enable_regexp = 0;
  PyObject *__pyx_v_build_smart_strings = 0;
  PyObject *__pyx_v_ns_name_tuple;
  PyObject *__pyx_v_extension;
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__namespaces,&__pyx_n_s__extensions,&__pyx_n_s__enable_regexp,&__pyx_n_s__build_smart_strings,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__namespaces);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__enable_regexp);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__build_smart_strings);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_namespaces = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_enable_regexp = values[2];
    __pyx_v_build_smart_strings = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_namespaces = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_extensions = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_enable_regexp = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_build_smart_strings = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XSLTContext.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(__pyx_v_build_smart_strings);
  __pyx_v_ns_name_tuple = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_extension = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":276
 *     def __init__(self, namespaces, extensions, enable_regexp,
 *                  build_smart_strings):
 *         self._xsltCtxt = NULL             # <<<<<<<<<<<<<<
 *         self._extension_elements = EMPTY_DICT
 *         if extensions is not None and extensions:
 */
  ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_xsltCtxt = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":277
 *                  build_smart_strings):
 *         self._xsltCtxt = NULL
 *         self._extension_elements = EMPTY_DICT             # <<<<<<<<<<<<<<
 *         if extensions is not None and extensions:
 *             for ns_name_tuple, extension in extensions.items():
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree_EMPTY_DICT));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_4lxml_5etree_EMPTY_DICT));
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements));
  ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements = __pyx_v_4lxml_5etree_EMPTY_DICT;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":278
 *         self._xsltCtxt = NULL
 *         self._extension_elements = EMPTY_DICT
 *         if extensions is not None and extensions:             # <<<<<<<<<<<<<<
 *             for ns_name_tuple, extension in extensions.items():
 *                 if ns_name_tuple[0] is None:
 */
  __pyx_t_1 = (__pyx_v_extensions != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_extensions); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":279
 *         self._extension_elements = EMPTY_DICT
 *         if extensions is not None and extensions:
 *             for ns_name_tuple, extension in extensions.items():             # <<<<<<<<<<<<<<
 *                 if ns_name_tuple[0] is None:
 *                     raise XSLTExtensionError, \
 */
    __pyx_t_5 = PyObject_GetAttr(__pyx_v_extensions, __pyx_n_s__items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_4 = 0; __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5);
    } else {
      __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
      } else if (likely(PyTuple_CheckExact(__pyx_t_5))) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++;
      } else {
        __pyx_t_6 = PyIter_Next(__pyx_t_5);
        if (!__pyx_t_6) {
          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      if (PyTuple_CheckExact(__pyx_t_6) && likely(PyTuple_GET_SIZE(__pyx_t_6) == 2)) {
        PyObject* tuple = __pyx_t_6;
        __pyx_t_7 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_v_ns_name_tuple);
        __pyx_v_ns_name_tuple = __pyx_t_7;
        __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_extension);
        __pyx_v_extension = __pyx_t_8;
        __pyx_t_8 = 0;
      } else {
        __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_EndUnpack(__pyx_t_9) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_v_ns_name_tuple);
        __pyx_v_ns_name_tuple = __pyx_t_7;
        __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_v_extension);
        __pyx_v_extension = __pyx_t_8;
        __pyx_t_8 = 0;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":280
 *         if extensions is not None and extensions:
 *             for ns_name_tuple, extension in extensions.items():
 *                 if ns_name_tuple[0] is None:             # <<<<<<<<<<<<<<
 *                     raise XSLTExtensionError, \
 *                         u"extensions must not have empty namespaces"
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = (__pyx_t_6 == Py_None);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":281
 *             for ns_name_tuple, extension in extensions.items():
 *                 if ns_name_tuple[0] is None:
 *                     raise XSLTExtensionError, \             # <<<<<<<<<<<<<<
 *                         u"extensions must not have empty namespaces"
 *                 if isinstance(extension, XSLTExtension):
 */
        __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTExtensionError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, ((PyObject *)__pyx_kp_u_298), 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[18]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":283
 *                     raise XSLTExtensionError, \
 *                         u"extensions must not have empty namespaces"
 *                 if isinstance(extension, XSLTExtension):             # <<<<<<<<<<<<<<
 *                     if self._extension_elements is EMPTY_DICT:
 *                         self._extension_elements = {}
 */
      __pyx_t_3 = PyObject_TypeCheck(__pyx_v_extension, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XSLTExtension))); 
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":284
 *                         u"extensions must not have empty namespaces"
 *                 if isinstance(extension, XSLTExtension):
 *                     if self._extension_elements is EMPTY_DICT:             # <<<<<<<<<<<<<<
 *                         self._extension_elements = {}
 *                         extensions = extensions.copy()
 */
        __pyx_t_3 = (((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements == __pyx_v_4lxml_5etree_EMPTY_DICT);
        if (__pyx_t_3) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":285
 *                 if isinstance(extension, XSLTExtension):
 *                     if self._extension_elements is EMPTY_DICT:
 *                         self._extension_elements = {}             # <<<<<<<<<<<<<<
 *                         extensions = extensions.copy()
 *                     ns_utf   = _utf8(ns_name_tuple[0])
 */
          __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(((PyObject *)__pyx_t_6));
          __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
          __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements);
          __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements));
          ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements = __pyx_t_6;
          __pyx_t_6 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":286
 *                     if self._extension_elements is EMPTY_DICT:
 *                         self._extension_elements = {}
 *                         extensions = extensions.copy()             # <<<<<<<<<<<<<<
 *                     ns_utf   = _utf8(ns_name_tuple[0])
 *                     name_utf = _utf8(ns_name_tuple[1])
 */
          __pyx_t_6 = PyObject_GetAttr(__pyx_v_extensions, __pyx_n_s__copy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_v_extensions);
          __pyx_v_extensions = __pyx_t_8;
          __pyx_t_8 = 0;
          goto __pyx_L11;
        }
        __pyx_L11:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":287
 *                         self._extension_elements = {}
 *                         extensions = extensions.copy()
 *                     ns_utf   = _utf8(ns_name_tuple[0])             # <<<<<<<<<<<<<<
 *                     name_utf = _utf8(ns_name_tuple[1])
 *                     self._extension_elements[(ns_utf, name_utf)] = extension
 */
        __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __pyx_f_4lxml_5etree__utf8(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_ns_utf);
        __pyx_v_ns_utf = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":288
 *                         extensions = extensions.copy()
 *                     ns_utf   = _utf8(ns_name_tuple[0])
 *                     name_utf = _utf8(ns_name_tuple[1])             # <<<<<<<<<<<<<<
 *                     self._extension_elements[(ns_utf, name_utf)] = extension
 *                     del extensions[ns_name_tuple]
 */
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ns_name_tuple, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __pyx_f_4lxml_5etree__utf8(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_v_name_utf);
        __pyx_v_name_utf = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":289
 *                     ns_utf   = _utf8(ns_name_tuple[0])
 *                     name_utf = _utf8(ns_name_tuple[1])
 *                     self._extension_elements[(ns_utf, name_utf)] = extension             # <<<<<<<<<<<<<<
 *                     del extensions[ns_name_tuple]
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,
 */
        __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_v_ns_utf);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ns_utf);
        __Pyx_GIVEREF(__pyx_v_ns_utf);
        __Pyx_INCREF(__pyx_v_name_utf);
        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_name_utf);
        __Pyx_GIVEREF(__pyx_v_name_utf);
        if (PyDict_SetItem(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_self)->_extension_elements), __pyx_t_8, __pyx_v_extension) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":290
 *                     name_utf = _utf8(ns_name_tuple[1])
 *                     self._extension_elements[(ns_utf, name_utf)] = extension
 *                     del extensions[ns_name_tuple]             # <<<<<<<<<<<<<<
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,
 *                               build_smart_strings)
 */
        if (PyObject_DelItem(__pyx_v_extensions, __pyx_v_ns_name_tuple) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      __pyx_L10:;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":291
 *                     self._extension_elements[(ns_utf, name_utf)] = extension
 *                     del extensions[ns_name_tuple]
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,             # <<<<<<<<<<<<<<
 *                               build_smart_strings)
 * 
 */
  __pyx_t_5 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__BaseContext)), __pyx_n_s____init__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":292
 *                     del extensions[ns_name_tuple]
 *         _BaseContext.__init__(self, namespaces, extensions, enable_regexp,
 *                               build_smart_strings)             # <<<<<<<<<<<<<<
 * 
 *     cdef _BaseContext _copy(self):
 */
  __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __Pyx_INCREF(__pyx_v_namespaces);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_namespaces);
  __Pyx_GIVEREF(__pyx_v_namespaces);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_enable_regexp);
  PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_enable_regexp);
  __Pyx_GIVEREF(__pyx_v_enable_regexp);
  __Pyx_INCREF(__pyx_v_build_smart_strings);
  PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_build_smart_strings);
  __Pyx_GIVEREF(__pyx_v_build_smart_strings);
  __pyx_t_6 = PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree._XSLTContext.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_name_tuple);
  __Pyx_DECREF(__pyx_v_extension);
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_namespaces);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_enable_regexp);
  __Pyx_DECREF(__pyx_v_build_smart_strings);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":294
 *                               build_smart_strings)
 * 
 *     cdef _BaseContext _copy(self):             # <<<<<<<<<<<<<<
 *         cdef _XSLTContext context
 *         context = <_XSLTContext>_BaseContext._copy(self)
 */

static  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_copy");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":296
 *     cdef _BaseContext _copy(self):
 *         cdef _XSLTContext context
 *         context = <_XSLTContext>_BaseContext._copy(self)             # <<<<<<<<<<<<<<
 *         context._extension_elements = self._extension_elements
 *         return context
 */
  __pyx_t_1 = ((PyObject *)__pyx_vtabptr_4lxml_5etree__BaseContext->_copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_1)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":297
 *         cdef _XSLTContext context
 *         context = <_XSLTContext>_BaseContext._copy(self)
 *         context._extension_elements = self._extension_elements             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_extension_elements));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_extension_elements));
  __Pyx_GOTREF(__pyx_v_context->_extension_elements);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_extension_elements));
  __pyx_v_context->_extension_elements = __pyx_v_self->_extension_elements;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":298
 *         context = <_XSLTContext>_BaseContext._copy(self)
 *         context._extension_elements = self._extension_elements
 *         return context             # <<<<<<<<<<<<<<
 * 
 *     cdef register_context(self, xslt.xsltTransformContext* xsltCtxt,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_context);
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTContext._copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":300
 *         return context
 * 
 *     cdef register_context(self, xslt.xsltTransformContext* xsltCtxt,             # <<<<<<<<<<<<<<
 *                                _Document doc):
 *         self._xsltCtxt = xsltCtxt
 */

static  PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_register_context(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self, xsltTransformContext *__pyx_v_xsltCtxt, struct LxmlDocument *__pyx_v_doc) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("register_context");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":302
 *     cdef register_context(self, xslt.xsltTransformContext* xsltCtxt,
 *                                _Document doc):
 *         self._xsltCtxt = xsltCtxt             # <<<<<<<<<<<<<<
 *         self._set_xpath_context(xsltCtxt.xpathCtxt)
 *         self._register_context(doc)
 */
  __pyx_v_self->_xsltCtxt = __pyx_v_xsltCtxt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":303
 *                                _Document doc):
 *         self._xsltCtxt = xsltCtxt
 *         self._set_xpath_context(xsltCtxt.xpathCtxt)             # <<<<<<<<<<<<<<
 *         self._register_context(doc)
 *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_xpath_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt->xpathCtxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":304
 *         self._xsltCtxt = xsltCtxt
 *         self._set_xpath_context(xsltCtxt.xpathCtxt)
 *         self._register_context(doc)             # <<<<<<<<<<<<<<
 *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
 *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._register_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":305
 *         self._set_xpath_context(xsltCtxt.xpathCtxt)
 *         self._register_context(doc)
 *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)             # <<<<<<<<<<<<<<
 *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)
 *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerLocalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt, __pyx_f_4lxml_5etree__register_xslt_function);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":306
 *         self._register_context(doc)
 *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
 *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)             # <<<<<<<<<<<<<<
 *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)
 * 
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.registerGlobalFunctions(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self), __pyx_v_xsltCtxt, __pyx_f_4lxml_5etree__register_xslt_function);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":307
 *         self.registerLocalFunctions(xsltCtxt, _register_xslt_function)
 *         self.registerGlobalFunctions(xsltCtxt, _register_xslt_function)
 *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)             # <<<<<<<<<<<<<<
 * 
 *     cdef free_context(self):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__registerXSLTExtensions(__pyx_v_xsltCtxt, ((PyObject *)__pyx_v_self->_extension_elements)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTContext.register_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":309
 *         _registerXSLTExtensions(xsltCtxt, self._extension_elements)
 * 
 *     cdef free_context(self):             # <<<<<<<<<<<<<<
 *         self._cleanup_context()
 *         self._release_context()
 */

static  PyObject *__pyx_f_4lxml_5etree_12_XSLTContext_free_context(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("free_context");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":310
 * 
 *     cdef free_context(self):
 *         self._cleanup_context()             # <<<<<<<<<<<<<<
 *         self._release_context()
 *         if self._xsltCtxt is not NULL:
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._cleanup_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":311
 *     cdef free_context(self):
 *         self._cleanup_context()
 *         self._release_context()             # <<<<<<<<<<<<<<
 *         if self._xsltCtxt is not NULL:
 *             xslt.xsltFreeTransformContext(self._xsltCtxt)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._release_context(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":312
 *         self._cleanup_context()
 *         self._release_context()
 *         if self._xsltCtxt is not NULL:             # <<<<<<<<<<<<<<
 *             xslt.xsltFreeTransformContext(self._xsltCtxt)
 *             self._xsltCtxt = NULL
 */
  __pyx_t_2 = (__pyx_v_self->_xsltCtxt != NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":313
 *         self._release_context()
 *         if self._xsltCtxt is not NULL:
 *             xslt.xsltFreeTransformContext(self._xsltCtxt)             # <<<<<<<<<<<<<<
 *             self._xsltCtxt = NULL
 *         self._release_temp_refs()
 */
    xsltFreeTransformContext(__pyx_v_self->_xsltCtxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":314
 *         if self._xsltCtxt is not NULL:
 *             xslt.xsltFreeTransformContext(self._xsltCtxt)
 *             self._xsltCtxt = NULL             # <<<<<<<<<<<<<<
 *         self._release_temp_refs()
 * 
 */
    __pyx_v_self->_xsltCtxt = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":315
 *             xslt.xsltFreeTransformContext(self._xsltCtxt)
 *             self._xsltCtxt = NULL
 *         self._release_temp_refs()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._release_temp_refs(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTContext.free_context");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":323
 *     """
 *     cdef str strval
 *     def __init__(self, strval):             # <<<<<<<<<<<<<<
 *         self.strval = _utf8(strval)
 * 
 */

static int __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_strval = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__strval,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__strval);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_strval = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_strval = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XSLTQuotedStringParam.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":324
 *     cdef str strval
 *     def __init__(self, strval):
 *         self.strval = _utf8(strval)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_strval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected str, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_self)->strval);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_self)->strval));
  ((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_self)->strval = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTQuotedStringParam.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":359
 *     cdef _ErrorLog _error_log
 * 
 *     def __init__(self, xslt_input, *, extensions=None, regexp=True,             # <<<<<<<<<<<<<<
 *                  access_control=None):
 *         cdef xslt.xsltStylesheet* c_style
 */

static int __pyx_pf_4lxml_5etree_4XSLT___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_4XSLT___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xslt_input = 0;
  PyObject *__pyx_v_extensions = 0;
  PyObject *__pyx_v_regexp = 0;
  PyObject *__pyx_v_access_control = 0;
  xsltStylesheet *__pyx_v_c_style;
  xmlDoc *__pyx_v_c_doc;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  PyObject *__pyx_v_doc_url_utf;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  xmlDoc *__pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  xmlDoc *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__xslt_input,&__pyx_n_s__extensions,&__pyx_n_s__regexp,&__pyx_n_s__access_control,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":360
 * 
 *     def __init__(self, xslt_input, *, extensions=None, regexp=True,
 *                  access_control=None):             # <<<<<<<<<<<<<<
 *         cdef xslt.xsltStylesheet* c_style
 *         cdef xmlDoc* c_doc
 */
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_299;
    values[3] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__xslt_input);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__extensions);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__regexp);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__access_control);
      if (value) { values[3] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_xslt_input = values[0];
    __pyx_v_extensions = values[1];
    __pyx_v_regexp = values[2];
    __pyx_v_access_control = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_xslt_input = PyTuple_GET_ITEM(__pyx_args, 0);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":359
 *     cdef _ErrorLog _error_log
 * 
 *     def __init__(self, xslt_input, *, extensions=None, regexp=True,             # <<<<<<<<<<<<<<
 *                  access_control=None):
 *         cdef xslt.xsltStylesheet* c_style
 */
    __pyx_v_extensions = ((PyObject *)Py_None);
    __pyx_v_regexp = __pyx_k_299;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":360
 * 
 *     def __init__(self, xslt_input, *, extensions=None, regexp=True,
 *                  access_control=None):             # <<<<<<<<<<<<<<
 *         cdef xslt.xsltStylesheet* c_style
 *         cdef xmlDoc* c_doc
 */
    __pyx_v_access_control = ((PyObject *)Py_None);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XSLT.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_xslt_input);
  __Pyx_INCREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  __Pyx_INCREF(__pyx_v_access_control);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_doc_url_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":366
 *         cdef _Element root_node
 * 
 *         doc = _documentOrRaise(xslt_input)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(xslt_input)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_xslt_input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":367
 * 
 *         doc = _documentOrRaise(xslt_input)
 *         root_node = _rootNodeOrRaise(xslt_input)             # <<<<<<<<<<<<<<
 * 
 *         # set access control or raise TypeError
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_xslt_input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":370
 * 
 *         # set access control or raise TypeError
 *         self._access_control = access_control             # <<<<<<<<<<<<<<
 * 
 *         # make a copy of the document as stylesheet parsing modifies it
 */
  if (!(likely(((__pyx_v_access_control) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_access_control, __pyx_ptype_4lxml_5etree_XSLTAccessControl))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_INCREF(__pyx_v_access_control);
  __Pyx_GIVEREF(__pyx_v_access_control);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_access_control);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_access_control));
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_access_control = ((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)__pyx_v_access_control);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":373
 * 
 *         # make a copy of the document as stylesheet parsing modifies it
 *         c_doc = _copyDocRoot(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 * 
 *         # make sure we always have a stylesheet URL
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":376
 * 
 *         # make sure we always have a stylesheet URL
 *         if c_doc.URL is NULL:             # <<<<<<<<<<<<<<
 *             doc_url_utf = python.PyUnicode_AsASCIIString(
 *                 u"string://__STRING__XSLT__/%d.xslt" % id(self))
 */
  __pyx_t_3 = (__pyx_v_c_doc->URL == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":378
 *         if c_doc.URL is NULL:
 *             doc_url_utf = python.PyUnicode_AsASCIIString(
 *                 u"string://__STRING__XSLT__/%d.xslt" % id(self))             # <<<<<<<<<<<<<<
 *             c_doc.URL = tree.xmlStrdup(_cstr(doc_url_utf))
 * 
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __pyx_t_4 = PyObject_Call(__pyx_builtin_id, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_300), __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyUnicode_AsASCIIString(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_v_doc_url_utf);
    __pyx_v_doc_url_utf = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":379
 *             doc_url_utf = python.PyUnicode_AsASCIIString(
 *                 u"string://__STRING__XSLT__/%d.xslt" % id(self))
 *             c_doc.URL = tree.xmlStrdup(_cstr(doc_url_utf))             # <<<<<<<<<<<<<<
 * 
 *         self._error_log = _ErrorLog()
 */
    __pyx_v_c_doc->URL = xmlStrdup(PyString_AS_STRING(__pyx_v_doc_url_utf));
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":381
 *             c_doc.URL = tree.xmlStrdup(_cstr(doc_url_utf))
 * 
 *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 *         self._xslt_resolver_context = _XSLTResolverContext()
 *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":382
 * 
 *         self._error_log = _ErrorLog()
 *         self._xslt_resolver_context = _XSLTResolverContext()             # <<<<<<<<<<<<<<
 *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
 *         # keep a copy in case we need to access the stylesheet via 'document()'
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTResolverContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context));
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":383
 *         self._error_log = _ErrorLog()
 *         self._xslt_resolver_context = _XSLTResolverContext()
 *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)             # <<<<<<<<<<<<<<
 *         # keep a copy in case we need to access the stylesheet via 'document()'
 *         self._xslt_resolver_context._c_style_doc = _copyDoc(c_doc, 1)
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree__initXSLTResolverContext(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context, __pyx_v_doc->_parser); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":385
 *         _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
 *         # keep a copy in case we need to access the stylesheet via 'document()'
 *         self._xslt_resolver_context._c_style_doc = _copyDoc(c_doc, 1)             # <<<<<<<<<<<<<<
 *         c_doc._private = <python.PyObject*>self._xslt_resolver_context
 * 
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_c_doc, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context->_c_style_doc = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":386
 *         # keep a copy in case we need to access the stylesheet via 'document()'
 *         self._xslt_resolver_context._c_style_doc = _copyDoc(c_doc, 1)
 *         c_doc._private = <python.PyObject*>self._xslt_resolver_context             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.connect()
 */
  __pyx_v_c_doc->_private = ((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":388
 *         c_doc._private = <python.PyObject*>self._xslt_resolver_context
 * 
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":389
 * 
 *         self._error_log.connect()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *         self._error_log.disconnect()
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":390
 *         self._error_log.connect()
 *         with nogil:
 *             c_style = xslt.xsltParseStylesheetDoc(c_doc)             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 * 
 */
      __pyx_v_c_style = xsltParseStylesheetDoc(__pyx_v_c_doc);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":389
 * 
 *         self._error_log.connect()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *         self._error_log.disconnect()
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":391
 *         with nogil:
 *             c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         if c_style is NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":393
 *         self._error_log.disconnect()
 * 
 *         if c_style is NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(c_doc)
 *             self._xslt_resolver_context._raise_if_stored()
 */
  __pyx_t_3 = (__pyx_v_c_style == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":394
 * 
 *         if c_style is NULL:
 *             tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 *             self._xslt_resolver_context._raise_if_stored()
 *             # last error seems to be the most accurate here
 */
    xmlFreeDoc(__pyx_v_c_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":395
 *         if c_style is NULL:
 *             tree.xmlFreeDoc(c_doc)
 *             self._xslt_resolver_context._raise_if_stored()             # <<<<<<<<<<<<<<
 *             # last error seems to be the most accurate here
 *             if self._error_log.last_error is not None and \
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":397
 *             self._xslt_resolver_context._raise_if_stored()
 *             # last error seems to be the most accurate here
 *             if self._error_log.last_error is not None and \             # <<<<<<<<<<<<<<
 *                     self._error_log.last_error.message:
 *                 raise XSLTParseError(self._error_log.last_error.message,
 */
    __pyx_t_3 = (((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.last_error != Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":398
 *             # last error seems to be the most accurate here
 *             if self._error_log.last_error is not None and \
 *                     self._error_log.last_error.message:             # <<<<<<<<<<<<<<
 *                 raise XSLTParseError(self._error_log.last_error.message,
 *                                      self._error_log)
 */
      __pyx_t_4 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s__message); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = __pyx_t_7;
    } else {
      __pyx_t_8 = __pyx_t_3;
    }
    if (__pyx_t_8) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":399
 *             if self._error_log.last_error is not None and \
 *                     self._error_log.last_error.message:
 *                 raise XSLTParseError(self._error_log.last_error.message,             # <<<<<<<<<<<<<<
 *                                      self._error_log)
 *             else:
 */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_GetAttr(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.last_error, __pyx_n_s__message); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":400
 *                     self._error_log.last_error.message:
 *                 raise XSLTParseError(self._error_log.last_error.message,
 *                                      self._error_log)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise XSLTParseError(
 */
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[18]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L11;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":402
 *                                      self._error_log)
 *             else:
 *                 raise XSLTParseError(             # <<<<<<<<<<<<<<
 *                     self._error_log._buildExceptionMessage(
 *                         u"Cannot parse stylesheet"),
 */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTParseError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":403
 *             else:
 *                 raise XSLTParseError(
 *                     self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                         u"Cannot parse stylesheet"),
 *                     self._error_log)
 */
      __pyx_t_9 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log), ((PyObject *)__pyx_kp_u_302)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":405
 *                     self._error_log._buildExceptionMessage(
 *                         u"Cannot parse stylesheet"),
 *                     self._error_log)             # <<<<<<<<<<<<<<
 * 
 *         c_doc._private = NULL # no longer used!
 */
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_9, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      {__pyx_filename = __pyx_f[18]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L11:;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":407
 *                     self._error_log)
 * 
 *         c_doc._private = NULL # no longer used!             # <<<<<<<<<<<<<<
 *         self._c_style = c_style
 *         self._context = _XSLTContext(None, extensions, regexp, True)
 */
  __pyx_v_c_doc->_private = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":408
 * 
 *         c_doc._private = NULL # no longer used!
 *         self._c_style = c_style             # <<<<<<<<<<<<<<
 *         self._context = _XSLTContext(None, extensions, regexp, True)
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style = __pyx_v_c_style;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":409
 *         c_doc._private = NULL # no longer used!
 *         self._c_style = c_style
 *         self._context = _XSLTContext(None, extensions, regexp, True)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_9 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_4, 0, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(__pyx_v_extensions);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_extensions);
  __Pyx_GIVEREF(__pyx_v_extensions);
  __Pyx_INCREF(__pyx_v_regexp);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_regexp);
  __Pyx_GIVEREF(__pyx_v_regexp);
  PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTContext)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_9);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_context);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_context));
  ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_9);
  __pyx_t_9 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("lxml.etree.XSLT.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF(__pyx_v_doc_url_utf);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_xslt_input);
  __Pyx_DECREF(__pyx_v_extensions);
  __Pyx_DECREF(__pyx_v_regexp);
  __Pyx_DECREF(__pyx_v_access_control);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":411
 *         self._context = _XSLTContext(None, extensions, regexp, True)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._xslt_resolver_context is not None and \
 *                self._xslt_resolver_context._c_style_doc is not NULL:
 */

static void __pyx_pf_4lxml_5etree_4XSLT___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_4XSLT___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":412
 * 
 *     def __dealloc__(self):
 *         if self._xslt_resolver_context is not None and \             # <<<<<<<<<<<<<<
 *                self._xslt_resolver_context._c_style_doc is not NULL:
 *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":413
 *     def __dealloc__(self):
 *         if self._xslt_resolver_context is not None and \
 *                self._xslt_resolver_context._c_style_doc is not NULL:             # <<<<<<<<<<<<<<
 *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
 *         # this cleans up the doc copy as well
 */
    __pyx_t_2 = (((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context->_c_style_doc != NULL);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":414
 *         if self._xslt_resolver_context is not None and \
 *                self._xslt_resolver_context._c_style_doc is not NULL:
 *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)             # <<<<<<<<<<<<<<
 *         # this cleans up the doc copy as well
 *         xslt.xsltFreeStylesheet(self._c_style)
 */
    xmlFreeDoc(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context->_c_style_doc);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":416
 *             tree.xmlFreeDoc(self._xslt_resolver_context._c_style_doc)
 *         # this cleans up the doc copy as well
 *         xslt.xsltFreeStylesheet(self._c_style)             # <<<<<<<<<<<<<<
 * 
 *     property error_log:
 */
  xsltFreeStylesheet(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style);

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":420
 *     property error_log:
 *         u"The log of errors and warnings of an XSLT execution."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._error_log.copy()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":421
 *         u"The log of errors and warnings of an XSLT execution."
 *         def __get__(self):
 *             return self._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLT.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":424
 * 
 *     @classmethod
 *     def strparam(_, strval):             # <<<<<<<<<<<<<<
 *         u"""strparam(strval)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT_strparam(PyObject *__pyx_v__, PyObject *__pyx_v_strval); /*proto*/
static char __pyx_doc_4lxml_5etree_4XSLT_strparam[] = "strparam(strval)\n\n        Mark an XSLT string parameter that requires quote escaping\n        before passing it into the transformation.  Use it like this::\n\n            result = transform(doc, some_strval = XSLT.strparam(\n                '''it's \"Monty Python's\" ...'''))\n\n        Escaped string parameters can be reused without restriction.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_4XSLT_strparam(PyObject *__pyx_v__, PyObject *__pyx_v_strval) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("strparam");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":435
 *         Escaped string parameters can be reused without restriction.
 *         """
 *         return _XSLTQuotedStringParam(strval)             # <<<<<<<<<<<<<<
 * 
 *     def apply(self, _input, *, profile_run=False, **kw):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_strval);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_strval);
  __Pyx_GIVEREF(__pyx_v_strval);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTQuotedStringParam)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLT.strparam");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":437
 *         return _XSLTQuotedStringParam(strval)
 * 
 *     def apply(self, _input, *, profile_run=False, **kw):             # <<<<<<<<<<<<<<
 *         u"""apply(self, _input,  profile_run=False, **kw)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT_apply(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_4XSLT_apply[] = "apply(self, _input,  profile_run=False, **kw)\n        \n        :deprecated: call the object, not this method.";
static PyObject *__pyx_pf_4lxml_5etree_4XSLT_apply(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__input = 0;
  PyObject *__pyx_v_profile_run = 0;
  PyObject *__pyx_v_kw = 0;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___input,&__pyx_n_s__profile_run,0};
  __Pyx_RefNannySetupContext("apply");
  __pyx_v_kw = PyDict_New(); if (unlikely(!__pyx_v_kw)) return NULL;
  __Pyx_GOTREF(__pyx_v_kw);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = __pyx_k_303;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___input);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kw, values, PyTuple_GET_SIZE(__pyx_args), "apply") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__input = values[0];
    __pyx_v_profile_run = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__input = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_profile_run = __pyx_k_303;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("apply", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kw);
  __Pyx_AddTraceback("lxml.etree.XSLT.apply");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":441
 * 
 *         :deprecated: call the object, not this method."""
 *         return self(_input, profile_run=profile_run, **kw)             # <<<<<<<<<<<<<<
 * 
 *     def tostring(self, _ElementTree result_tree):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v__input);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__input);
  __Pyx_GIVEREF(__pyx_v__input);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__profile_run), __pyx_v_profile_run) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_Update(((PyObject *)__pyx_t_2), __pyx_v_kw) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_v_self, __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.XSLT.apply");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_kw);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":443
 *         return self(_input, profile_run=profile_run, **kw)
 * 
 *     def tostring(self, _ElementTree result_tree):             # <<<<<<<<<<<<<<
 *         u"""tostring(self, result_tree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT_tostring(PyObject *__pyx_v_self, PyObject *__pyx_v_result_tree); /*proto*/
static char __pyx_doc_4lxml_5etree_4XSLT_tostring[] = "tostring(self, result_tree)\n\n        Save result doc to string based on stylesheet output method.\n\n        :deprecated: use str(result_tree) instead.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_4XSLT_tostring(PyObject *__pyx_v_self, PyObject *__pyx_v_result_tree) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("tostring");
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_result_tree), __pyx_ptype_4lxml_5etree__ElementTree, 1, "result_tree", 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":450
 *         :deprecated: use str(result_tree) instead.
 *         """
 *         return str(result_tree)             # <<<<<<<<<<<<<<
 * 
 *     def __deepcopy__(self, memo):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_result_tree);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_result_tree);
  __Pyx_GIVEREF(__pyx_v_result_tree);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLT.tostring");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":452
 *         return str(result_tree)
 * 
 *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
 *         return self.__copy__()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_4XSLT___deepcopy__(PyObject *__pyx_v_self, PyObject *__pyx_v_memo) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__deepcopy__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":453
 * 
 *     def __deepcopy__(self, memo):
 *         return self.__copy__()             # <<<<<<<<<<<<<<
 * 
 *     def __copy__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____copy__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.XSLT.__deepcopy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":455
 *         return self.__copy__()
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return _copyXSLT(self)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT___copy__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_4XSLT___copy__(PyObject *__pyx_v_self, PyObject *unused) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__copy__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":456
 * 
 *     def __copy__(self):
 *         return _copyXSLT(self)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, _input, *, profile_run=False, **kw):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__copyXSLT(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XSLT.__copy__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":458
 *         return _copyXSLT(self)
 * 
 *     def __call__(self, _input, *, profile_run=False, **kw):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, _input, profile_run=False, **kw)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_4XSLT___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_4XSLT___call__[] = "__call__(self, _input, profile_run=False, **kw)\n\n        Execute the XSL transformation on a tree or Element.\n\n        Pass the ``profile_run`` option to get profile information\n        about the XSLT.  The result of the XSLT will have a property\n        xslt_profile that holds an XML tree with profiling data.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_4XSLT___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v__input = 0;
  PyObject *__pyx_v_profile_run = 0;
  PyObject *__pyx_v_kw = 0;
  struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *__pyx_v_resolver_context;
  struct LxmlDocument *__pyx_v_input_doc;
  struct LxmlElement *__pyx_v_root_node;
  struct LxmlDocument *__pyx_v_result_doc;
  struct LxmlDocument *__pyx_v_profile_doc;
  xmlDoc *__pyx_v_c_profile_doc;
  xsltTransformContext *__pyx_v_transform_ctxt;
  xmlDoc *__pyx_v_c_result;
  xmlDoc *__pyx_v_c_doc;
  xmlDict *__pyx_v_c_dict;
  PyObject *__pyx_v_error;
  PyObject *__pyx_v_message;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  xmlDoc *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___input,&__pyx_n_s__profile_run,0};
  __Pyx_RefNannySetupContext("__call__");
  __pyx_v_kw = PyDict_New(); if (unlikely(!__pyx_v_kw)) return NULL;
  __Pyx_GOTREF(__pyx_v_kw);
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = __pyx_k_304;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___input);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kw, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v__input = values[0];
    __pyx_v_profile_run = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v__input = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_profile_run = __pyx_k_304;
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kw);
  __Pyx_AddTraceback("lxml.etree.XSLT.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v__input);
  __Pyx_INCREF(__pyx_v_profile_run);
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_input_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_profile_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_error = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":475
 *         cdef xmlDoc* c_profile_doc
 *         cdef xslt.xsltTransformContext* transform_ctxt
 *         cdef xmlDoc* c_result = NULL             # <<<<<<<<<<<<<<
 *         cdef xmlDoc* c_doc
 *         cdef tree.xmlDict* c_dict
 */
  __pyx_v_c_result = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":479
 *         cdef tree.xmlDict* c_dict
 * 
 *         input_doc = _documentOrRaise(_input)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(_input)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v__input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_input_doc));
  __pyx_v_input_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":480
 * 
 *         input_doc = _documentOrRaise(_input)
 *         root_node = _rootNodeOrRaise(_input)             # <<<<<<<<<<<<<<
 * 
 *         c_doc = _fakeRootDoc(input_doc._c_doc, root_node._c_node)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v__input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":482
 *         root_node = _rootNodeOrRaise(_input)
 * 
 *         c_doc = _fakeRootDoc(input_doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 * 
 *         transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_input_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":484
 *         c_doc = _fakeRootDoc(input_doc._c_doc, root_node._c_node)
 * 
 *         transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)             # <<<<<<<<<<<<<<
 *         if transform_ctxt is NULL:
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 */
  __pyx_v_transform_ctxt = xsltNewTransformContext(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":485
 * 
 *         transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)
 *         if transform_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 *             python.PyErr_NoMemory()
 */
  __pyx_t_3 = (__pyx_v_transform_ctxt == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":486
 *         transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)
 *         if transform_ctxt is NULL:
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 * 
 */
    __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_input_doc->_c_doc, __pyx_v_c_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":487
 *         if transform_ctxt is NULL:
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *         # using the stylesheet dict is safer than using a possibly
 */
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":493
 *         # non-input tag/attr names will come from the stylesheet
 *         # anyway.
 *         if transform_ctxt.dict is not NULL:             # <<<<<<<<<<<<<<
 *             xmlparser.xmlDictFree(transform_ctxt.dict)
 *         transform_ctxt.dict = self._c_style.doc.dict
 */
  __pyx_t_3 = (__pyx_v_transform_ctxt->dict != NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":494
 *         # anyway.
 *         if transform_ctxt.dict is not NULL:
 *             xmlparser.xmlDictFree(transform_ctxt.dict)             # <<<<<<<<<<<<<<
 *         transform_ctxt.dict = self._c_style.doc.dict
 *         xmlparser.xmlDictReference(transform_ctxt.dict)
 */
    xmlDictFree(__pyx_v_transform_ctxt->dict);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":495
 *         if transform_ctxt.dict is not NULL:
 *             xmlparser.xmlDictFree(transform_ctxt.dict)
 *         transform_ctxt.dict = self._c_style.doc.dict             # <<<<<<<<<<<<<<
 *         xmlparser.xmlDictReference(transform_ctxt.dict)
 * 
 */
  __pyx_v_transform_ctxt->dict = ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style->doc->dict;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":496
 *             xmlparser.xmlDictFree(transform_ctxt.dict)
 *         transform_ctxt.dict = self._c_style.doc.dict
 *         xmlparser.xmlDictReference(transform_ctxt.dict)             # <<<<<<<<<<<<<<
 * 
 *         xslt.xsltSetCtxtParseOptions(
 */
  xmlDictReference(__pyx_v_transform_ctxt->dict);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":499
 * 
 *         xslt.xsltSetCtxtParseOptions(
 *             transform_ctxt, input_doc._parser._parse_options)             # <<<<<<<<<<<<<<
 * 
 *         if profile_run:
 */
  xsltSetCtxtParseOptions(__pyx_v_transform_ctxt, __pyx_v_input_doc->_parser->_parse_options);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":501
 *             transform_ctxt, input_doc._parser._parse_options)
 * 
 *         if profile_run:             # <<<<<<<<<<<<<<
 *             transform_ctxt.profile = 1
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_profile_run); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":502
 * 
 *         if profile_run:
 *             transform_ctxt.profile = 1             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    __pyx_v_transform_ctxt->profile = 1;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":504
 *             transform_ctxt.profile = 1
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             context = self._context._copy()
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":505
 * 
 *         try:
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             context = self._context._copy()
 *             context.register_context(transform_ctxt, input_doc)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":506
 *         try:
 *             self._error_log.connect()
 *             context = self._context._copy()             # <<<<<<<<<<<<<<
 *             context.register_context(transform_ctxt, input_doc)
 * 
 */
    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_context->__pyx_base.__pyx_vtab)->__pyx_base._copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_context))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L10;}
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__XSLTContext))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L10;}
    __Pyx_DECREF(((PyObject *)__pyx_v_context));
    __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":507
 *             self._error_log.connect()
 *             context = self._context._copy()
 *             context.register_context(transform_ctxt, input_doc)             # <<<<<<<<<<<<<<
 * 
 *             resolver_context = self._xslt_resolver_context._copy()
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_context->__pyx_base.__pyx_vtab)->register_context(__pyx_v_context, __pyx_v_transform_ctxt, __pyx_v_input_doc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L10;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":509
 *             context.register_context(transform_ctxt, input_doc)
 * 
 *             resolver_context = self._xslt_resolver_context._copy()             # <<<<<<<<<<<<<<
 *             transform_ctxt._private = <python.PyObject*>resolver_context
 * 
 */
    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->_copy(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_xslt_resolver_context)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L10;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_v_resolver_context));
    __pyx_v_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":510
 * 
 *             resolver_context = self._xslt_resolver_context._copy()
 *             transform_ctxt._private = <python.PyObject*>resolver_context             # <<<<<<<<<<<<<<
 * 
 *             c_result = self._run_transform(
 */
    __pyx_v_transform_ctxt->_private = ((PyObject *)__pyx_v_resolver_context);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":513
 * 
 *             c_result = self._run_transform(
 *                 c_doc, kw, context, transform_ctxt)             # <<<<<<<<<<<<<<
 * 
 *             if transform_ctxt.state != xslt.XSLT_STATE_OK:
 */
    if (!(likely(PyDict_CheckExact(__pyx_v_kw))||((__pyx_v_kw) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_kw)->tp_name), 0))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L10;}
    __pyx_v_c_result = ((struct __pyx_vtabstruct_4lxml_5etree_XSLT *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->__pyx_vtab)->_run_transform(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self), __pyx_v_c_doc, ((PyObject *)__pyx_v_kw), __pyx_v_context, __pyx_v_transform_ctxt);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":515
 *                 c_doc, kw, context, transform_ctxt)
 * 
 *             if transform_ctxt.state != xslt.XSLT_STATE_OK:             # <<<<<<<<<<<<<<
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 */
    __pyx_t_3 = (__pyx_v_transform_ctxt->state != XSLT_STATE_OK);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":516
 * 
 *             if transform_ctxt.state != xslt.XSLT_STATE_OK:
 *                 if c_result is not NULL:             # <<<<<<<<<<<<<<
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL
 */
      __pyx_t_3 = (__pyx_v_c_result != NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":517
 *             if transform_ctxt.state != xslt.XSLT_STATE_OK:
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)             # <<<<<<<<<<<<<<
 *                     c_result = NULL
 * 
 */
        xmlFreeDoc(__pyx_v_c_result);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":518
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL             # <<<<<<<<<<<<<<
 * 
 *             if transform_ctxt.profile:
 */
        __pyx_v_c_result = NULL;
        goto __pyx_L13;
      }
      __pyx_L13:;
      goto __pyx_L12;
    }
    __pyx_L12:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":520
 *                     c_result = NULL
 * 
 *             if transform_ctxt.profile:             # <<<<<<<<<<<<<<
 *                 c_profile_doc = xslt.xsltGetProfileInformation(transform_ctxt)
 *                 if c_profile_doc is not NULL:
 */
    __pyx_t_4 = __pyx_v_transform_ctxt->profile;
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":521
 * 
 *             if transform_ctxt.profile:
 *                 c_profile_doc = xslt.xsltGetProfileInformation(transform_ctxt)             # <<<<<<<<<<<<<<
 *                 if c_profile_doc is not NULL:
 *                     profile_doc = _documentFactory(
 */
      __pyx_v_c_profile_doc = xsltGetProfileInformation(__pyx_v_transform_ctxt);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":522
 *             if transform_ctxt.profile:
 *                 c_profile_doc = xslt.xsltGetProfileInformation(transform_ctxt)
 *                 if c_profile_doc is not NULL:             # <<<<<<<<<<<<<<
 *                     profile_doc = _documentFactory(
 *                         c_profile_doc, input_doc._parser)
 */
      __pyx_t_3 = (__pyx_v_c_profile_doc != NULL);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":524
 *                 if c_profile_doc is not NULL:
 *                     profile_doc = _documentFactory(
 *                         c_profile_doc, input_doc._parser)             # <<<<<<<<<<<<<<
 *         finally:
 *             if context is not None:
 */
        __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_profile_doc, __pyx_v_input_doc->_parser)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L10;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(((PyObject *)__pyx_v_profile_doc));
        __pyx_v_profile_doc = ((struct LxmlDocument *)__pyx_t_1);
        __pyx_t_1 = 0;
        goto __pyx_L15;
      }
      __pyx_L15:;
      goto __pyx_L14;
    }
    __pyx_L14:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L11;
    __pyx_L10: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L11;
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":526
 *                         c_profile_doc, input_doc._parser)
 *         finally:
 *             if context is not None:             # <<<<<<<<<<<<<<
 *                 context.free_context()
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_context) != Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":527
 *         finally:
 *             if context is not None:
 *                 context.free_context()             # <<<<<<<<<<<<<<
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 *             self._error_log.disconnect()
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_context->__pyx_base.__pyx_vtab)->free_context(__pyx_v_context); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L17;
    }
    __pyx_L17:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":528
 *             if context is not None:
 *                 context.free_context()
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 * 
 */
    __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_input_doc->_c_doc, __pyx_v_c_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":529
 *                 context.free_context()
 *             _destroyFakeDoc(input_doc._c_doc, c_doc)
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log);
    goto __pyx_L18;
    __pyx_L16_error:;
    if (__pyx_why == 4) {
      Py_XDECREF(__pyx_exc_type);
      Py_XDECREF(__pyx_exc_value);
      Py_XDECREF(__pyx_exc_tb);
    }
    goto __pyx_L1_error;
    __pyx_L18:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":531
 *             self._error_log.disconnect()
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             if resolver_context is not None and resolver_context._has_raised():
 *                 if c_result is not NULL:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":532
 * 
 *         try:
 *             if resolver_context is not None and resolver_context._has_raised():             # <<<<<<<<<<<<<<
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_resolver_context) != Py_None);
    if (__pyx_t_3) {
      __pyx_t_5 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._has_raised(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context));
      __pyx_t_6 = __pyx_t_5;
    } else {
      __pyx_t_6 = __pyx_t_3;
    }
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":533
 *         try:
 *             if resolver_context is not None and resolver_context._has_raised():
 *                 if c_result is not NULL:             # <<<<<<<<<<<<<<
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL
 */
      __pyx_t_6 = (__pyx_v_c_result != NULL);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":534
 *             if resolver_context is not None and resolver_context._has_raised():
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)             # <<<<<<<<<<<<<<
 *                     c_result = NULL
 *                 resolver_context._raise_if_stored()
 */
        xmlFreeDoc(__pyx_v_c_result);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":535
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL             # <<<<<<<<<<<<<<
 *                 resolver_context._raise_if_stored()
 * 
 */
        __pyx_v_c_result = NULL;
        goto __pyx_L23;
      }
      __pyx_L23:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":536
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL
 *                 resolver_context._raise_if_stored()             # <<<<<<<<<<<<<<
 * 
 *             if context._exc._has_raised():
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._raise_if_stored(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L20;}
      goto __pyx_L22;
    }
    __pyx_L22:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":538
 *                 resolver_context._raise_if_stored()
 * 
 *             if context._exc._has_raised():             # <<<<<<<<<<<<<<
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_has_raised(__pyx_v_context->__pyx_base._exc);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":539
 * 
 *             if context._exc._has_raised():
 *                 if c_result is not NULL:             # <<<<<<<<<<<<<<
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL
 */
      __pyx_t_6 = (__pyx_v_c_result != NULL);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":540
 *             if context._exc._has_raised():
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)             # <<<<<<<<<<<<<<
 *                     c_result = NULL
 *                 context._exc._raise_if_stored()
 */
        xmlFreeDoc(__pyx_v_c_result);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":541
 *                 if c_result is not NULL:
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL             # <<<<<<<<<<<<<<
 *                 context._exc._raise_if_stored()
 * 
 */
        __pyx_v_c_result = NULL;
        goto __pyx_L25;
      }
      __pyx_L25:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":542
 *                     tree.xmlFreeDoc(c_result)
 *                     c_result = NULL
 *                 context._exc._raise_if_stored()             # <<<<<<<<<<<<<<
 * 
 *             if c_result is NULL:
 */
      __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_raise_if_stored(__pyx_v_context->__pyx_base._exc); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L20;}
      goto __pyx_L24;
    }
    __pyx_L24:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":544
 *                 context._exc._raise_if_stored()
 * 
 *             if c_result is NULL:             # <<<<<<<<<<<<<<
 *                 # last error seems to be the most accurate here
 *                 error = self._error_log.last_error
 */
    __pyx_t_6 = (__pyx_v_c_result == NULL);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":546
 *             if c_result is NULL:
 *                 # last error seems to be the most accurate here
 *                 error = self._error_log.last_error             # <<<<<<<<<<<<<<
 *                 if error is not None and error.message:
 *                     if error.line > 0:
 */
      __Pyx_INCREF(((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.last_error);
      __Pyx_DECREF(__pyx_v_error);
      __pyx_v_error = ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.last_error;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":547
 *                 # last error seems to be the most accurate here
 *                 error = self._error_log.last_error
 *                 if error is not None and error.message:             # <<<<<<<<<<<<<<
 *                     if error.line > 0:
 *                         message = u"%s, line %d" % (error.message, error.line)
 */
      __pyx_t_6 = (__pyx_v_error != Py_None);
      if (__pyx_t_6) {
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__message); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_5 = __pyx_t_3;
      } else {
        __pyx_t_5 = __pyx_t_6;
      }
      if (__pyx_t_5) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":548
 *                 error = self._error_log.last_error
 *                 if error is not None and error.message:
 *                     if error.line > 0:             # <<<<<<<<<<<<<<
 *                         message = u"%s, line %d" % (error.message, error.line)
 *                     else:
 */
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__line); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":549
 *                 if error is not None and error.message:
 *                     if error.line > 0:
 *                         message = u"%s, line %d" % (error.message, error.line)             # <<<<<<<<<<<<<<
 *                     else:
 *                         message = error.message
 */
          __pyx_t_7 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__message); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L20;}
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_1 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__line); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L20;}
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L20;}
          __Pyx_GOTREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_7 = 0;
          __pyx_t_1 = 0;
          __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_33), __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L20;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_v_message);
          __pyx_v_message = __pyx_t_1;
          __pyx_t_1 = 0;
          goto __pyx_L28;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":551
 *                         message = u"%s, line %d" % (error.message, error.line)
 *                     else:
 *                         message = error.message             # <<<<<<<<<<<<<<
 *                 elif error is not None and error.line > 0:
 *                     message = u"Error applying stylesheet, line %d" % error.line
 */
          __pyx_t_1 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__message); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L20;}
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_v_message);
          __pyx_v_message = __pyx_t_1;
          __pyx_t_1 = 0;
        }
        __pyx_L28:;
        goto __pyx_L27;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":552
 *                     else:
 *                         message = error.message
 *                 elif error is not None and error.line > 0:             # <<<<<<<<<<<<<<
 *                     message = u"Error applying stylesheet, line %d" % error.line
 *                 else:
 */
      __pyx_t_5 = (__pyx_v_error != Py_None);
      if (__pyx_t_5) {
        __pyx_t_1 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__line); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_3 = __pyx_t_6;
      } else {
        __pyx_t_3 = __pyx_t_5;
      }
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":553
 *                         message = error.message
 *                 elif error is not None and error.line > 0:
 *                     message = u"Error applying stylesheet, line %d" % error.line             # <<<<<<<<<<<<<<
 *                 else:
 *                     message = u"Error applying stylesheet"
 */
        __pyx_t_8 = PyObject_GetAttr(__pyx_v_error, __pyx_n_s__line); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_305), __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L20;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_v_message);
        __pyx_v_message = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L27;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":555
 *                     message = u"Error applying stylesheet, line %d" % error.line
 *                 else:
 *                     message = u"Error applying stylesheet"             # <<<<<<<<<<<<<<
 *                 raise XSLTApplyError(message, self._error_log)
 *         finally:
 */
        __Pyx_INCREF(((PyObject *)__pyx_kp_u_306));
        __Pyx_DECREF(__pyx_v_message);
        __pyx_v_message = ((PyObject *)__pyx_kp_u_306);
      }
      __pyx_L27:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":556
 *                 else:
 *                     message = u"Error applying stylesheet"
 *                 raise XSLTApplyError(message, self._error_log)             # <<<<<<<<<<<<<<
 *         finally:
 *             if resolver_context is not None:
 */
      __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTApplyError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L20;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L20;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_error_log));
      __pyx_t_7 = PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L20;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      {__pyx_filename = __pyx_f[18]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L20;}
      goto __pyx_L26;
    }
    __pyx_L26:;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L21;
    __pyx_L20: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L21;
    }
    __pyx_L21:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":558
 *                 raise XSLTApplyError(message, self._error_log)
 *         finally:
 *             if resolver_context is not None:             # <<<<<<<<<<<<<<
 *                 resolver_context.clear()
 * 
 */
    __pyx_t_3 = (((PyObject *)__pyx_v_resolver_context) != Py_None);
    if (__pyx_t_3) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":559
 *         finally:
 *             if resolver_context is not None:
 *                 resolver_context.clear()             # <<<<<<<<<<<<<<
 * 
 *         result_doc = _documentFactory(c_result, input_doc._parser)
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.clear(((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_v_resolver_context));
      goto __pyx_L30;
    }
    __pyx_L30:;
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":561
 *                 resolver_context.clear()
 * 
 *         result_doc = _documentFactory(c_result, input_doc._parser)             # <<<<<<<<<<<<<<
 * 
 *         c_dict = c_result.dict
 */
  __pyx_t_7 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_result, __pyx_v_input_doc->_parser)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(((PyObject *)__pyx_v_result_doc));
  __pyx_v_result_doc = ((struct LxmlDocument *)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":563
 *         result_doc = _documentFactory(c_result, input_doc._parser)
 * 
 *         c_dict = c_result.dict             # <<<<<<<<<<<<<<
 *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)
 *         if c_dict is not c_result.dict or \
 */
  __pyx_v_c_dict = __pyx_v_c_result->dict;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":564
 * 
 *         c_dict = c_result.dict
 *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)             # <<<<<<<<<<<<<<
 *         if c_dict is not c_result.dict or \
 *                 self._c_style.doc.dict is not c_result.dict or \
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initThreadDictRef(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, (&__pyx_v_c_result->dict));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":565
 *         c_dict = c_result.dict
 *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)
 *         if c_dict is not c_result.dict or \             # <<<<<<<<<<<<<<
 *                 self._c_style.doc.dict is not c_result.dict or \
 *                 input_doc._c_doc.dict is not c_result.dict:
 */
  __pyx_t_3 = (__pyx_v_c_dict != __pyx_v_c_result->dict);
  if (!__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":566
 *         __GLOBAL_PARSER_CONTEXT.initThreadDictRef(&c_result.dict)
 *         if c_dict is not c_result.dict or \
 *                 self._c_style.doc.dict is not c_result.dict or \             # <<<<<<<<<<<<<<
 *                 input_doc._c_doc.dict is not c_result.dict:
 *             with nogil:
 */
    __pyx_t_5 = (((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style->doc->dict != __pyx_v_c_result->dict);
    if (!__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":567
 *         if c_dict is not c_result.dict or \
 *                 self._c_style.doc.dict is not c_result.dict or \
 *                 input_doc._c_doc.dict is not c_result.dict:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 if c_dict is not c_result.dict:
 */
      __pyx_t_6 = (__pyx_v_input_doc->_c_doc->dict != __pyx_v_c_result->dict);
      __pyx_t_9 = __pyx_t_6;
    } else {
      __pyx_t_9 = __pyx_t_5;
    }
    __pyx_t_5 = __pyx_t_9;
  } else {
    __pyx_t_5 = __pyx_t_3;
  }
  if (__pyx_t_5) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":568
 *                 self._c_style.doc.dict is not c_result.dict or \
 *                 input_doc._c_doc.dict is not c_result.dict:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if c_dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":569
 *                 input_doc._c_doc.dict is not c_result.dict:
 *             with nogil:
 *                 if c_dict is not c_result.dict:             # <<<<<<<<<<<<<<
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        c_dict, c_result.dict)
 */
        __pyx_t_5 = (__pyx_v_c_dict != __pyx_v_c_result->dict);
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":571
 *                 if c_dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        c_dict, c_result.dict)             # <<<<<<<<<<<<<<
 *                 if self._c_style.doc.dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 */
          __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), __pyx_v_c_dict, __pyx_v_c_result->dict);
          goto __pyx_L35;
        }
        __pyx_L35:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":572
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        c_dict, c_result.dict)
 *                 if self._c_style.doc.dict is not c_result.dict:             # <<<<<<<<<<<<<<
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        self._c_style.doc.dict, c_result.dict)
 */
        __pyx_t_5 = (((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style->doc->dict != __pyx_v_c_result->dict);
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":574
 *                 if self._c_style.doc.dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        self._c_style.doc.dict, c_result.dict)             # <<<<<<<<<<<<<<
 *                 if input_doc._c_doc.dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 */
          __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self)->_c_style->doc->dict, __pyx_v_c_result->dict);
          goto __pyx_L36;
        }
        __pyx_L36:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":575
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        self._c_style.doc.dict, c_result.dict)
 *                 if input_doc._c_doc.dict is not c_result.dict:             # <<<<<<<<<<<<<<
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        input_doc._c_doc.dict, c_result.dict)
 */
        __pyx_t_5 = (__pyx_v_input_doc->_c_doc->dict != __pyx_v_c_result->dict);
        if (__pyx_t_5) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":577
 *                 if input_doc._c_doc.dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 *                                        input_doc._c_doc.dict, c_result.dict)             # <<<<<<<<<<<<<<
 * 
 *         return _xsltResultTreeFactory(result_doc, self, profile_doc)
 */
          __pyx_f_4lxml_5etree_fixThreadDictNames(((xmlNode *)__pyx_v_c_result), __pyx_v_input_doc->_c_doc->dict, __pyx_v_c_result->dict);
          goto __pyx_L37;
        }
        __pyx_L37:;
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":568
 *                 self._c_style.doc.dict is not c_result.dict or \
 *                 input_doc._c_doc.dict is not c_result.dict:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 if c_dict is not c_result.dict:
 *                     fixThreadDictNames(<xmlNode*>c_result,
 */
        Py_BLOCK_THREADS
      }
    }
    goto __pyx_L31;
  }
  __pyx_L31:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":579
 *                                        input_doc._c_doc.dict, c_result.dict)
 * 
 *         return _xsltResultTreeFactory(result_doc, self, profile_doc)             # <<<<<<<<<<<<<<
 * 
 *     cdef xmlDoc* _run_transform(self, xmlDoc* c_input_doc,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __pyx_f_4lxml_5etree__xsltResultTreeFactory(__pyx_v_result_doc, ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_v_self), __pyx_v_profile_doc); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("lxml.etree.XSLT.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_kw);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_resolver_context);
  __Pyx_DECREF((PyObject *)__pyx_v_input_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF((PyObject *)__pyx_v_result_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_profile_doc);
  __Pyx_DECREF(__pyx_v_error);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v__input);
  __Pyx_DECREF(__pyx_v_profile_run);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":581
 *         return _xsltResultTreeFactory(result_doc, self, profile_doc)
 * 
 *     cdef xmlDoc* _run_transform(self, xmlDoc* c_input_doc,             # <<<<<<<<<<<<<<
 *                                 dict parameters, _XSLTContext context,
 *                                 xslt.xsltTransformContext* transform_ctxt):
 */

static  xmlDoc *__pyx_f_4lxml_5etree_4XSLT__run_transform(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_self, xmlDoc *__pyx_v_c_input_doc, PyObject *__pyx_v_parameters, struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context, xsltTransformContext *__pyx_v_transform_ctxt) {
  xmlDoc *__pyx_v_c_result;
  char **__pyx_v_params;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_parameter_count;
  PyObject *__pyx_v_keep_ref;
  PyObject *__pyx_v_key;
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_v;
  xmlDoc *__pyx_r;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  void *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  __Pyx_RefNannySetupContext("_run_transform");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_parameters);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __pyx_v_keep_ref = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_k = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_v = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":590
 * 
 *         xslt.xsltSetTransformErrorFunc(transform_ctxt, <void*>self._error_log,
 *                                        _receiveXSLTError)             # <<<<<<<<<<<<<<
 * 
 *         if self._access_control is not None:
 */
  xsltSetTransformErrorFunc(__pyx_v_transform_ctxt, ((void *)__pyx_v_self->_error_log), __pyx_f_4lxml_5etree__receiveXSLTError);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":592
 *                                        _receiveXSLTError)
 * 
 *         if self._access_control is not None:             # <<<<<<<<<<<<<<
 *             self._access_control._register_in_context(transform_ctxt)
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_access_control) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":593
 * 
 *         if self._access_control is not None:
 *             self._access_control._register_in_context(transform_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         parameter_count = len(parameters)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl *)__pyx_v_self->_access_control->__pyx_vtab)->_register_in_context(__pyx_v_self->_access_control, __pyx_v_transform_ctxt);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":595
 *             self._access_control._register_in_context(transform_ctxt)
 * 
 *         parameter_count = len(parameters)             # <<<<<<<<<<<<<<
 *         if parameter_count > 0:
 *             # allocate space for parameters
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_parameters)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_parameter_count = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":596
 * 
 *         parameter_count = len(parameters)
 *         if parameter_count > 0:             # <<<<<<<<<<<<<<
 *             # allocate space for parameters
 *             # * 2 as we want an entry for both key and value,
 */
  __pyx_t_1 = (__pyx_v_parameter_count > 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":601
 *             # and + 1 as array is NULL terminated
 *             params = <char**>python.PyMem_Malloc(
 *                 sizeof(char*) * (parameter_count * 2 + 1))             # <<<<<<<<<<<<<<
 *             try:
 *                 i = 0
 */
    __pyx_v_params = ((char **)PyMem_Malloc(((sizeof(char *)) * ((__pyx_v_parameter_count * 2) + 1))));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":602
 *             params = <char**>python.PyMem_Malloc(
 *                 sizeof(char*) * (parameter_count * 2 + 1))
 *             try:             # <<<<<<<<<<<<<<
 *                 i = 0
 *                 keep_ref = []
 */
    {
      PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
      __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
      __Pyx_XGOTREF(__pyx_save_exc_type);
      __Pyx_XGOTREF(__pyx_save_exc_value);
      __Pyx_XGOTREF(__pyx_save_exc_tb);
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":603
 *                 sizeof(char*) * (parameter_count * 2 + 1))
 *             try:
 *                 i = 0             # <<<<<<<<<<<<<<
 *                 keep_ref = []
 *                 for key, value in parameters.iteritems():
 */
        __pyx_v_i = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":604
 *             try:
 *                 i = 0
 *                 keep_ref = []             # <<<<<<<<<<<<<<
 *                 for key, value in parameters.iteritems():
 *                     k = _utf8(key)
 */
        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        __Pyx_DECREF(((PyObject *)__pyx_v_keep_ref));
        __pyx_v_keep_ref = __pyx_t_3;
        __pyx_t_3 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":605
 *                 i = 0
 *                 keep_ref = []
 *                 for key, value in parameters.iteritems():             # <<<<<<<<<<<<<<
 *                     k = _utf8(key)
 *                     if isinstance(value, _XSLTQuotedStringParam):
 */
        __Pyx_INCREF(((PyObject *)__pyx_v_parameters));
        __Pyx_XDECREF(__pyx_t_3);
        __pyx_t_3 = ((PyObject *)__pyx_v_parameters);
        __pyx_t_2 = 0;
        while (1) {
          if (!PyDict_Next(__pyx_t_3, (&__pyx_t_2), ((PyObject **)(&__pyx_t_4)), ((PyObject **)(&__pyx_t_5)))) break;
          __Pyx_INCREF(((PyObject *)__pyx_t_4));
          __Pyx_DECREF(__pyx_v_key);
          __pyx_v_key = ((PyObject *)__pyx_t_4);
          __Pyx_INCREF(((PyObject *)__pyx_t_5));
          __Pyx_DECREF(__pyx_v_value);
          __pyx_v_value = ((PyObject *)__pyx_t_5);

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":606
 *                 keep_ref = []
 *                 for key, value in parameters.iteritems():
 *                     k = _utf8(key)             # <<<<<<<<<<<<<<
 *                     if isinstance(value, _XSLTQuotedStringParam):
 *                         v = (<_XSLTQuotedStringParam>value).strval
 */
          __pyx_t_6 = __pyx_f_4lxml_5etree__utf8(__pyx_v_key); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_v_k);
          __pyx_v_k = __pyx_t_6;
          __pyx_t_6 = 0;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":607
 *                 for key, value in parameters.iteritems():
 *                     k = _utf8(key)
 *                     if isinstance(value, _XSLTQuotedStringParam):             # <<<<<<<<<<<<<<
 *                         v = (<_XSLTQuotedStringParam>value).strval
 *                         xslt.xsltQuoteOneUserParam(
 */
          __pyx_t_1 = PyObject_TypeCheck(__pyx_v_value, ((PyTypeObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTQuotedStringParam))); 
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":608
 *                     k = _utf8(key)
 *                     if isinstance(value, _XSLTQuotedStringParam):
 *                         v = (<_XSLTQuotedStringParam>value).strval             # <<<<<<<<<<<<<<
 *                         xslt.xsltQuoteOneUserParam(
 *                             transform_ctxt, _cstr(k), _cstr(v))
 */
            __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_value)->strval));
            __Pyx_DECREF(__pyx_v_v);
            __pyx_v_v = ((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)__pyx_v_value)->strval);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":610
 *                         v = (<_XSLTQuotedStringParam>value).strval
 *                         xslt.xsltQuoteOneUserParam(
 *                             transform_ctxt, _cstr(k), _cstr(v))             # <<<<<<<<<<<<<<
 *                     else:
 *                         v = _utf8(value)
 */
            xsltQuoteOneUserParam(__pyx_v_transform_ctxt, PyString_AS_STRING(__pyx_v_k), PyString_AS_STRING(__pyx_v_v));
            goto __pyx_L15;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":612
 *                             transform_ctxt, _cstr(k), _cstr(v))
 *                     else:
 *                         v = _utf8(value)             # <<<<<<<<<<<<<<
 *                         params[i] = _cstr(k)
 *                         i += 1
 */
            __pyx_t_6 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_v_v);
            __pyx_v_v = __pyx_t_6;
            __pyx_t_6 = 0;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":613
 *                     else:
 *                         v = _utf8(value)
 *                         params[i] = _cstr(k)             # <<<<<<<<<<<<<<
 *                         i += 1
 *                         params[i] = _cstr(v)
 */
            (__pyx_v_params[__pyx_v_i]) = PyString_AS_STRING(__pyx_v_k);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":614
 *                         v = _utf8(value)
 *                         params[i] = _cstr(k)
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         params[i] = _cstr(v)
 *                         i += 1
 */
            __pyx_v_i += 1;

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":615
 *                         params[i] = _cstr(k)
 *                         i += 1
 *                         params[i] = _cstr(v)             # <<<<<<<<<<<<<<
 *                         i += 1
 *                     keep_ref.append(k)
 */
            (__pyx_v_params[__pyx_v_i]) = PyString_AS_STRING(__pyx_v_v);

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":616
 *                         i += 1
 *                         params[i] = _cstr(v)
 *                         i += 1             # <<<<<<<<<<<<<<
 *                     keep_ref.append(k)
 *                     keep_ref.append(v)
 */
            __pyx_v_i += 1;
          }
          __pyx_L15:;

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":617
 *                         params[i] = _cstr(v)
 *                         i += 1
 *                     keep_ref.append(k)             # <<<<<<<<<<<<<<
 *                     keep_ref.append(v)
 *             except:
 */
          if (unlikely(__pyx_v_keep_ref == Py_None)) {
            PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L5_error;} 
          }
          __pyx_t_7 = PyList_Append(((PyObject *)__pyx_v_keep_ref), __pyx_v_k); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L5_error;}

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":618
 *                         i += 1
 *                     keep_ref.append(k)
 *                     keep_ref.append(v)             # <<<<<<<<<<<<<<
 *             except:
 *                 python.PyMem_Free(params)
 */
          if (unlikely(__pyx_v_keep_ref == Py_None)) {
            PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L5_error;} 
          }
          __pyx_t_7 = PyList_Append(((PyObject *)__pyx_v_keep_ref), __pyx_v_v); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
      __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
      __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":619
 *                     keep_ref.append(k)
 *                     keep_ref.append(v)
 *             except:             # <<<<<<<<<<<<<<
 *                 python.PyMem_Free(params)
 *                 raise
 */
      /*except:*/ {
        __Pyx_AddTraceback("lxml.etree.XSLT._run_transform");
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_8);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":620
 *                     keep_ref.append(v)
 *             except:
 *                 python.PyMem_Free(params)             # <<<<<<<<<<<<<<
 *                 raise
 *             params[i] = NULL
 */
        PyMem_Free(__pyx_v_params);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":621
 *             except:
 *                 python.PyMem_Free(params)
 *                 raise             # <<<<<<<<<<<<<<
 *             params[i] = NULL
 *         else:
 */
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_8);
        __Pyx_ErrRestore(__pyx_t_3, __pyx_t_6, __pyx_t_8);
        __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_8 = 0; 
        {__pyx_filename = __pyx_f[18]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L6_exception_handled;
      }
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_save_exc_type);
      __Pyx_XGIVEREF(__pyx_save_exc_value);
      __Pyx_XGIVEREF(__pyx_save_exc_tb);
      __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
      __pyx_L12_try_end:;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":622
 *                 python.PyMem_Free(params)
 *                 raise
 *             params[i] = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             params = NULL
 */
    (__pyx_v_params[__pyx_v_i]) = NULL;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":624
 *             params[i] = NULL
 *         else:
 *             params = NULL             # <<<<<<<<<<<<<<
 * 
 *         with nogil:
 */
    __pyx_v_params = NULL;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":626
 *             params = NULL
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             c_result = xslt.xsltApplyStylesheetUser(
 *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":628
 *         with nogil:
 *             c_result = xslt.xsltApplyStylesheetUser(
 *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         if params is not NULL:
 */
      __pyx_v_c_result = xsltApplyStylesheetUser(__pyx_v_self->_c_style, __pyx_v_c_input_doc, __pyx_v_params, NULL, NULL, __pyx_v_transform_ctxt);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":626
 *             params = NULL
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             c_result = xslt.xsltApplyStylesheetUser(
 *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":630
 *                 self._c_style, c_input_doc, params, NULL, NULL, transform_ctxt)
 * 
 *         if params is not NULL:             # <<<<<<<<<<<<<<
 *             # deallocate space for parameters
 *             python.PyMem_Free(params)
 */
  __pyx_t_1 = (__pyx_v_params != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":632
 *         if params is not NULL:
 *             # deallocate space for parameters
 *             python.PyMem_Free(params)             # <<<<<<<<<<<<<<
 * 
 *         return c_result
 */
    PyMem_Free(__pyx_v_params);
    goto __pyx_L21;
  }
  __pyx_L21:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":634
 *             python.PyMem_Free(params)
 * 
 *         return c_result             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "etree_defs.h":
 */
  __pyx_r = __pyx_v_c_result;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_WriteUnraisable("lxml.etree.XSLT._run_transform");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_keep_ref);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF(__pyx_v_k);
  __Pyx_DECREF(__pyx_v_v);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_parameters);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":640
 *     cdef XSLT NEW_XSLT "PY_NEW" (object t)
 * 
 * cdef XSLT _copyXSLT(XSLT stylesheet):             # <<<<<<<<<<<<<<
 *     cdef XSLT new_xslt
 *     cdef xmlDoc* c_doc
 */

static  struct __pyx_obj_4lxml_5etree_XSLT *__pyx_f_4lxml_5etree__copyXSLT(struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_stylesheet) {
  struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_new_xslt;
  xmlDoc *__pyx_v_c_doc;
  struct __pyx_obj_4lxml_5etree_XSLT *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  xmlDoc *__pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_copyXSLT");
  __Pyx_INCREF((PyObject *)__pyx_v_stylesheet);
  __pyx_v_new_xslt = ((struct __pyx_obj_4lxml_5etree_XSLT *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":643
 *     cdef XSLT new_xslt
 *     cdef xmlDoc* c_doc
 *     new_xslt = NEW_XSLT(XSLT) # without calling __init__()             # <<<<<<<<<<<<<<
 *     new_xslt._access_control = stylesheet._access_control
 *     new_xslt._error_log = _ErrorLog()
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XSLT)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_xslt));
  __pyx_v_new_xslt = ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":644
 *     cdef xmlDoc* c_doc
 *     new_xslt = NEW_XSLT(XSLT) # without calling __init__()
 *     new_xslt._access_control = stylesheet._access_control             # <<<<<<<<<<<<<<
 *     new_xslt._error_log = _ErrorLog()
 *     new_xslt._context = stylesheet._context._copy()
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_stylesheet->_access_control));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_stylesheet->_access_control));
  __Pyx_GOTREF(__pyx_v_new_xslt->_access_control);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_xslt->_access_control));
  __pyx_v_new_xslt->_access_control = __pyx_v_stylesheet->_access_control;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":645
 *     new_xslt = NEW_XSLT(XSLT) # without calling __init__()
 *     new_xslt._access_control = stylesheet._access_control
 *     new_xslt._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 *     new_xslt._context = stylesheet._context._copy()
 * 
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_new_xslt->_error_log);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_xslt->_error_log));
  __pyx_v_new_xslt->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":646
 *     new_xslt._access_control = stylesheet._access_control
 *     new_xslt._error_log = _ErrorLog()
 *     new_xslt._context = stylesheet._context._copy()             # <<<<<<<<<<<<<<
 * 
 *     new_xslt._xslt_resolver_context = stylesheet._xslt_resolver_context._copy()
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__XSLTContext *)__pyx_v_stylesheet->_context->__pyx_base.__pyx_vtab)->__pyx_base._copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_stylesheet->_context))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__XSLTContext))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_new_xslt->_context);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_xslt->_context));
  __pyx_v_new_xslt->_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":648
 *     new_xslt._context = stylesheet._context._copy()
 * 
 *     new_xslt._xslt_resolver_context = stylesheet._xslt_resolver_context._copy()             # <<<<<<<<<<<<<<
 *     new_xslt._xslt_resolver_context._c_style_doc = _copyDoc(
 *         stylesheet._xslt_resolver_context._c_style_doc, 1)
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext *)__pyx_v_stylesheet->_xslt_resolver_context->__pyx_base.__pyx_base.__pyx_vtab)->_copy(__pyx_v_stylesheet->_xslt_resolver_context)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_new_xslt->_xslt_resolver_context);
  __Pyx_DECREF(((PyObject *)__pyx_v_new_xslt->_xslt_resolver_context));
  __pyx_v_new_xslt->_xslt_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":650
 *     new_xslt._xslt_resolver_context = stylesheet._xslt_resolver_context._copy()
 *     new_xslt._xslt_resolver_context._c_style_doc = _copyDoc(
 *         stylesheet._xslt_resolver_context._c_style_doc, 1)             # <<<<<<<<<<<<<<
 * 
 *     c_doc = _copyDoc(stylesheet._c_style.doc, 1)
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_stylesheet->_xslt_resolver_context->_c_style_doc, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":649
 * 
 *     new_xslt._xslt_resolver_context = stylesheet._xslt_resolver_context._copy()
 *     new_xslt._xslt_resolver_context._c_style_doc = _copyDoc(             # <<<<<<<<<<<<<<
 *         stylesheet._xslt_resolver_context._c_style_doc, 1)
 * 
 */
  __pyx_v_new_xslt->_xslt_resolver_context->_c_style_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":652
 *         stylesheet._xslt_resolver_context._c_style_doc, 1)
 * 
 *     c_doc = _copyDoc(stylesheet._c_style.doc, 1)             # <<<<<<<<<<<<<<
 *     new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *     if new_xslt._c_style is NULL:
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__copyDoc(__pyx_v_stylesheet->_c_style->doc, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_2;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":653
 * 
 *     c_doc = _copyDoc(stylesheet._c_style.doc, 1)
 *     new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc)             # <<<<<<<<<<<<<<
 *     if new_xslt._c_style is NULL:
 *         tree.xmlFreeDoc(c_doc)
 */
  __pyx_v_new_xslt->_c_style = xsltParseStylesheetDoc(__pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":654
 *     c_doc = _copyDoc(stylesheet._c_style.doc, 1)
 *     new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *     if new_xslt._c_style is NULL:             # <<<<<<<<<<<<<<
 *         tree.xmlFreeDoc(c_doc)
 *         python.PyErr_NoMemory()
 */
  __pyx_t_3 = (__pyx_v_new_xslt->_c_style == NULL);
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":655
 *     new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc)
 *     if new_xslt._c_style is NULL:
 *         tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 * 
 */
    xmlFreeDoc(__pyx_v_c_doc);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":656
 *     if new_xslt._c_style is NULL:
 *         tree.xmlFreeDoc(c_doc)
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     return new_xslt
 */
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":658
 *         python.PyErr_NoMemory()
 * 
 *     return new_xslt             # <<<<<<<<<<<<<<
 * 
 * cdef class _XSLTResultTree(_ElementTree):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_new_xslt));
  __pyx_r = __pyx_v_new_xslt;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree_XSLT *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._copyXSLT");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_new_xslt);
  __Pyx_DECREF((PyObject *)__pyx_v_stylesheet);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":666
 *     cdef Py_ssize_t _buffer_len
 *     cdef Py_ssize_t _buffer_refcnt
 *     cdef _saveToStringAndSize(self, char** s, int* l):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         cdef int r
 */

static  PyObject *__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize(struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_self, char **__pyx_v_s, int *__pyx_v_l) {
  struct LxmlDocument *__pyx_v_doc;
  int __pyx_v_r;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("_saveToStringAndSize");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":669
 *         cdef _Document doc
 *         cdef int r
 *         if self._context_node is not None:             # <<<<<<<<<<<<<<
 *             doc = self._context_node._doc
 *         if doc is None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_self->__pyx_base._context_node) != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":670
 *         cdef int r
 *         if self._context_node is not None:
 *             doc = self._context_node._doc             # <<<<<<<<<<<<<<
 *         if doc is None:
 *             doc = self._doc
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._context_node->_doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = __pyx_v_self->__pyx_base._context_node->_doc;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":671
 *         if self._context_node is not None:
 *             doc = self._context_node._doc
 *         if doc is None:             # <<<<<<<<<<<<<<
 *             doc = self._doc
 *             if doc is None:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":672
 *             doc = self._context_node._doc
 *         if doc is None:
 *             doc = self._doc             # <<<<<<<<<<<<<<
 *             if doc is None:
 *                 s[0] = NULL
 */
    __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base._doc));
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = __pyx_v_self->__pyx_base._doc;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":673
 *         if doc is None:
 *             doc = self._doc
 *             if doc is None:             # <<<<<<<<<<<<<<
 *                 s[0] = NULL
 *                 return
 */
    __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":674
 *             doc = self._doc
 *             if doc is None:
 *                 s[0] = NULL             # <<<<<<<<<<<<<<
 *                 return
 *         with nogil:
 */
      (__pyx_v_s[0]) = NULL;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":675
 *             if doc is None:
 *                 s[0] = NULL
 *                 return             # <<<<<<<<<<<<<<
 *         with nogil:
 *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":676
 *                 s[0] = NULL
 *                 return
 *         with nogil:             # <<<<<<<<<<<<<<
 *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
 *                                             self._xslt._c_style)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":678
 *         with nogil:
 *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
 *                                             self._xslt._c_style)             # <<<<<<<<<<<<<<
 *         if r == -1:
 *             python.PyErr_NoMemory()
 */
      __pyx_v_r = xsltSaveResultToString(__pyx_v_s, __pyx_v_l, __pyx_v_doc->_c_doc, __pyx_v_self->_xslt->_c_style);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":676
 *                 s[0] = NULL
 *                 return
 *         with nogil:             # <<<<<<<<<<<<<<
 *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
 *                                             self._xslt._c_style)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":679
 *             r = xslt.xsltSaveResultToString(s, l, doc._c_doc,
 *                                             self._xslt._c_style)
 *         if r == -1:             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 * 
 */
  __pyx_t_1 = (__pyx_v_r == -1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":680
 *                                             self._xslt._c_style)
 *         if r == -1:
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._XSLTResultTree._saveToStringAndSize");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":682
 *             python.PyErr_NoMemory()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char* s
 *         cdef int l
 */

static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree___str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree___str__(PyObject *__pyx_v_self) {
  char *__pyx_v_s;
  int __pyx_v_l;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__str__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":685
 *         cdef char* s
 *         cdef int l
 *         if python.IS_PYTHON3:             # <<<<<<<<<<<<<<
 *             return self.__unicode__()
 *         self._saveToStringAndSize(&s, &l)
 */
  __pyx_t_1 = IS_PYTHON3;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":686
 *         cdef int l
 *         if python.IS_PYTHON3:
 *             return self.__unicode__()             # <<<<<<<<<<<<<<
 *         self._saveToStringAndSize(&s, &l)
 *         if s is NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____unicode__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":687
 *         if python.IS_PYTHON3:
 *             return self.__unicode__()
 *         self._saveToStringAndSize(&s, &l)             # <<<<<<<<<<<<<<
 *         if s is NULL:
 *             return ''
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_saveToStringAndSize(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self), (&__pyx_v_s), (&__pyx_v_l)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":688
 *             return self.__unicode__()
 *         self._saveToStringAndSize(&s, &l)
 *         if s is NULL:             # <<<<<<<<<<<<<<
 *             return ''
 *         # we must not use 'funicode' here as this is not always UTF-8
 */
  __pyx_t_1 = (__pyx_v_s == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":689
 *         self._saveToStringAndSize(&s, &l)
 *         if s is NULL:
 *             return ''             # <<<<<<<<<<<<<<
 *         # we must not use 'funicode' here as this is not always UTF-8
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
    __pyx_r = ((PyObject *)__pyx_kp_s_14);
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":691
 *             return ''
 *         # we must not use 'funicode' here as this is not always UTF-8
 *         try:             # <<<<<<<<<<<<<<
 *             result = python.PyString_FromStringAndSize(s, l)
 *         finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":692
 *         # we must not use 'funicode' here as this is not always UTF-8
 *         try:
 *             result = python.PyString_FromStringAndSize(s, l)             # <<<<<<<<<<<<<<
 *         finally:
 *             tree.xmlFree(s)
 */
    __pyx_t_3 = PyString_FromStringAndSize(__pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L8;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L9;
    __pyx_L8: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":694
 *             result = python.PyString_FromStringAndSize(s, l)
 *         finally:
 *             tree.xmlFree(s)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
    xmlFree(__pyx_v_s);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":695
 *         finally:
 *             tree.xmlFree(s)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def __unicode__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XSLTResultTree.__str__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":697
 *         return result
 * 
 *     def __unicode__(self):             # <<<<<<<<<<<<<<
 *         cdef char* encoding
 *         cdef char* s
 */

static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree___unicode__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree___unicode__(PyObject *__pyx_v_self, PyObject *unused) {
  char *__pyx_v_encoding;
  char *__pyx_v_s;
  int __pyx_v_l;
  PyObject *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__unicode__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_result = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":701
 *         cdef char* s
 *         cdef int l
 *         self._saveToStringAndSize(&s, &l)             # <<<<<<<<<<<<<<
 *         if s is NULL:
 *             return u''
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_saveToStringAndSize(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self), (&__pyx_v_s), (&__pyx_v_l)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":702
 *         cdef int l
 *         self._saveToStringAndSize(&s, &l)
 *         if s is NULL:             # <<<<<<<<<<<<<<
 *             return u''
 *         encoding = self._xslt._c_style.encoding
 */
  __pyx_t_2 = (__pyx_v_s == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":703
 *         self._saveToStringAndSize(&s, &l)
 *         if s is NULL:
 *             return u''             # <<<<<<<<<<<<<<
 *         encoding = self._xslt._c_style.encoding
 *         if encoding is NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
    __pyx_r = ((PyObject *)__pyx_kp_u_14);
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":704
 *         if s is NULL:
 *             return u''
 *         encoding = self._xslt._c_style.encoding             # <<<<<<<<<<<<<<
 *         if encoding is NULL:
 *             encoding = 'ascii'
 */
  __pyx_v_encoding = ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_xslt->_c_style->encoding;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":705
 *             return u''
 *         encoding = self._xslt._c_style.encoding
 *         if encoding is NULL:             # <<<<<<<<<<<<<<
 *             encoding = 'ascii'
 *         try:
 */
  __pyx_t_2 = (__pyx_v_encoding == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":706
 *         encoding = self._xslt._c_style.encoding
 *         if encoding is NULL:
 *             encoding = 'ascii'             # <<<<<<<<<<<<<<
 *         try:
 *             result = python.PyUnicode_Decode(s, l, encoding, 'strict')
 */
    __pyx_v_encoding = __pyx_k__ascii;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":707
 *         if encoding is NULL:
 *             encoding = 'ascii'
 *         try:             # <<<<<<<<<<<<<<
 *             result = python.PyUnicode_Decode(s, l, encoding, 'strict')
 *         finally:
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":708
 *             encoding = 'ascii'
 *         try:
 *             result = python.PyUnicode_Decode(s, l, encoding, 'strict')             # <<<<<<<<<<<<<<
 *         finally:
 *             tree.xmlFree(s)
 */
    __pyx_t_1 = PyUnicode_Decode(__pyx_v_s, __pyx_v_l, __pyx_v_encoding, __pyx_k__strict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L8;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_result);
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L9;
    __pyx_L8: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":710
 *             result = python.PyUnicode_Decode(s, l, encoding, 'strict')
 *         finally:
 *             tree.xmlFree(s)             # <<<<<<<<<<<<<<
 *         return _stripEncodingDeclaration(result)
 * 
 */
    xmlFree(__pyx_v_s);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":711
 *         finally:
 *             tree.xmlFree(s)
 *         return _stripEncodingDeclaration(result)             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer* buffer, int flags):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__stripEncodingDeclaration(__pyx_v_result); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._XSLTResultTree.__unicode__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_result);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":713
 *         return _stripEncodingDeclaration(result)
 * 
 *     def __getbuffer__(self, Py_buffer* buffer, int flags):             # <<<<<<<<<<<<<<
 *         cdef int l
 *         if buffer is NULL:
 */

static int __pyx_pf_4lxml_5etree_15_XSLTResultTree___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags); /*proto*/
static int __pyx_pf_4lxml_5etree_15_XSLTResultTree___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) {
  int __pyx_v_l;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  __Pyx_RefNannySetupContext("__getbuffer__");
  if (__pyx_v_buffer == NULL) return 0;
  __pyx_v_buffer->obj = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(__pyx_v_buffer->obj);
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":715
 *     def __getbuffer__(self, Py_buffer* buffer, int flags):
 *         cdef int l
 *         if buffer is NULL:             # <<<<<<<<<<<<<<
 *             return # LOCK
 *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
 */
  __pyx_t_1 = (__pyx_v_buffer == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":716
 *         cdef int l
 *         if buffer is NULL:
 *             return # LOCK             # <<<<<<<<<<<<<<
 *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
 *             self._saveToStringAndSize(<char**>&buffer.buf, &l)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":717
 *         if buffer is NULL:
 *             return # LOCK
 *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
 *             self._saveToStringAndSize(<char**>&buffer.buf, &l)
 *             buffer.len = l
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (__pyx_v_flags & PyBUF_WRITABLE);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":718
 *             return # LOCK
 *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
 *             self._saveToStringAndSize(<char**>&buffer.buf, &l)             # <<<<<<<<<<<<<<
 *             buffer.len = l
 *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->__pyx_base.__pyx_vtab)->_saveToStringAndSize(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self), ((char **)(&__pyx_v_buffer->buf)), (&__pyx_v_l)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":719
 *         if self._buffer is NULL or flags & python.PyBUF_WRITABLE:
 *             self._saveToStringAndSize(<char**>&buffer.buf, &l)
 *             buffer.len = l             # <<<<<<<<<<<<<<
 *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
 *                 self._buffer = <char*>buffer.buf
 */
    __pyx_v_buffer->len = __pyx_v_l;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":720
 *             self._saveToStringAndSize(<char**>&buffer.buf, &l)
 *             buffer.len = l
 *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
 *                 self._buffer = <char*>buffer.buf
 *                 self._buffer_len = l
 */
    __pyx_t_3 = (((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer == NULL);
    if (__pyx_t_3) {
      __pyx_t_1 = (!(__pyx_v_flags & PyBUF_WRITABLE));
      __pyx_t_5 = __pyx_t_1;
    } else {
      __pyx_t_5 = __pyx_t_3;
    }
    if (__pyx_t_5) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":721
 *             buffer.len = l
 *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
 *                 self._buffer = <char*>buffer.buf             # <<<<<<<<<<<<<<
 *                 self._buffer_len = l
 *                 self._buffer_refcnt = 1
 */
      ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer = ((char *)__pyx_v_buffer->buf);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":722
 *             if self._buffer is NULL and not flags & python.PyBUF_WRITABLE:
 *                 self._buffer = <char*>buffer.buf
 *                 self._buffer_len = l             # <<<<<<<<<<<<<<
 *                 self._buffer_refcnt = 1
 *         else:
 */
      ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_len = __pyx_v_l;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":723
 *                 self._buffer = <char*>buffer.buf
 *                 self._buffer_len = l
 *                 self._buffer_refcnt = 1             # <<<<<<<<<<<<<<
 *         else:
 *             buffer.buf = <char*>self._buffer
 */
      ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_refcnt = 1;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":725
 *                 self._buffer_refcnt = 1
 *         else:
 *             buffer.buf = <char*>self._buffer             # <<<<<<<<<<<<<<
 *             buffer.len = self._buffer_len
 *             self._buffer_refcnt += 1
 */
    __pyx_v_buffer->buf = ((char *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":726
 *         else:
 *             buffer.buf = <char*>self._buffer
 *             buffer.len = self._buffer_len             # <<<<<<<<<<<<<<
 *             self._buffer_refcnt += 1
 *         if flags & python.PyBUF_WRITABLE:
 */
    __pyx_v_buffer->len = ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_len;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":727
 *             buffer.buf = <char*>self._buffer
 *             buffer.len = self._buffer_len
 *             self._buffer_refcnt += 1             # <<<<<<<<<<<<<<
 *         if flags & python.PyBUF_WRITABLE:
 *             buffer.readonly = 0
 */
    ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_refcnt += 1;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":728
 *             buffer.len = self._buffer_len
 *             self._buffer_refcnt += 1
 *         if flags & python.PyBUF_WRITABLE:             # <<<<<<<<<<<<<<
 *             buffer.readonly = 0
 *         else:
 */
  __pyx_t_2 = (__pyx_v_flags & PyBUF_WRITABLE);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":729
 *             self._buffer_refcnt += 1
 *         if flags & python.PyBUF_WRITABLE:
 *             buffer.readonly = 0             # <<<<<<<<<<<<<<
 *         else:
 *             buffer.readonly = 1
 */
    __pyx_v_buffer->readonly = 0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":731
 *             buffer.readonly = 0
 *         else:
 *             buffer.readonly = 1             # <<<<<<<<<<<<<<
 *         if flags & python.PyBUF_FORMAT:
 *             buffer.format = "B"
 */
    __pyx_v_buffer->readonly = 1;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":732
 *         else:
 *             buffer.readonly = 1
 *         if flags & python.PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *             buffer.format = "B"
 *         else:
 */
  __pyx_t_2 = (__pyx_v_flags & PyBUF_FORMAT);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":733
 *             buffer.readonly = 1
 *         if flags & python.PyBUF_FORMAT:
 *             buffer.format = "B"             # <<<<<<<<<<<<<<
 *         else:
 *             buffer.format = NULL
 */
    __pyx_v_buffer->format = __pyx_k__B;
    goto __pyx_L9;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":735
 *             buffer.format = "B"
 *         else:
 *             buffer.format = NULL             # <<<<<<<<<<<<<<
 *         buffer.ndim = 0
 *         buffer.shape = NULL
 */
    __pyx_v_buffer->format = NULL;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":736
 *         else:
 *             buffer.format = NULL
 *         buffer.ndim = 0             # <<<<<<<<<<<<<<
 *         buffer.shape = NULL
 *         buffer.strides = NULL
 */
  __pyx_v_buffer->ndim = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":737
 *             buffer.format = NULL
 *         buffer.ndim = 0
 *         buffer.shape = NULL             # <<<<<<<<<<<<<<
 *         buffer.strides = NULL
 *         buffer.suboffsets = NULL
 */
  __pyx_v_buffer->shape = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":738
 *         buffer.ndim = 0
 *         buffer.shape = NULL
 *         buffer.strides = NULL             # <<<<<<<<<<<<<<
 *         buffer.suboffsets = NULL
 *         buffer.itemsize = 1
 */
  __pyx_v_buffer->strides = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":739
 *         buffer.shape = NULL
 *         buffer.strides = NULL
 *         buffer.suboffsets = NULL             # <<<<<<<<<<<<<<
 *         buffer.itemsize = 1
 *         buffer.internal = NULL
 */
  __pyx_v_buffer->suboffsets = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":740
 *         buffer.strides = NULL
 *         buffer.suboffsets = NULL
 *         buffer.itemsize = 1             # <<<<<<<<<<<<<<
 *         buffer.internal = NULL
 * 
 */
  __pyx_v_buffer->itemsize = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":741
 *         buffer.suboffsets = NULL
 *         buffer.itemsize = 1
 *         buffer.internal = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __releasebuffer__(self, Py_buffer* buffer):
 */
  __pyx_v_buffer->internal = NULL;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._XSLTResultTree.__getbuffer__");
  __pyx_r = -1;
  __Pyx_GOTREF(__pyx_v_buffer->obj);
  __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_buffer->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_buffer->obj = NULL;
  }
  __pyx_L2:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":743
 *         buffer.internal = NULL
 * 
 *     def __releasebuffer__(self, Py_buffer* buffer):             # <<<<<<<<<<<<<<
 *         if buffer is NULL:
 *             return # UNLOCK
 */

static void __pyx_pf_4lxml_5etree_15_XSLTResultTree___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer); /*proto*/
static void __pyx_pf_4lxml_5etree_15_XSLTResultTree___releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__releasebuffer__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":744
 * 
 *     def __releasebuffer__(self, Py_buffer* buffer):
 *         if buffer is NULL:             # <<<<<<<<<<<<<<
 *             return # UNLOCK
 *         if <char*>buffer.buf is self._buffer:
 */
  __pyx_t_1 = (__pyx_v_buffer == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":745
 *     def __releasebuffer__(self, Py_buffer* buffer):
 *         if buffer is NULL:
 *             return # UNLOCK             # <<<<<<<<<<<<<<
 *         if <char*>buffer.buf is self._buffer:
 *             self._buffer_refcnt -= 1
 */
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":746
 *         if buffer is NULL:
 *             return # UNLOCK
 *         if <char*>buffer.buf is self._buffer:             # <<<<<<<<<<<<<<
 *             self._buffer_refcnt -= 1
 *             if self._buffer_refcnt == 0:
 */
  __pyx_t_1 = (((char *)__pyx_v_buffer->buf) == ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":747
 *             return # UNLOCK
 *         if <char*>buffer.buf is self._buffer:
 *             self._buffer_refcnt -= 1             # <<<<<<<<<<<<<<
 *             if self._buffer_refcnt == 0:
 *                 tree.xmlFree(self._buffer)
 */
    ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_refcnt -= 1;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":748
 *         if <char*>buffer.buf is self._buffer:
 *             self._buffer_refcnt -= 1
 *             if self._buffer_refcnt == 0:             # <<<<<<<<<<<<<<
 *                 tree.xmlFree(self._buffer)
 *                 self._buffer = NULL
 */
    __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer_refcnt == 0);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":749
 *             self._buffer_refcnt -= 1
 *             if self._buffer_refcnt == 0:
 *                 tree.xmlFree(self._buffer)             # <<<<<<<<<<<<<<
 *                 self._buffer = NULL
 *         else:
 */
      xmlFree(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":750
 *             if self._buffer_refcnt == 0:
 *                 tree.xmlFree(self._buffer)
 *                 self._buffer = NULL             # <<<<<<<<<<<<<<
 *         else:
 *             tree.xmlFree(<char*>buffer.buf)
 */
      ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_buffer = NULL;
      goto __pyx_L7;
    }
    __pyx_L7:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":752
 *                 self._buffer = NULL
 *         else:
 *             tree.xmlFree(<char*>buffer.buf)             # <<<<<<<<<<<<<<
 *         buffer.buf = NULL
 * 
 */
    xmlFree(((char *)__pyx_v_buffer->buf));
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":753
 *         else:
 *             tree.xmlFree(<char*>buffer.buf)
 *         buffer.buf = NULL             # <<<<<<<<<<<<<<
 * 
 *     property xslt_profile:
 */
  __pyx_v_buffer->buf = NULL;

  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":758
 *         u"""Return an ElementTree with profiling data for the stylesheet run.
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef object root
 *             if self._profile is None:
 */

static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("__get__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":760
 *         def __get__(self):
 *             cdef object root
 *             if self._profile is None:             # <<<<<<<<<<<<<<
 *                 return None
 *             root = self._profile.getroot()
 */
  __pyx_t_1 = (((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":761
 *             cdef object root
 *             if self._profile is None:
 *                 return None             # <<<<<<<<<<<<<<
 *             root = self._profile.getroot()
 *             if root is None:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":762
 *             if self._profile is None:
 *                 return None
 *             root = self._profile.getroot()             # <<<<<<<<<<<<<<
 *             if root is None:
 *                 return None
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile->__pyx_vtab)->getroot(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":763
 *                 return None
 *             root = self._profile.getroot()
 *             if root is None:             # <<<<<<<<<<<<<<
 *                 return None
 *             return ElementTree(root)
 */
  __pyx_t_1 = (__pyx_v_root == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":764
 *             root = self._profile.getroot()
 *             if root is None:
 *                 return None             # <<<<<<<<<<<<<<
 *             return ElementTree(root)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":765
 *             if root is None:
 *                 return None
 *             return ElementTree(root)             # <<<<<<<<<<<<<<
 * 
 *         def __del__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__ElementTree); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_root);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_root);
  __Pyx_GIVEREF(__pyx_v_root);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._XSLTResultTree.xslt_profile.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":767
 *             return ElementTree(root)
 * 
 *         def __del__(self):             # <<<<<<<<<<<<<<
 *             self._profile = None
 * 
 */

static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___del__(PyObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("__del__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":768
 * 
 *         def __del__(self):
 *             self._profile = None             # <<<<<<<<<<<<<<
 * 
 * cdef _xsltResultTreeFactory(_Document doc, XSLT xslt, _Document profile):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile));
  ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_v_self)->_profile = ((struct LxmlDocument *)Py_None);

  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":770
 *             self._profile = None
 * 
 * cdef _xsltResultTreeFactory(_Document doc, XSLT xslt, _Document profile):             # <<<<<<<<<<<<<<
 *     cdef _XSLTResultTree result
 *     result = <_XSLTResultTree>_newElementTree(doc, None, _XSLTResultTree)
 */

static  PyObject *__pyx_f_4lxml_5etree__xsltResultTreeFactory(struct LxmlDocument *__pyx_v_doc, struct __pyx_obj_4lxml_5etree_XSLT *__pyx_v_xslt, struct LxmlDocument *__pyx_v_profile) {
  struct __pyx_obj_4lxml_5etree__XSLTResultTree *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("_xsltResultTreeFactory");
  __pyx_v_result = ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":772
 * cdef _xsltResultTreeFactory(_Document doc, XSLT xslt, _Document profile):
 *     cdef _XSLTResultTree result
 *     result = <_XSLTResultTree>_newElementTree(doc, None, _XSLTResultTree)             # <<<<<<<<<<<<<<
 *     result._xslt = xslt
 *     result._profile = profile
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__newElementTree(__pyx_v_doc, ((struct LxmlElement *)Py_None), ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__XSLTResultTree)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_t_1)));
  __Pyx_DECREF(((PyObject *)__pyx_v_result));
  __pyx_v_result = ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":773
 *     cdef _XSLTResultTree result
 *     result = <_XSLTResultTree>_newElementTree(doc, None, _XSLTResultTree)
 *     result._xslt = xslt             # <<<<<<<<<<<<<<
 *     result._profile = profile
 *     result._buffer = NULL
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_xslt));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_xslt));
  __Pyx_GOTREF(__pyx_v_result->_xslt);
  __Pyx_DECREF(((PyObject *)__pyx_v_result->_xslt));
  __pyx_v_result->_xslt = __pyx_v_xslt;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":774
 *     result = <_XSLTResultTree>_newElementTree(doc, None, _XSLTResultTree)
 *     result._xslt = xslt
 *     result._profile = profile             # <<<<<<<<<<<<<<
 *     result._buffer = NULL
 *     result._buffer_refcnt = 0
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_profile));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_profile));
  __Pyx_GOTREF(__pyx_v_result->_profile);
  __Pyx_DECREF(((PyObject *)__pyx_v_result->_profile));
  __pyx_v_result->_profile = __pyx_v_profile;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":775
 *     result._xslt = xslt
 *     result._profile = profile
 *     result._buffer = NULL             # <<<<<<<<<<<<<<
 *     result._buffer_refcnt = 0
 *     result._buffer_len = 0
 */
  __pyx_v_result->_buffer = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":776
 *     result._profile = profile
 *     result._buffer = NULL
 *     result._buffer_refcnt = 0             # <<<<<<<<<<<<<<
 *     result._buffer_len = 0
 *     return result
 */
  __pyx_v_result->_buffer_refcnt = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":777
 *     result._buffer = NULL
 *     result._buffer_refcnt = 0
 *     result._buffer_len = 0             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __pyx_v_result->_buffer_len = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":778
 *     result._buffer_refcnt = 0
 *     result._buffer_len = 0
 *     return result             # <<<<<<<<<<<<<<
 * 
 * # functions like "output" and "write" are a potential security risk, but we
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._xsltResultTreeFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":806
 * __findStylesheetByID = None
 * 
 * cdef _findStylesheetByID(_Document doc, id):             # <<<<<<<<<<<<<<
 *     global __findStylesheetByID
 *     if __findStylesheetByID is None:
 */

static  PyObject *__pyx_f_4lxml_5etree__findStylesheetByID(struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_id) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_findStylesheetByID");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);
  __Pyx_INCREF(__pyx_v_id);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":808
 * cdef _findStylesheetByID(_Document doc, id):
 *     global __findStylesheetByID
 *     if __findStylesheetByID is None:             # <<<<<<<<<<<<<<
 *         __findStylesheetByID = XPath(
 *             u"//xsl:stylesheet[@xml:id = $id]",
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":809
 *     global __findStylesheetByID
 *     if __findStylesheetByID is None:
 *         __findStylesheetByID = XPath(             # <<<<<<<<<<<<<<
 *             u"//xsl:stylesheet[@xml:id = $id]",
 *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_308));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_308));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_308));
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":811
 *         __findStylesheetByID = XPath(
 *             u"//xsl:stylesheet[@xml:id = $id]",
 *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})             # <<<<<<<<<<<<<<
 *     return __findStylesheetByID(doc, id=id)
 * 
 */
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_u__xsl), ((PyObject *)__pyx_kp_u_309)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__namespaces), ((PyObject *)__pyx_t_4)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __pyx_t_4 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPath)), __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
    __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_v_4lxml_5etree___findStylesheetByID = ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_t_4);
    __pyx_t_4 = 0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":812
 *             u"//xsl:stylesheet[@xml:id = $id]",
 *             namespaces={u"xsl" : u"http://www.w3.org/1999/XSL/Transform"})
 *     return __findStylesheetByID(doc, id=id)             # <<<<<<<<<<<<<<
 * 
 * cdef class _XSLTProcessingInstruction(PIBase):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_v_doc));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_doc));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__id), __pyx_v_id) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyEval_CallObjectWithKeywords(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID), __pyx_t_4, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._findStylesheetByID");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF(__pyx_v_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":815
 * 
 * cdef class _XSLTProcessingInstruction(PIBase):
 *     def parseXSL(self, parser=None):             # <<<<<<<<<<<<<<
 *         u"""Try to parse the stylesheet referenced by this PI and return an
 *         ElementTree for it.  If the stylesheet is embedded in the same
 */

static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL[] = "Try to parse the stylesheet referenced by this PI and return an\n        ElementTree for it.  If the stylesheet is embedded in the same\n        document (referenced via xml:id), find and return an ElementTree for\n        the stylesheet Element.\n\n        The optional ``parser`` keyword argument can be passed to specify the\n        parser used to read from external stylesheet URLs.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_parser = 0;
  struct LxmlDocument *__pyx_v_result_doc;
  struct LxmlElement *__pyx_v_result_node;
  char *__pyx_v_c_href;
  xmlAttr *__pyx_v_c_attr;
  PyObject *__pyx_v_hrefs;
  PyObject *__pyx_v_href_utf;
  PyObject *__pyx_v_root;
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__parser,0};
  __Pyx_RefNannySetupContext("parseXSL");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__parser);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "parseXSL") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_parser = values[0];
  } else {
    __pyx_v_parser = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_parser = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parseXSL", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.parseXSL");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_parser);
  __pyx_v_result_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_result_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_hrefs = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_href_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_root = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":828
 *         cdef char* c_href
 *         cdef xmlAttr* c_attr
 *         if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"PI lacks content"
 *         hrefs = _FIND_PI_HREF(u' ' + funicode(self._c_node.content))
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->content == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":829
 *         cdef xmlAttr* c_attr
 *         if self._c_node.content is NULL:
 *             raise ValueError, u"PI lacks content"             # <<<<<<<<<<<<<<
 *         hrefs = _FIND_PI_HREF(u' ' + funicode(self._c_node.content))
 *         if len(hrefs) != 1:
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_310), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":830
 *         if self._c_node.content is NULL:
 *             raise ValueError, u"PI lacks content"
 *         hrefs = _FIND_PI_HREF(u' ' + funicode(self._c_node.content))             # <<<<<<<<<<<<<<
 *         if len(hrefs) != 1:
 *             raise ValueError, u"malformed PI attributes"
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->content); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_kp_u_5), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_v_4lxml_5etree__FIND_PI_HREF, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_hrefs);
  __pyx_v_hrefs = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":831
 *             raise ValueError, u"PI lacks content"
 *         hrefs = _FIND_PI_HREF(u' ' + funicode(self._c_node.content))
 *         if len(hrefs) != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"malformed PI attributes"
 *         href_utf = utf8(hrefs[0])
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_hrefs); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (__pyx_t_4 != 1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":832
 *         hrefs = _FIND_PI_HREF(u' ' + funicode(self._c_node.content))
 *         if len(hrefs) != 1:
 *             raise ValueError, u"malformed PI attributes"             # <<<<<<<<<<<<<<
 *         href_utf = utf8(hrefs[0])
 *         c_href = _cstr(href_utf)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_311), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":833
 *         if len(hrefs) != 1:
 *             raise ValueError, u"malformed PI attributes"
 *         href_utf = utf8(hrefs[0])             # <<<<<<<<<<<<<<
 *         c_href = _cstr(href_utf)
 * 
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_hrefs, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = utf8(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_v_href_utf);
  __pyx_v_href_utf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":834
 *             raise ValueError, u"malformed PI attributes"
 *         href_utf = utf8(hrefs[0])
 *         c_href = _cstr(href_utf)             # <<<<<<<<<<<<<<
 * 
 *         if c_href[0] != c'#':
 */
  __pyx_v_c_href = PyString_AS_STRING(__pyx_v_href_utf);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":836
 *         c_href = _cstr(href_utf)
 * 
 *         if c_href[0] != c'#':             # <<<<<<<<<<<<<<
 *             # normal URL, try to parse from it
 *             c_href = tree.xmlBuildURI(
 */
  __pyx_t_1 = ((__pyx_v_c_href[0]) != '#');
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":840
 *             c_href = tree.xmlBuildURI(
 *                 c_href,
 *                 tree.xmlNodeGetBase(self._c_node.doc, self._c_node))             # <<<<<<<<<<<<<<
 *             if c_href is not NULL:
 *                 href_utf = c_href
 */
    __pyx_v_c_href = xmlBuildURI(__pyx_v_c_href, xmlNodeGetBase(((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->doc, ((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node));

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":841
 *                 c_href,
 *                 tree.xmlNodeGetBase(self._c_node.doc, self._c_node))
 *             if c_href is not NULL:             # <<<<<<<<<<<<<<
 *                 href_utf = c_href
 *                 tree.xmlFree(c_href)
 */
    __pyx_t_1 = (__pyx_v_c_href != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":842
 *                 tree.xmlNodeGetBase(self._c_node.doc, self._c_node))
 *             if c_href is not NULL:
 *                 href_utf = c_href             # <<<<<<<<<<<<<<
 *                 tree.xmlFree(c_href)
 *             result_doc = _parseDocumentFromURL(href_utf, parser)
 */
      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_href); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __Pyx_DECREF(__pyx_v_href_utf);
      __pyx_v_href_utf = ((PyObject *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":843
 *             if c_href is not NULL:
 *                 href_utf = c_href
 *                 tree.xmlFree(c_href)             # <<<<<<<<<<<<<<
 *             result_doc = _parseDocumentFromURL(href_utf, parser)
 *             return _elementTreeFactory(result_doc, None)
 */
      xmlFree(__pyx_v_c_href);
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":844
 *                 href_utf = c_href
 *                 tree.xmlFree(c_href)
 *             result_doc = _parseDocumentFromURL(href_utf, parser)             # <<<<<<<<<<<<<<
 *             return _elementTreeFactory(result_doc, None)
 * 
 */
    if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocumentFromURL(__pyx_v_href_utf, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_result_doc));
    __pyx_v_result_doc = ((struct LxmlDocument *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":845
 *                 tree.xmlFree(c_href)
 *             result_doc = _parseDocumentFromURL(href_utf, parser)
 *             return _elementTreeFactory(result_doc, None)             # <<<<<<<<<<<<<<
 * 
 *         # ID reference to embedded stylesheet
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_result_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":849
 *         # ID reference to embedded stylesheet
 *         # try XML:ID lookup
 *         c_href += 1 # skip leading '#'             # <<<<<<<<<<<<<<
 *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)
 *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
 */
  __pyx_v_c_href += 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":850
 *         # try XML:ID lookup
 *         c_href += 1 # skip leading '#'
 *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)             # <<<<<<<<<<<<<<
 *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
 *             result_node = _elementFactory(self._doc, c_attr.parent)
 */
  __pyx_v_c_attr = xmlGetID(((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->doc, __pyx_v_c_href);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":851
 *         c_href += 1 # skip leading '#'
 *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)
 *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:             # <<<<<<<<<<<<<<
 *             result_node = _elementFactory(self._doc, c_attr.parent)
 *             return _elementTreeFactory(result_node._doc, result_node)
 */
  __pyx_t_1 = (__pyx_v_c_attr != NULL);
  if (__pyx_t_1) {
    __pyx_t_5 = (__pyx_v_c_attr->doc == ((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._c_node->doc);
    __pyx_t_6 = __pyx_t_5;
  } else {
    __pyx_t_6 = __pyx_t_1;
  }
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":852
 *         c_attr = tree.xmlGetID(self._c_node.doc, c_href)
 *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
 *             result_node = _elementFactory(self._doc, c_attr.parent)             # <<<<<<<<<<<<<<
 *             return _elementTreeFactory(result_node._doc, result_node)
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._doc, __pyx_v_c_attr->parent)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(((PyObject *)__pyx_v_result_node));
    __pyx_v_result_node = ((struct LxmlElement *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":853
 *         if c_attr is not NULL and c_attr.doc is self._c_node.doc:
 *             result_node = _elementFactory(self._doc, c_attr.parent)
 *             return _elementTreeFactory(result_node._doc, result_node)             # <<<<<<<<<<<<<<
 * 
 *         # try XPath search
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_result_node->_doc, __pyx_v_result_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":856
 * 
 *         # try XPath search
 *         root = _findStylesheetByID(self._doc, funicode(c_href))             # <<<<<<<<<<<<<<
 *         if not root:
 *             raise ValueError, u"reference to non-existing embedded stylesheet"
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_href); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4lxml_5etree__findStylesheetByID(((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)__pyx_v_self)->__pyx_base.__pyx_base.__pyx_base.__pyx_base._doc, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_v_root);
  __pyx_v_root = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":857
 *         # try XPath search
 *         root = _findStylesheetByID(self._doc, funicode(c_href))
 *         if not root:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"reference to non-existing embedded stylesheet"
 *         elif len(root) > 1:
 */
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_root); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (!__pyx_t_6);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":858
 *         root = _findStylesheetByID(self._doc, funicode(c_href))
 *         if not root:
 *             raise ValueError, u"reference to non-existing embedded stylesheet"             # <<<<<<<<<<<<<<
 *         elif len(root) > 1:
 *             raise ValueError, u"ambiguous reference to embedded stylesheet"
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_312), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L11;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":859
 *         if not root:
 *             raise ValueError, u"reference to non-existing embedded stylesheet"
 *         elif len(root) > 1:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"ambiguous reference to embedded stylesheet"
 *         result_node = root[0]
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_root); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (__pyx_t_4 > 1);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":860
 *             raise ValueError, u"reference to non-existing embedded stylesheet"
 *         elif len(root) > 1:
 *             raise ValueError, u"ambiguous reference to embedded stylesheet"             # <<<<<<<<<<<<<<
 *         result_node = root[0]
 *         return _elementTreeFactory(result_node._doc, result_node)
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_313), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":861
 *         elif len(root) > 1:
 *             raise ValueError, u"ambiguous reference to embedded stylesheet"
 *         result_node = root[0]             # <<<<<<<<<<<<<<
 *         return _elementTreeFactory(result_node._doc, result_node)
 * 
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_root, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_v_result_node));
  __pyx_v_result_node = ((struct LxmlElement *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":862
 *             raise ValueError, u"ambiguous reference to embedded stylesheet"
 *         result_node = root[0]
 *         return _elementTreeFactory(result_node._doc, result_node)             # <<<<<<<<<<<<<<
 * 
 *     def set(self, key, value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_result_node->_doc, __pyx_v_result_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.parseXSL");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_result_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_result_node);
  __Pyx_DECREF(__pyx_v_hrefs);
  __Pyx_DECREF(__pyx_v_href_utf);
  __Pyx_DECREF(__pyx_v_root);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":864
 *         return _elementTreeFactory(result_node._doc, result_node)
 * 
 *     def set(self, key, value):             # <<<<<<<<<<<<<<
 *         if key != u"href":
 *             raise AttributeError, \
 */

static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_set(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_attrib;
  PyObject *__pyx_v_text;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__value,0};
  __Pyx_RefNannySetupContext("set");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "set") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_value = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.set");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_v_attrib = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_text = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":865
 * 
 *     def set(self, key, value):
 *         if key != u"href":             # <<<<<<<<<<<<<<
 *             raise AttributeError, \
 *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_key, ((PyObject *)__pyx_n_u__href), Py_NE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":866
 *     def set(self, key, value):
 *         if key != u"href":
 *             raise AttributeError, \             # <<<<<<<<<<<<<<
 *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
 *         if value is None:
 */
    __Pyx_Raise(__pyx_builtin_AttributeError, ((PyObject *)__pyx_kp_u_314), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":868
 *             raise AttributeError, \
 *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
 *         if value is None:             # <<<<<<<<<<<<<<
 *             attrib = u""
 *         elif u'"' in value or u'>' in value:
 */
  __pyx_t_2 = (__pyx_v_value == Py_None);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":869
 *                 u"only setting the 'href' attribute is supported on XSLT-PIs"
 *         if value is None:
 *             attrib = u""             # <<<<<<<<<<<<<<
 *         elif u'"' in value or u'>' in value:
 *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"
 */
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
    __Pyx_DECREF(__pyx_v_attrib);
    __pyx_v_attrib = ((PyObject *)__pyx_kp_u_14);
    goto __pyx_L7;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":870
 *         if value is None:
 *             attrib = u""
 *         elif u'"' in value or u'>' in value:             # <<<<<<<<<<<<<<
 *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"
 *         else:
 */
  __pyx_t_2 = ((PySequence_Contains(__pyx_v_value, ((PyObject *)__pyx_kp_u_212)))); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (!__pyx_t_2) {
    __pyx_t_3 = ((PySequence_Contains(__pyx_v_value, ((PyObject *)__pyx_kp_u_315)))); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":871
 *             attrib = u""
 *         elif u'"' in value or u'>' in value:
 *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"             # <<<<<<<<<<<<<<
 *         else:
 *             attrib = u' href="%s"' % value
 */
    __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_316), 0);
    {__pyx_filename = __pyx_f[18]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":873
 *             raise ValueError, u"Invalid URL, must not contain '\"' or '>'"
 *         else:
 *             attrib = u' href="%s"' % value             # <<<<<<<<<<<<<<
 *         text = u' ' + self.text
 *         if _FIND_PI_HREF(text):
 */
    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_317), __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_v_attrib);
    __pyx_v_attrib = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":874
 *         else:
 *             attrib = u' href="%s"' % value
 *         text = u' ' + self.text             # <<<<<<<<<<<<<<
 *         if _FIND_PI_HREF(text):
 *             self.text = _REPLACE_PI_HREF(attrib, text)
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__text); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyNumber_Add(((PyObject *)__pyx_kp_u_5), __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_v_text);
  __pyx_v_text = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":875
 *             attrib = u' href="%s"' % value
 *         text = u' ' + self.text
 *         if _FIND_PI_HREF(text):             # <<<<<<<<<<<<<<
 *             self.text = _REPLACE_PI_HREF(attrib, text)
 *         else:
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_text);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_text);
  __Pyx_GIVEREF(__pyx_v_text);
  __pyx_t_1 = PyObject_Call(__pyx_v_4lxml_5etree__FIND_PI_HREF, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":876
 *         text = u' ' + self.text
 *         if _FIND_PI_HREF(text):
 *             self.text = _REPLACE_PI_HREF(attrib, text)             # <<<<<<<<<<<<<<
 *         else:
 *             self.text = text + attrib
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_attrib);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_attrib);
    __Pyx_GIVEREF(__pyx_v_attrib);
    __Pyx_INCREF(__pyx_v_text);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_text);
    __Pyx_GIVEREF(__pyx_v_text);
    __pyx_t_5 = PyObject_Call(__pyx_v_4lxml_5etree__REPLACE_PI_HREF, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__text, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":878
 *             self.text = _REPLACE_PI_HREF(attrib, text)
 *         else:
 *             self.text = text + attrib             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key, default=None):
 */
    __pyx_t_5 = PyNumber_Add(__pyx_v_text, __pyx_v_attrib); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s__text, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_L8:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.set");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_attrib);
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":880
 *             self.text = text + attrib
 * 
 *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
 *         for attr, value in _FIND_PI_ATTRIBUTES(u' ' + self.text):
 *             if attr == key:
 */

static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_v_attr;
  PyObject *__pyx_v_value;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__key,&__pyx_n_s__default,0};
  __Pyx_RefNannySetupContext("get");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__key);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__default);
        if (unlikely(value)) { values[1] = value; kw_args--; }
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "get") < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  } else {
    __pyx_v_default = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: __pyx_v_default = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: __pyx_v_key = PyTuple_GET_ITEM(__pyx_args, 0);
      break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[18]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.get");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_v_attr = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":881
 * 
 *     def get(self, key, default=None):
 *         for attr, value in _FIND_PI_ATTRIBUTES(u' ' + self.text):             # <<<<<<<<<<<<<<
 *             if attr == key:
 *                 return value
 */
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Add(((PyObject *)__pyx_kp_u_5), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_Call(__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_attr);
      __pyx_v_attr = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_attr);
      __pyx_v_attr = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_value);
      __pyx_v_value = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":882
 *     def get(self, key, default=None):
 *         for attr, value in _FIND_PI_ATTRIBUTES(u' ' + self.text):
 *             if attr == key:             # <<<<<<<<<<<<<<
 *                 return value
 *         return default
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_attr, __pyx_v_key, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_7) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":883
 *         for attr, value in _FIND_PI_ATTRIBUTES(u' ' + self.text):
 *             if attr == key:
 *                 return value             # <<<<<<<<<<<<<<
 *         return default
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_value);
      __pyx_r = __pyx_v_value;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":884
 *             if attr == key:
 *                 return value
 *         return default             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_default);
  __pyx_r = __pyx_v_default;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._XSLTProcessingInstruction.get");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_attr);
  __Pyx_DECREF(__pyx_v_value);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_key);
  __Pyx_DECREF(__pyx_v_default);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":6
 *     u"""Base class of an XSLT extension element.
 *     """
 *     def execute(self, context, self_node, input_node, output_parent):             # <<<<<<<<<<<<<<
 *         u"""execute(self, context, self_node, input_node, output_parent)
 *         Execute this extension element.
 */

static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_execute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_13XSLTExtension_execute[] = "execute(self, context, self_node, input_node, output_parent)\n        Execute this extension element.\n\n        Subclasses must override this method.  They may append\n        elements to the `output_parent` element here, or set its text\n        content.  To this end, the `input_node` provides read-only\n        access to the current node in the input document, and the\n        `self_node` points to the extension element in the stylesheet.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_execute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_context = 0;
  PyObject *__pyx_v_self_node = 0;
  PyObject *__pyx_v_input_node = 0;
  PyObject *__pyx_v_output_parent = 0;
  PyObject *__pyx_r = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__context,&__pyx_n_s__self_node,&__pyx_n_s__input_node,&__pyx_n_s__output_parent,0};
  __Pyx_RefNannySetupContext("execute");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[4] = {0,0,0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self_node);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("execute", 1, 4, 4, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  2:
      values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__input_node);
      if (likely(values[2])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("execute", 1, 4, 4, 2); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
      case  3:
      values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__output_parent);
      if (likely(values[3])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("execute", 1, 4, 4, 3); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "execute") < 0)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_context = values[0];
    __pyx_v_self_node = values[1];
    __pyx_v_input_node = values[2];
    __pyx_v_output_parent = values[3];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_context = PyTuple_GET_ITEM(__pyx_args, 0);
    __pyx_v_self_node = PyTuple_GET_ITEM(__pyx_args, 1);
    __pyx_v_input_node = PyTuple_GET_ITEM(__pyx_args, 2);
    __pyx_v_output_parent = PyTuple_GET_ITEM(__pyx_args, 3);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("execute", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XSLTExtension.execute");
  return NULL;
  __pyx_L4_argument_unpacking_done:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":18
 *         pass
 * 
 *     def apply_templates(self, _XSLTContext context not None, node):             # <<<<<<<<<<<<<<
 *         u"""apply_templates(self, context, node)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_apply_templates(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_13XSLTExtension_apply_templates[] = "apply_templates(self, context, node)\n\n        Call this method to retrieve the result of applying templates\n        to an element.\n\n        The return value is a list of elements or text strings that\n        were generated by the XSLT processor.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_13XSLTExtension_apply_templates(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context = 0;
  PyObject *__pyx_v_node = 0;
  xmlNode *__pyx_v_c_parent;
  xmlNode *__pyx_v_c_node;
  xmlNode *__pyx_v_c_next;
  xmlNode *__pyx_v_c_context_node;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_proxy;
  PyObject *__pyx_v_results;
  PyObject *__pyx_r = NULL;
  xmlNode *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__context,&__pyx_n_s__node,0};
  __Pyx_RefNannySetupContext("apply_templates");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__context);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
      case  1:
      values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__node);
      if (likely(values[1])) kw_args--;
      else {
        __Pyx_RaiseArgtupleInvalid("apply_templates", 1, 2, 2, 1); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "apply_templates") < 0)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)values[0]);
    __pyx_v_node = values[1];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)PyTuple_GET_ITEM(__pyx_args, 0));
    __pyx_v_node = PyTuple_GET_ITEM(__pyx_args, 1);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("apply_templates", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XSLTExtension.apply_templates");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_INCREF(__pyx_v_node);
  __pyx_v_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_results = ((PyObject *)Py_None); __Pyx_INCREF(Py_None);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_ptype_4lxml_5etree__XSLTContext, 0, "context", 0))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":33
 *         cdef _ReadOnlyElementProxy proxy
 *         cdef list results
 *         c_context_node = _roNodeOf(node)             # <<<<<<<<<<<<<<
 *         #assert c_context_node.doc is context._xsltContext.node.doc, \
 *         #    "switching input documents during transformation is not currently supported"
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__roNodeOf(__pyx_v_node); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_context_node = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":38
 * 
 *         c_parent = tree.xmlNewDocNode(
 *             context._xsltCtxt.output, NULL, "fake-parent", NULL)             # <<<<<<<<<<<<<<
 * 
 *         c_node = context._xsltCtxt.insert
 */
  __pyx_v_c_parent = xmlNewDocNode(__pyx_v_context->_xsltCtxt->output, NULL, __pyx_k_318, NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":40
 *             context._xsltCtxt.output, NULL, "fake-parent", NULL)
 * 
 *         c_node = context._xsltCtxt.insert             # <<<<<<<<<<<<<<
 *         context._xsltCtxt.insert = c_parent
 *         xslt.xsltProcessOneNode(
 */
  __pyx_v_c_node = __pyx_v_context->_xsltCtxt->insert;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":41
 * 
 *         c_node = context._xsltCtxt.insert
 *         context._xsltCtxt.insert = c_parent             # <<<<<<<<<<<<<<
 *         xslt.xsltProcessOneNode(
 *             context._xsltCtxt, c_context_node, NULL)
 */
  __pyx_v_context->_xsltCtxt->insert = __pyx_v_c_parent;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":43
 *         context._xsltCtxt.insert = c_parent
 *         xslt.xsltProcessOneNode(
 *             context._xsltCtxt, c_context_node, NULL)             # <<<<<<<<<<<<<<
 *         context._xsltCtxt.insert = c_node
 * 
 */
  xsltProcessOneNode(__pyx_v_context->_xsltCtxt, __pyx_v_c_context_node, NULL);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":44
 *         xslt.xsltProcessOneNode(
 *             context._xsltCtxt, c_context_node, NULL)
 *         context._xsltCtxt.insert = c_node             # <<<<<<<<<<<<<<
 * 
 *         results = [] # or maybe _collectAttributes(c_parent, 2) ?
 */
  __pyx_v_context->_xsltCtxt->insert = __pyx_v_c_node;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":46
 *         context._xsltCtxt.insert = c_node
 * 
 *         results = [] # or maybe _collectAttributes(c_parent, 2) ?             # <<<<<<<<<<<<<<
 *         c_node = c_parent.children
 *         try:
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __Pyx_DECREF(((PyObject *)__pyx_v_results));
  __pyx_v_results = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":47
 * 
 *         results = [] # or maybe _collectAttributes(c_parent, 2) ?
 *         c_node = c_parent.children             # <<<<<<<<<<<<<<
 *         try:
 *             while c_node is not NULL:
 */
  __pyx_v_c_node = __pyx_v_c_parent->children;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":48
 *         results = [] # or maybe _collectAttributes(c_parent, 2) ?
 *         c_node = c_parent.children
 *         try:             # <<<<<<<<<<<<<<
 *             while c_node is not NULL:
 *                 c_next = c_node.next
 */
  /*try:*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":49
 *         c_node = c_parent.children
 *         try:
 *             while c_node is not NULL:             # <<<<<<<<<<<<<<
 *                 c_next = c_node.next
 *                 if c_node.type == tree.XML_TEXT_NODE:
 */
    while (1) {
      __pyx_t_3 = (__pyx_v_c_node != NULL);
      if (!__pyx_t_3) break;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":50
 *         try:
 *             while c_node is not NULL:
 *                 c_next = c_node.next             # <<<<<<<<<<<<<<
 *                 if c_node.type == tree.XML_TEXT_NODE:
 *                     results.append(funicode(c_node.content))
 */
      __pyx_v_c_next = __pyx_v_c_node->next;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":51
 *             while c_node is not NULL:
 *                 c_next = c_node.next
 *                 if c_node.type == tree.XML_TEXT_NODE:             # <<<<<<<<<<<<<<
 *                     results.append(funicode(c_node.content))
 *                 elif c_node.type == tree.XML_ELEMENT_NODE:
 */
      __pyx_t_3 = (__pyx_v_c_node->type == XML_TEXT_NODE);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":52
 *                 c_next = c_node.next
 *                 if c_node.type == tree.XML_TEXT_NODE:
 *                     results.append(funicode(c_node.content))             # <<<<<<<<<<<<<<
 *                 elif c_node.type == tree.XML_ELEMENT_NODE:
 *                     proxy = _newReadOnlyProxy(
 */
        if (unlikely(__pyx_v_results == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L7;} 
        }
        __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_node->content); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyList_Append(((PyObject *)__pyx_v_results), __pyx_t_2); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L11;
      }

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":53
 *                 if c_node.type == tree.XML_TEXT_NODE:
 *                     results.append(funicode(c_node.content))
 *                 elif c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                     proxy = _newReadOnlyProxy(
 *                         context._extension_element_proxy, c_node)
 */
      __pyx_t_3 = (__pyx_v_c_node->type == XML_ELEMENT_NODE);
      if (__pyx_t_3) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":55
 *                 elif c_node.type == tree.XML_ELEMENT_NODE:
 *                     proxy = _newReadOnlyProxy(
 *                         context._extension_element_proxy, c_node)             # <<<<<<<<<<<<<<
 *                     results.append(proxy)
 *                     # unlink node and make sure it will be freed later on
 */
        __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(__pyx_v_context->_extension_element_proxy, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(((PyObject *)__pyx_v_proxy));
        __pyx_v_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_2);
        __pyx_t_2 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":56
 *                     proxy = _newReadOnlyProxy(
 *                         context._extension_element_proxy, c_node)
 *                     results.append(proxy)             # <<<<<<<<<<<<<<
 *                     # unlink node and make sure it will be freed later on
 *                     tree.xmlUnlinkNode(c_node)
 */
        if (unlikely(__pyx_v_results == Py_None)) {
          PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'append'"); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L7;} 
        }
        __pyx_t_4 = PyList_Append(((PyObject *)__pyx_v_results), ((PyObject *)__pyx_v_proxy)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L7;}

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":58
 *                     results.append(proxy)
 *                     # unlink node and make sure it will be freed later on
 *                     tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
 *                     proxy.free_after_use()
 *                 else:
 */
        xmlUnlinkNode(__pyx_v_c_node);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":59
 *                     # unlink node and make sure it will be freed later on
 *                     tree.xmlUnlinkNode(c_node)
 *                     proxy.free_after_use()             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise TypeError, \
 */
        ((struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy *)__pyx_v_proxy->__pyx_vtab)->free_after_use(__pyx_v_proxy);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":62
 *                 else:
 *                     raise TypeError, \
 *                         u"unsupported XSLT result type: %d" % c_node.type             # <<<<<<<<<<<<<<
 *                 c_node = c_next
 *         finally:
 */
        __pyx_t_2 = PyInt_FromLong(__pyx_v_c_node->type); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_320), __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_5, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        {__pyx_filename = __pyx_f[19]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L7;}
      }
      __pyx_L11:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":63
 *                     raise TypeError, \
 *                         u"unsupported XSLT result type: %d" % c_node.type
 *                 c_node = c_next             # <<<<<<<<<<<<<<
 *         finally:
 *             # free all intermediate nodes that will not be freed by proxies
 */
      __pyx_v_c_node = __pyx_v_c_next;
    }
  }
  /*finally:*/ {
    int __pyx_why;
    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
    int __pyx_exc_lineno;
    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
    __pyx_why = 0; goto __pyx_L8;
    __pyx_L7: {
      __pyx_why = 4;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
      __pyx_exc_lineno = __pyx_lineno;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":66
 *         finally:
 *             # free all intermediate nodes that will not be freed by proxies
 *             tree.xmlFreeNode(c_parent)             # <<<<<<<<<<<<<<
 *         return results
 * 
 */
    xmlFreeNode(__pyx_v_c_parent);
    switch (__pyx_why) {
      case 4: {
        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
        __pyx_lineno = __pyx_exc_lineno;
        __pyx_exc_type = 0;
        __pyx_exc_value = 0;
        __pyx_exc_tb = 0;
        goto __pyx_L1_error;
      }
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":67
 *             # free all intermediate nodes that will not be freed by proxies
 *             tree.xmlFreeNode(c_parent)
 *         return results             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_results));
  __pyx_r = ((PyObject *)__pyx_v_results);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.XSLTExtension.apply_templates");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_proxy);
  __Pyx_DECREF(__pyx_v_results);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF(__pyx_v_node);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":70
 * 
 * 
 * cdef _registerXSLTExtensions(xslt.xsltTransformContext* c_ctxt,             # <<<<<<<<<<<<<<
 *                              extension_dict):
 *     for ns_utf, name_utf in extension_dict:
 */

static  PyObject *__pyx_f_4lxml_5etree__registerXSLTExtensions(xsltTransformContext *__pyx_v_c_ctxt, PyObject *__pyx_v_extension_dict) {
  PyObject *__pyx_v_ns_utf;
  PyObject *__pyx_v_name_utf;
  PyObject *__pyx_r = NULL;
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  __Pyx_RefNannySetupContext("_registerXSLTExtensions");
  __Pyx_INCREF(__pyx_v_extension_dict);
  __pyx_v_ns_utf = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_name_utf = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":72
 * cdef _registerXSLTExtensions(xslt.xsltTransformContext* c_ctxt,
 *                              extension_dict):
 *     for ns_utf, name_utf in extension_dict:             # <<<<<<<<<<<<<<
 *         xslt.xsltRegisterExtElement(
 *             c_ctxt, _cstr(name_utf), _cstr(ns_utf), _callExtensionElement)
 */
  if (PyList_CheckExact(__pyx_v_extension_dict) || PyTuple_CheckExact(__pyx_v_extension_dict)) {
    __pyx_t_1 = 0; __pyx_t_2 = __pyx_v_extension_dict; __Pyx_INCREF(__pyx_t_2);
  } else {
    __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_extension_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
  }
  for (;;) {
    if (likely(PyList_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++;
    } else {
      __pyx_t_3 = PyIter_Next(__pyx_t_2);
      if (!__pyx_t_3) {
        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (PyTuple_CheckExact(__pyx_t_3) && likely(PyTuple_GET_SIZE(__pyx_t_3) == 2)) {
      PyObject* tuple = __pyx_t_3;
      __pyx_t_4 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_EndUnpack(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_v_ns_utf);
      __pyx_v_ns_utf = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_v_name_utf);
      __pyx_v_name_utf = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":74
 *     for ns_utf, name_utf in extension_dict:
 *         xslt.xsltRegisterExtElement(
 *             c_ctxt, _cstr(name_utf), _cstr(ns_utf), _callExtensionElement)             # <<<<<<<<<<<<<<
 * 
 * cdef void _callExtensionElement(xslt.xsltTransformContext* c_ctxt,
 */
    xsltRegisterExtElement(__pyx_v_c_ctxt, PyString_AS_STRING(__pyx_v_name_utf), PyString_AS_STRING(__pyx_v_ns_utf), __pyx_f_4lxml_5etree__callExtensionElement);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("lxml.etree._registerXSLTExtensions");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_ns_utf);
  __Pyx_DECREF(__pyx_v_name_utf);
  __Pyx_DECREF(__pyx_v_extension_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":76
 *             c_ctxt, _cstr(name_utf), _cstr(ns_utf), _callExtensionElement)
 * 
 * cdef void _callExtensionElement(xslt.xsltTransformContext* c_ctxt,             # <<<<<<<<<<<<<<
 *                                 xmlNode* c_context_node,
 *                                 xmlNode* c_inst_node,
 */

static  void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__pyx_v_c_ctxt, xmlNode *__pyx_v_c_context_node, xmlNode *__pyx_v_c_inst_node, void *__pyx_v_dummy) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree_XSLTExtension *__pyx_v_extension;
  PyObject *__pyx_v_dict_result;
  char *__pyx_v_c_uri;
  xmlNode *__pyx_v_c_node;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_context_node;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_self_node;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *__pyx_v_output_parent;
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_message;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  xmlElementType __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  char *__pyx_t_11;
  PyGILState_STATE _save = PyGILState_Ensure();
  __Pyx_RefNannySetupContext("_callExtensionElement");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_extension = ((struct __pyx_obj_4lxml_5etree_XSLTExtension *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_context_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_self_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_output_parent = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_e = Py_None; __Pyx_INCREF(Py_None);
  __pyx_v_message = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":86
 *     cdef xmlNode* c_node
 *     cdef _ReadOnlyElementProxy context_node, self_node, output_parent
 *     c_uri = _getNs(c_inst_node)             # <<<<<<<<<<<<<<
 *     if c_uri is NULL:
 *         # not allowed, and should never happen
 */
  __pyx_v_c_uri = _getNs(__pyx_v_c_inst_node);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":87
 *     cdef _ReadOnlyElementProxy context_node, self_node, output_parent
 *     c_uri = _getNs(c_inst_node)
 *     if c_uri is NULL:             # <<<<<<<<<<<<<<
 *         # not allowed, and should never happen
 *         return
 */
  __pyx_t_1 = (__pyx_v_c_uri == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":89
 *     if c_uri is NULL:
 *         # not allowed, and should never happen
 *         return             # <<<<<<<<<<<<<<
 *     if c_ctxt.xpathCtxt.userData is NULL:
 *         # just for safety, should never happen
 */
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":90
 *         # not allowed, and should never happen
 *         return
 *     if c_ctxt.xpathCtxt.userData is NULL:             # <<<<<<<<<<<<<<
 *         # just for safety, should never happen
 *         return
 */
  __pyx_t_1 = (__pyx_v_c_ctxt->xpathCtxt->userData == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":92
 *     if c_ctxt.xpathCtxt.userData is NULL:
 *         # just for safety, should never happen
 *         return             # <<<<<<<<<<<<<<
 *     context = <_XSLTContext>c_ctxt.xpathCtxt.userData
 *     try:
 */
    goto __pyx_L0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":93
 *         # just for safety, should never happen
 *         return
 *     context = <_XSLTContext>c_ctxt.xpathCtxt.userData             # <<<<<<<<<<<<<<
 *     try:
 *         dict_result = python.PyDict_GetItem(
 */
  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_c_ctxt->xpathCtxt->userData)));
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)__pyx_v_c_ctxt->xpathCtxt->userData);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":94
 *         return
 *     context = <_XSLTContext>c_ctxt.xpathCtxt.userData
 *     try:             # <<<<<<<<<<<<<<
 *         dict_result = python.PyDict_GetItem(
 *             context._extension_elements, (c_uri, c_inst_node.name))
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":96
 *     try:
 *         dict_result = python.PyDict_GetItem(
 *             context._extension_elements, (c_uri, c_inst_node.name))             # <<<<<<<<<<<<<<
 *         if dict_result is NULL:
 *             raise KeyError, \
 */
      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_uri); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
      __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_c_inst_node->name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_2));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
      PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
      __pyx_t_2 = 0;
      __pyx_t_3 = 0;
      __pyx_v_dict_result = PyDict_GetItem(((PyObject *)__pyx_v_context->_extension_elements), __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":97
 *         dict_result = python.PyDict_GetItem(
 *             context._extension_elements, (c_uri, c_inst_node.name))
 *         if dict_result is NULL:             # <<<<<<<<<<<<<<
 *             raise KeyError, \
 *                 u"extension element %s not found" % funicode(c_inst_node.name)
 */
      __pyx_t_1 = (__pyx_v_dict_result == NULL);
      if (__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":99
 *         if dict_result is NULL:
 *             raise KeyError, \
 *                 u"extension element %s not found" % funicode(c_inst_node.name)             # <<<<<<<<<<<<<<
 *         extension = <object>dict_result
 * 
 */
        __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_inst_node->name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_321), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_builtin_KeyError, __pyx_t_3, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        {__pyx_filename = __pyx_f[19]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        goto __pyx_L13;
      }
      __pyx_L13:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":100
 *             raise KeyError, \
 *                 u"extension element %s not found" % funicode(c_inst_node.name)
 *         extension = <object>dict_result             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
      if (!(likely(((((PyObject *)__pyx_v_dict_result)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_dict_result), __pyx_ptype_4lxml_5etree_XSLTExtension))))) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_INCREF(((PyObject *)__pyx_v_dict_result));
      __Pyx_DECREF(((PyObject *)__pyx_v_extension));
      __pyx_v_extension = ((struct __pyx_obj_4lxml_5etree_XSLTExtension *)((PyObject *)__pyx_v_dict_result));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":102
 *         extension = <object>dict_result
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             self_node     = _newReadOnlyProxy(None, c_inst_node)
 *             output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
 */
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":103
 * 
 *         try:
 *             self_node     = _newReadOnlyProxy(None, c_inst_node)             # <<<<<<<<<<<<<<
 *             output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
 * 
 */
        __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None), __pyx_v_c_inst_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L17;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_v_self_node));
        __pyx_v_self_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_3);
        __pyx_t_3 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":104
 *         try:
 *             self_node     = _newReadOnlyProxy(None, c_inst_node)
 *             output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)             # <<<<<<<<<<<<<<
 * 
 *             if c_context_node.type == tree.XML_ELEMENT_NODE:
 */
        __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newAppendOnlyProxy(__pyx_v_self_node, __pyx_v_c_ctxt->insert)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L17;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(((PyObject *)__pyx_v_output_parent));
        __pyx_v_output_parent = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_3);
        __pyx_t_3 = 0;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":106
 *             output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
 * 
 *             if c_context_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
 *                 context_node  = _newReadOnlyProxy(self_node, c_context_node)
 *             elif c_context_node.type in (tree.XML_DOCUMENT_NODE,
 */
        __pyx_t_1 = (__pyx_v_c_context_node->type == XML_ELEMENT_NODE);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":107
 * 
 *             if c_context_node.type == tree.XML_ELEMENT_NODE:
 *                 context_node  = _newReadOnlyProxy(self_node, c_context_node)             # <<<<<<<<<<<<<<
 *             elif c_context_node.type in (tree.XML_DOCUMENT_NODE,
 *                                          tree.XML_HTML_DOCUMENT_NODE):
 */
          __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(__pyx_v_self_node, __pyx_v_c_context_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L17;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(((PyObject *)__pyx_v_context_node));
          __pyx_v_context_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_3);
          __pyx_t_3 = 0;
          goto __pyx_L19;
        }

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":108
 *             if c_context_node.type == tree.XML_ELEMENT_NODE:
 *                 context_node  = _newReadOnlyProxy(self_node, c_context_node)
 *             elif c_context_node.type in (tree.XML_DOCUMENT_NODE,             # <<<<<<<<<<<<<<
 *                                          tree.XML_HTML_DOCUMENT_NODE):
 *                 c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
 */
        __pyx_t_5 = __pyx_v_c_context_node->type;
        __pyx_t_1 = ((int)(__pyx_t_5 == XML_DOCUMENT_NODE));
        if (!__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":109
 *                 context_node  = _newReadOnlyProxy(self_node, c_context_node)
 *             elif c_context_node.type in (tree.XML_DOCUMENT_NODE,
 *                                          tree.XML_HTML_DOCUMENT_NODE):             # <<<<<<<<<<<<<<
 *                 c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
 *                 if c_node is not NULL:
 */
          __pyx_t_6 = ((int)(__pyx_t_5 == XML_HTML_DOCUMENT_NODE));
          __pyx_t_7 = __pyx_t_6;
        } else {
          __pyx_t_7 = __pyx_t_1;
        }
        __pyx_t_1 = __pyx_t_7;
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":110
 *             elif c_context_node.type in (tree.XML_DOCUMENT_NODE,
 *                                          tree.XML_HTML_DOCUMENT_NODE):
 *                 c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)             # <<<<<<<<<<<<<<
 *                 if c_node is not NULL:
 *                     context_node = _newReadOnlyProxy(self_node, c_node)
 */
          __pyx_v_c_node = xmlDocGetRootElement(((xmlDoc *)__pyx_v_c_context_node));

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":111
 *                                          tree.XML_HTML_DOCUMENT_NODE):
 *                 c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
 *                 if c_node is not NULL:             # <<<<<<<<<<<<<<
 *                     context_node = _newReadOnlyProxy(self_node, c_node)
 *                 else:
 */
          __pyx_t_1 = (__pyx_v_c_node != NULL);
          if (__pyx_t_1) {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":112
 *                 c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
 *                 if c_node is not NULL:
 *                     context_node = _newReadOnlyProxy(self_node, c_node)             # <<<<<<<<<<<<<<
 *                 else:
 *                     context_node = None
 */
            __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__newReadOnlyProxy(__pyx_v_self_node, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L17;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(((PyObject *)__pyx_v_context_node));
            __pyx_v_context_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)__pyx_t_3);
            __pyx_t_3 = 0;
            goto __pyx_L20;
          }
          /*else*/ {

            /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":114
 *                     context_node = _newReadOnlyProxy(self_node, c_node)
 *                 else:
 *                     context_node = None             # <<<<<<<<<<<<<<
 *             else:
 *                 raise TypeError, \
 */
            __Pyx_INCREF(Py_None);
            __Pyx_DECREF(((PyObject *)__pyx_v_context_node));
            __pyx_v_context_node = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None);
          }
          __pyx_L20:;
          goto __pyx_L19;
        }
        /*else*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":117
 *             else:
 *                 raise TypeError, \
 *                       u"Unsupported XSLT context node type %d, extension elements require an element" % c_context_node.type             # <<<<<<<<<<<<<<
 * 
 *             context._extension_element_proxy = self_node
 */
          __pyx_t_3 = PyInt_FromLong(__pyx_v_c_context_node->type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L17;}
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_322), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L17;}
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_4, 0);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          {__pyx_filename = __pyx_f[19]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L17;}
        }
        __pyx_L19:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":119
 *                       u"Unsupported XSLT context node type %d, extension elements require an element" % c_context_node.type
 * 
 *             context._extension_element_proxy = self_node             # <<<<<<<<<<<<<<
 *             extension.execute(context, self_node, context_node, output_parent)
 *         finally:
 */
        __Pyx_INCREF(((PyObject *)__pyx_v_self_node));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self_node));
        __Pyx_GOTREF(__pyx_v_context->_extension_element_proxy);
        __Pyx_DECREF(((PyObject *)__pyx_v_context->_extension_element_proxy));
        __pyx_v_context->_extension_element_proxy = __pyx_v_self_node;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":120
 * 
 *             context._extension_element_proxy = self_node
 *             extension.execute(context, self_node, context_node, output_parent)             # <<<<<<<<<<<<<<
 *         finally:
 *             context._extension_element_proxy = None
 */
        __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_extension), __pyx_n_s__execute); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L17;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L17;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(((PyObject *)__pyx_v_context));
        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_context));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
        __Pyx_INCREF(((PyObject *)__pyx_v_self_node));
        PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self_node));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self_node));
        __Pyx_INCREF(((PyObject *)__pyx_v_context_node));
        PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_context_node));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_context_node));
        __Pyx_INCREF(((PyObject *)__pyx_v_output_parent));
        PyTuple_SET_ITEM(__pyx_t_3, 3, ((PyObject *)__pyx_v_output_parent));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_output_parent));
        __pyx_t_2 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L17;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      /*finally:*/ {
        int __pyx_why;
        PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
        int __pyx_exc_lineno;
        __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
        __pyx_why = 0; goto __pyx_L18;
        __pyx_L17: {
          __pyx_why = 4;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
          __pyx_exc_lineno = __pyx_lineno;
          goto __pyx_L18;
        }
        __pyx_L18:;

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":122
 *             extension.execute(context, self_node, context_node, output_parent)
 *         finally:
 *             context._extension_element_proxy = None             # <<<<<<<<<<<<<<
 *             if self_node is not None:
 *                 _freeReadOnlyProxies(self_node)
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_context->_extension_element_proxy);
        __Pyx_DECREF(((PyObject *)__pyx_v_context->_extension_element_proxy));
        __pyx_v_context->_extension_element_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None);

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":123
 *         finally:
 *             context._extension_element_proxy = None
 *             if self_node is not None:             # <<<<<<<<<<<<<<
 *                 _freeReadOnlyProxies(self_node)
 *     except Exception, e:
 */
        __pyx_t_1 = (((PyObject *)__pyx_v_self_node) != Py_None);
        if (__pyx_t_1) {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":124
 *             context._extension_element_proxy = None
 *             if self_node is not None:
 *                 _freeReadOnlyProxies(self_node)             # <<<<<<<<<<<<<<
 *     except Exception, e:
 *         e = unicode(e).encode(u"UTF-8")
 */
          __pyx_t_2 = __pyx_f_4lxml_5etree__freeReadOnlyProxies(__pyx_v_self_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L21_error;}
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          goto __pyx_L22;
        }
        __pyx_L22:;
        goto __pyx_L23;
        __pyx_L21_error:;
        if (__pyx_why == 4) {
          Py_XDECREF(__pyx_exc_type);
          Py_XDECREF(__pyx_exc_value);
          Py_XDECREF(__pyx_exc_tb);
        }
        goto __pyx_L5_error;
        __pyx_L23:;
        switch (__pyx_why) {
          case 4: {
            __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
            __pyx_lineno = __pyx_exc_lineno;
            __pyx_exc_type = 0;
            __pyx_exc_value = 0;
            __pyx_exc_tb = 0;
            goto __pyx_L5_error;
          }
        }
      }
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L12_try_end;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":125
 *             if self_node is not None:
 *                 _freeReadOnlyProxies(self_node)
 *     except Exception, e:             # <<<<<<<<<<<<<<
 *         e = unicode(e).encode(u"UTF-8")
 *         message = python.PyString_FromFormat(
 */
    __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("lxml.etree._callExtensionElement");
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_e);
      __pyx_v_e = __pyx_t_3;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":126
 *                 _freeReadOnlyProxies(self_node)
 *     except Exception, e:
 *         e = unicode(e).encode(u"UTF-8")             # <<<<<<<<<<<<<<
 *         message = python.PyString_FromFormat(
 *             "Error executing extension element '%s': %s",
 */
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_v_e);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_e);
      __Pyx_GIVEREF(__pyx_v_e);
      __pyx_t_10 = PyObject_Call(((PyObject *)((PyObject*)&PyUnicode_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(__pyx_t_10 == Py_None)) {
        PyErr_SetString(PyExc_AttributeError, "'NoneType' object has no attribute 'encode'"); {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;} 
      }
      __pyx_t_9 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject *)__pyx_t_10))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_9));
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_v_e);
      __pyx_v_e = ((PyObject *)__pyx_t_9);
      __pyx_t_9 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":129
 *         message = python.PyString_FromFormat(
 *             "Error executing extension element '%s': %s",
 *             c_inst_node.name, _cstr(e))             # <<<<<<<<<<<<<<
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)
 *         context._exc._store_raised()
 */
      __pyx_t_9 = PyString_FromFormat(__pyx_k_323, __pyx_v_c_inst_node->name, PyString_AS_STRING(__pyx_v_e)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_9;
      __pyx_t_9 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":130
 *             "Error executing extension element '%s': %s",
 *             c_inst_node.name, _cstr(e))
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)             # <<<<<<<<<<<<<<
 *         context._exc._store_raised()
 *     except:
 */
      __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_message); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      xsltTransformError(__pyx_v_c_ctxt, NULL, __pyx_v_c_inst_node, __pyx_t_11);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":131
 *             c_inst_node.name, _cstr(e))
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)
 *         context._exc._store_raised()             # <<<<<<<<<<<<<<
 *     except:
 *         # just in case
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_store_raised(__pyx_v_context->__pyx_base._exc);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L6_exception_handled;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":132
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)
 *         context._exc._store_raised()
 *     except:             # <<<<<<<<<<<<<<
 *         # just in case
 *         message = python.PyString_FromFormat(
 */
    /*except:*/ {
      __Pyx_AddTraceback("lxml.etree._callExtensionElement");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":135
 *         # just in case
 *         message = python.PyString_FromFormat(
 *             "Error executing extension element '%s'", c_inst_node.name)             # <<<<<<<<<<<<<<
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)
 *         context._exc._store_raised()
 */
      __pyx_t_9 = PyString_FromFormat(__pyx_k_324, __pyx_v_c_inst_node->name); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_v_message);
      __pyx_v_message = __pyx_t_9;
      __pyx_t_9 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":136
 *         message = python.PyString_FromFormat(
 *             "Error executing extension element '%s'", c_inst_node.name)
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)             # <<<<<<<<<<<<<<
 *         context._exc._store_raised()
 */
      __pyx_t_11 = __Pyx_PyBytes_AsString(__pyx_v_message); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
      xsltTransformError(__pyx_v_c_ctxt, NULL, __pyx_v_c_inst_node, __pyx_t_11);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xsltext.pxi":137
 *             "Error executing extension element '%s'", c_inst_node.name)
 *         xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, message)
 *         context._exc._store_raised()             # <<<<<<<<<<<<<<
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_context->__pyx_base._exc->__pyx_vtab)->_store_raised(__pyx_v_context->__pyx_base._exc);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L6_exception_handled;
    }
    __pyx_L7_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L12_try_end:;
  }

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("lxml.etree._callExtensionElement");
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_DECREF((PyObject *)__pyx_v_extension);
  __Pyx_DECREF((PyObject *)__pyx_v_context_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self_node);
  __Pyx_DECREF((PyObject *)__pyx_v_output_parent);
  __Pyx_DECREF(__pyx_v_e);
  __Pyx_DECREF(__pyx_v_message);
  __Pyx_RefNannyFinishContext();
  PyGILState_Release(_save);
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2752
 *     u"Base class for XML validators."
 *     cdef _ErrorLog _error_log
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         u"__init__(self)"
 *         self._error_log = _ErrorLog()
 */

static int __pyx_pf_4lxml_5etree_10_Validator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_10_Validator___init__[] = "__init__(self)";
static int __pyx_pf_4lxml_5etree_10_Validator___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2754
 *     def __init__(self):
 *         u"__init__(self)"
 *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 * 
 *     def validate(self, etree):
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log);
  __Pyx_DECREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log));
  ((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_1);
  __pyx_t_1 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._Validator.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2756
 *         self._error_log = _ErrorLog()
 * 
 *     def validate(self, etree):             # <<<<<<<<<<<<<<
 *         u"""validate(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10_Validator_validate(PyObject *__pyx_v_self, PyObject *__pyx_v_etree); /*proto*/
static char __pyx_doc_4lxml_5etree_10_Validator_validate[] = "validate(self, etree)\n\n        Validate the document using this schema.\n\n        Returns true if document is valid, false if not.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10_Validator_validate(PyObject *__pyx_v_self, PyObject *__pyx_v_etree) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("validate");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2763
 *         Returns true if document is valid, false if not.
 *         """
 *         return self(etree)             # <<<<<<<<<<<<<<
 * 
 *     def assertValid(self, etree):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_etree);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
  __Pyx_GIVEREF(__pyx_v_etree);
  __pyx_t_2 = PyObject_Call(__pyx_v_self, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Validator.validate");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2765
 *         return self(etree)
 * 
 *     def assertValid(self, etree):             # <<<<<<<<<<<<<<
 *         u"""assertValid(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10_Validator_assertValid(PyObject *__pyx_v_self, PyObject *__pyx_v_etree); /*proto*/
static char __pyx_doc_4lxml_5etree_10_Validator_assertValid[] = "assertValid(self, etree)\n\n        Raises `DocumentInvalid` if the document does not comply with the schema.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10_Validator_assertValid(PyObject *__pyx_v_self, PyObject *__pyx_v_etree) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("assertValid");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2770
 *         Raises `DocumentInvalid` if the document does not comply with the schema.
 *         """
 *         if not self(etree):             # <<<<<<<<<<<<<<
 *             raise DocumentInvalid(self._error_log._buildExceptionMessage(
 *                     u"Document does not comply with schema"),
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_etree);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
  __Pyx_GIVEREF(__pyx_v_etree);
  __pyx_t_2 = PyObject_Call(__pyx_v_self, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (!__pyx_t_3);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2771
 *         """
 *         if not self(etree):
 *             raise DocumentInvalid(self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                     u"Document does not comply with schema"),
 *                                   self._error_log)
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__DocumentInvalid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log), ((PyObject *)__pyx_kp_u_325)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2773
 *             raise DocumentInvalid(self._error_log._buildExceptionMessage(
 *                     u"Document does not comply with schema"),
 *                                   self._error_log)             # <<<<<<<<<<<<<<
 * 
 *     def assert_(self, etree):
 */
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log));
    PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log));
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._Validator.assertValid");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2775
 *                                   self._error_log)
 * 
 *     def assert_(self, etree):             # <<<<<<<<<<<<<<
 *         u"""assert_(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10_Validator_assert_(PyObject *__pyx_v_self, PyObject *__pyx_v_etree); /*proto*/
static char __pyx_doc_4lxml_5etree_10_Validator_assert_[] = "assert_(self, etree)\n\n        Raises `AssertionError` if the document does not comply with the schema.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_10_Validator_assert_(PyObject *__pyx_v_self, PyObject *__pyx_v_etree) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("assert_");
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2780
 *         Raises `AssertionError` if the document does not comply with the schema.
 *         """
 *         if not self(etree):             # <<<<<<<<<<<<<<
 *             raise AssertionError, self._error_log._buildExceptionMessage(
 *                 u"Document does not comply with schema")
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_etree);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
  __Pyx_GIVEREF(__pyx_v_etree);
  __pyx_t_2 = PyObject_Call(__pyx_v_self, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (!__pyx_t_3);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2781
 *         """
 *         if not self(etree):
 *             raise AssertionError, self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                 u"Document does not comply with schema")
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log), ((PyObject *)__pyx_kp_u_325)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_2, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Validator.assert_");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2786
 *     property error_log:
 *         u"The log of validation errors and warnings."
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._error_log.copy()
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("__get__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2787
 *         u"The log of validation errors and warnings."
 *         def __get__(self):
 *             return self._error_log.copy()             # <<<<<<<<<<<<<<
 * 
 * include "dtd.pxi"        # DTD
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((struct __pyx_obj_4lxml_5etree__Validator *)__pyx_v_self)->_error_log), __pyx_n_s__copy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._Validator.error_log.__get__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":31
 *     """
 *     cdef tree.xmlDtd* _c_dtd
 *     def __init__(self, file=None, *, external_id=None):             # <<<<<<<<<<<<<<
 *         self._c_dtd = NULL
 *         _Validator.__init__(self)
 */

static int __pyx_pf_4lxml_5etree_3DTD___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_3DTD___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_file = 0;
  PyObject *__pyx_v_external_id = 0;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  xmlDtd *__pyx_t_5;
  char *__pyx_t_6;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__file,&__pyx_n_s__external_id,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__external_id);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_file = values[0];
    __pyx_v_external_id = values[1];
  } else {
    __pyx_v_file = ((PyObject *)Py_None);
    __pyx_v_external_id = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_file = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.DTD.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_INCREF(__pyx_v_external_id);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":32
 *     cdef tree.xmlDtd* _c_dtd
 *     def __init__(self, file=None, *, external_id=None):
 *         self._c_dtd = NULL             # <<<<<<<<<<<<<<
 *         _Validator.__init__(self)
 *         if file is not None:
 */
  ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":33
 *     def __init__(self, file=None, *, external_id=None):
 *         self._c_dtd = NULL
 *         _Validator.__init__(self)             # <<<<<<<<<<<<<<
 *         if file is not None:
 *             if _isString(file):
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Validator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":34
 *         self._c_dtd = NULL
 *         _Validator.__init__(self)
 *         if file is not None:             # <<<<<<<<<<<<<<
 *             if _isString(file):
 *                 file = _encodeFilename(file)
 */
  __pyx_t_4 = (__pyx_v_file != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":35
 *         _Validator.__init__(self)
 *         if file is not None:
 *             if _isString(file):             # <<<<<<<<<<<<<<
 *                 file = _encodeFilename(file)
 *                 self._error_log.connect()
 */
    __pyx_t_4 = _isString(__pyx_v_file);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":36
 *         if file is not None:
 *             if _isString(file):
 *                 file = _encodeFilename(file)             # <<<<<<<<<<<<<<
 *                 self._error_log.connect()
 *                 self._c_dtd = xmlparser.xmlParseDTD(NULL, _cstr(file))
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_file);
      __pyx_v_file = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":37
 *             if _isString(file):
 *                 file = _encodeFilename(file)
 *                 self._error_log.connect()             # <<<<<<<<<<<<<<
 *                 self._c_dtd = xmlparser.xmlParseDTD(NULL, _cstr(file))
 *                 self._error_log.disconnect()
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":38
 *                 file = _encodeFilename(file)
 *                 self._error_log.connect()
 *                 self._c_dtd = xmlparser.xmlParseDTD(NULL, _cstr(file))             # <<<<<<<<<<<<<<
 *                 self._error_log.disconnect()
 *             elif hasattr(file, u'read'):
 */
      ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd = xmlParseDTD(NULL, PyString_AS_STRING(__pyx_v_file));

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":39
 *                 self._error_log.connect()
 *                 self._c_dtd = xmlparser.xmlParseDTD(NULL, _cstr(file))
 *                 self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             elif hasattr(file, u'read'):
 *                 self._c_dtd = _parseDtdFromFilelike(file)
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);
      goto __pyx_L7;
    }

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":40
 *                 self._c_dtd = xmlparser.xmlParseDTD(NULL, _cstr(file))
 *                 self._error_log.disconnect()
 *             elif hasattr(file, u'read'):             # <<<<<<<<<<<<<<
 *                 self._c_dtd = _parseDtdFromFilelike(file)
 *             else:
 */
    __pyx_t_4 = PyObject_HasAttr(__pyx_v_file, ((PyObject *)__pyx_n_u__read)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":41
 *                 self._error_log.disconnect()
 *             elif hasattr(file, u'read'):
 *                 self._c_dtd = _parseDtdFromFilelike(file)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise DTDParseError, u"file must be a filename or file-like object"
 */
      __pyx_t_5 = __pyx_f_4lxml_5etree__parseDtdFromFilelike(__pyx_v_file); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd = __pyx_t_5;
      goto __pyx_L7;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":43
 *                 self._c_dtd = _parseDtdFromFilelike(file)
 *             else:
 *                 raise DTDParseError, u"file must be a filename or file-like object"             # <<<<<<<<<<<<<<
 *         elif external_id is not None:
 *             self._error_log.connect()
 */
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_326), 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[20]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L7:;
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":44
 *             else:
 *                 raise DTDParseError, u"file must be a filename or file-like object"
 *         elif external_id is not None:             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             self._c_dtd = xmlparser.xmlParseDTD(external_id, NULL)
 */
  __pyx_t_4 = (__pyx_v_external_id != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":45
 *                 raise DTDParseError, u"file must be a filename or file-like object"
 *         elif external_id is not None:
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             self._c_dtd = xmlparser.xmlParseDTD(external_id, NULL)
 *             self._error_log.disconnect()
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":46
 *         elif external_id is not None:
 *             self._error_log.connect()
 *             self._c_dtd = xmlparser.xmlParseDTD(external_id, NULL)             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *         else:
 */
    __pyx_t_6 = __Pyx_PyBytes_AsString(__pyx_v_external_id); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd = xmlParseDTD(__pyx_t_6, NULL);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":47
 *             self._error_log.connect()
 *             self._c_dtd = xmlparser.xmlParseDTD(external_id, NULL)
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         else:
 *             raise DTDParseError, u"either filename or external ID required"
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":49
 *             self._error_log.disconnect()
 *         else:
 *             raise DTDParseError, u"either filename or external ID required"             # <<<<<<<<<<<<<<
 * 
 *         if self._c_dtd is NULL:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_327), 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":51
 *             raise DTDParseError, u"either filename or external ID required"
 * 
 *         if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
 *             raise DTDParseError(
 *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
 */
  __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":52
 * 
 *         if self._c_dtd is NULL:
 *             raise DTDParseError(             # <<<<<<<<<<<<<<
 *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
 *                 self._error_log)
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":53
 *         if self._c_dtd is NULL:
 *             raise DTDParseError(
 *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),             # <<<<<<<<<<<<<<
 *                 self._error_log)
 * 
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log), ((PyObject *)__pyx_kp_u_328)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":54
 *             raise DTDParseError(
 *                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
 *                 self._error_log)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L8;
  }
  __pyx_L8:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.DTD.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_DECREF(__pyx_v_external_id);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":56
 *                 self._error_log)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         tree.xmlFreeDtd(self._c_dtd)
 * 
 */

static void __pyx_pf_4lxml_5etree_3DTD___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_3DTD___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":57
 * 
 *     def __dealloc__(self):
 *         tree.xmlFreeDtd(self._c_dtd)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, etree):
 */
  xmlFreeDtd(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":59
 *         tree.xmlFreeDtd(self._c_dtd)
 * 
 *     def __call__(self, etree):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_3DTD___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_3DTD___call__[] = "__call__(self, etree)\n\n        Validate doc using the DTD.\n\n        Returns true if the document is valid, false if not.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_3DTD___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlDoc *__pyx_v_c_doc;
  xmlValidCtxt *__pyx_v_valid_ctxt;
  int __pyx_v_ret;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  xmlDoc *__pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,0};
  __Pyx_RefNannySetupContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[20]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.DTD.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":72
 *         cdef int ret
 * 
 *         doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(etree)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":73
 * 
 *         doc = _documentOrRaise(etree)
 *         root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.connect()
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":75
 *         root_node = _rootNodeOrRaise(etree)
 * 
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
 *         if valid_ctxt is NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":76
 * 
 *         self._error_log.connect()
 *         valid_ctxt = dtdvalid.xmlNewValidCtxt()             # <<<<<<<<<<<<<<
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 */
  __pyx_v_valid_ctxt = xmlNewValidCtxt();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":77
 *         self._error_log.connect()
 *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
 *         if valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *             raise DTDError(u"Failed to create validation context",
 */
  __pyx_t_2 = (__pyx_v_valid_ctxt == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":78
 *         valid_ctxt = dtdvalid.xmlNewValidCtxt()
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             raise DTDError(u"Failed to create validation context",
 *                            self._error_log)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":79
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 *             raise DTDError(u"Failed to create validation context",             # <<<<<<<<<<<<<<
 *                            self._error_log)
 * 
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":80
 *             self._error_log.disconnect()
 *             raise DTDError(u"Failed to create validation context",
 *                            self._error_log)             # <<<<<<<<<<<<<<
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_329));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_329));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_329));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_4 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":82
 *                            self._error_log)
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":83
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":84
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:
 *             ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)             # <<<<<<<<<<<<<<
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 */
      __pyx_v_ret = xmlValidateDtd(__pyx_v_valid_ctxt, __pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->_c_dtd);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":83
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":85
 *         with nogil:
 *             ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd)
 *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 * 
 *         dtdvalid.xmlFreeValidCtxt(valid_ctxt)
 */
  __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":87
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 *         dtdvalid.xmlFreeValidCtxt(valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.disconnect()
 */
  xmlFreeValidCtxt(__pyx_v_valid_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":89
 *         dtdvalid.xmlFreeValidCtxt(valid_ctxt)
 * 
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         if ret == -1:
 *             raise DTDValidateError(u"Internal error in DTD validation",
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":90
 * 
 *         self._error_log.disconnect()
 *         if ret == -1:             # <<<<<<<<<<<<<<
 *             raise DTDValidateError(u"Internal error in DTD validation",
 *                                    self._error_log)
 */
  __pyx_t_2 = (__pyx_v_ret == -1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":91
 *         self._error_log.disconnect()
 *         if ret == -1:
 *             raise DTDValidateError(u"Internal error in DTD validation",             # <<<<<<<<<<<<<<
 *                                    self._error_log)
 *         if ret == 1:
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDValidateError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":92
 *         if ret == -1:
 *             raise DTDValidateError(u"Internal error in DTD validation",
 *                                    self._error_log)             # <<<<<<<<<<<<<<
 *         if ret == 1:
 *             return True
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_330));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_330));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_330));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_1 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":93
 *             raise DTDValidateError(u"Internal error in DTD validation",
 *                                    self._error_log)
 *         if ret == 1:             # <<<<<<<<<<<<<<
 *             return True
 *         else:
 */
  __pyx_t_2 = (__pyx_v_ret == 1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":94
 *                                    self._error_log)
 *         if ret == 1:
 *             return True             # <<<<<<<<<<<<<<
 *         else:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L11;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":96
 *             return True
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L11:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.DTD.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":99
 * 
 * 
 * cdef tree.xmlDtd* _parseDtdFromFilelike(file) except NULL:             # <<<<<<<<<<<<<<
 *     cdef _ExceptionContext exc_context
 *     cdef _FileReaderContext dtd_parser
 */

static  xmlDtd *__pyx_f_4lxml_5etree__parseDtdFromFilelike(PyObject *__pyx_v_file) {
  struct __pyx_obj_4lxml_5etree__ExceptionContext *__pyx_v_exc_context;
  struct __pyx_obj_4lxml_5etree__FileReaderContext *__pyx_v_dtd_parser;
  struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_error_log;
  xmlDtd *__pyx_v_c_dtd;
  xmlDtd *__pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannySetupContext("_parseDtdFromFilelike");
  __Pyx_INCREF(__pyx_v_file);
  __pyx_v_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_dtd_parser = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":104
 *     cdef _ErrorLog error_log
 *     cdef tree.xmlDtd* c_dtd
 *     exc_context = _ExceptionContext()             # <<<<<<<<<<<<<<
 *     dtd_parser = _FileReaderContext(file, exc_context, None, None)
 *     error_log = _ErrorLog()
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ExceptionContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_exc_context));
  __pyx_v_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":105
 *     cdef tree.xmlDtd* c_dtd
 *     exc_context = _ExceptionContext()
 *     dtd_parser = _FileReaderContext(file, exc_context, None, None)             # <<<<<<<<<<<<<<
 *     error_log = _ErrorLog()
 * 
 */
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_file);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_file);
  __Pyx_GIVEREF(__pyx_v_file);
  __Pyx_INCREF(((PyObject *)__pyx_v_exc_context));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_exc_context));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_exc_context));
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_INCREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 3, Py_None);
  __Pyx_GIVEREF(Py_None);
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FileReaderContext)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_v_dtd_parser));
  __pyx_v_dtd_parser = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":106
 *     exc_context = _ExceptionContext()
 *     dtd_parser = _FileReaderContext(file, exc_context, None, None)
 *     error_log = _ErrorLog()             # <<<<<<<<<<<<<<
 * 
 *     error_log.connect()
 */
  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_error_log));
  __pyx_v_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":108
 *     error_log = _ErrorLog()
 * 
 *     error_log.connect()             # <<<<<<<<<<<<<<
 *     c_dtd = dtd_parser._readDtd()
 *     error_log.disconnect()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(__pyx_v_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":109
 * 
 *     error_log.connect()
 *     c_dtd = dtd_parser._readDtd()             # <<<<<<<<<<<<<<
 *     error_log.disconnect()
 * 
 */
  __pyx_v_c_dtd = ((struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext *)__pyx_v_dtd_parser->__pyx_vtab)->_readDtd(__pyx_v_dtd_parser);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":110
 *     error_log.connect()
 *     c_dtd = dtd_parser._readDtd()
 *     error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *     exc_context._raise_if_stored()
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(__pyx_v_error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":112
 *     error_log.disconnect()
 * 
 *     exc_context._raise_if_stored()             # <<<<<<<<<<<<<<
 *     if c_dtd is NULL:
 *         raise DTDParseError(u"error parsing DTD", error_log)
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_exc_context); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":113
 * 
 *     exc_context._raise_if_stored()
 *     if c_dtd is NULL:             # <<<<<<<<<<<<<<
 *         raise DTDParseError(u"error parsing DTD", error_log)
 *     return c_dtd
 */
  __pyx_t_4 = (__pyx_v_c_dtd == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":114
 *     exc_context._raise_if_stored()
 *     if c_dtd is NULL:
 *         raise DTDParseError(u"error parsing DTD", error_log)             # <<<<<<<<<<<<<<
 *     return c_dtd
 * 
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDParseError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_328));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_u_328));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_328));
    __Pyx_INCREF(((PyObject *)__pyx_v_error_log));
    PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_error_log));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_error_log));
    __pyx_t_5 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[20]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":115
 *     if c_dtd is NULL:
 *         raise DTDParseError(u"error parsing DTD", error_log)
 *     return c_dtd             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "etree_defs.h":
 */
  __pyx_r = __pyx_v_c_dtd;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree._parseDtdFromFilelike");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_exc_context);
  __Pyx_DECREF((PyObject *)__pyx_v_dtd_parser);
  __Pyx_DECREF((PyObject *)__pyx_v_error_log);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":121
 *     cdef DTD NEW_DTD "PY_NEW" (object t)
 * 
 * cdef DTD _dtdFactory(tree.xmlDtd* c_dtd):             # <<<<<<<<<<<<<<
 *     # do not run through DTD.__init__()!
 *     cdef DTD dtd
 */

static  struct __pyx_obj_4lxml_5etree_DTD *__pyx_f_4lxml_5etree__dtdFactory(xmlDtd *__pyx_v_c_dtd) {
  struct __pyx_obj_4lxml_5etree_DTD *__pyx_v_dtd;
  struct __pyx_obj_4lxml_5etree_DTD *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("_dtdFactory");
  __pyx_v_dtd = ((struct __pyx_obj_4lxml_5etree_DTD *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":124
 *     # do not run through DTD.__init__()!
 *     cdef DTD dtd
 *     if c_dtd is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     dtd = NEW_DTD(DTD)
 */
  __pyx_t_1 = (__pyx_v_c_dtd == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":125
 *     cdef DTD dtd
 *     if c_dtd is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     dtd = NEW_DTD(DTD)
 *     dtd._c_dtd = tree.xmlCopyDtd(c_dtd)
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(Py_None);
    __pyx_r = ((struct __pyx_obj_4lxml_5etree_DTD *)Py_None);
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":126
 *     if c_dtd is NULL:
 *         return None
 *     dtd = NEW_DTD(DTD)             # <<<<<<<<<<<<<<
 *     dtd._c_dtd = tree.xmlCopyDtd(c_dtd)
 *     if dtd._c_dtd is NULL:
 */
  __pyx_t_2 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_DTD)))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_v_dtd));
  __pyx_v_dtd = ((struct __pyx_obj_4lxml_5etree_DTD *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":127
 *         return None
 *     dtd = NEW_DTD(DTD)
 *     dtd._c_dtd = tree.xmlCopyDtd(c_dtd)             # <<<<<<<<<<<<<<
 *     if dtd._c_dtd is NULL:
 *         python.PyErr_NoMemory()
 */
  __pyx_v_dtd->_c_dtd = xmlCopyDtd(__pyx_v_c_dtd);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":128
 *     dtd = NEW_DTD(DTD)
 *     dtd._c_dtd = tree.xmlCopyDtd(c_dtd)
 *     if dtd._c_dtd is NULL:             # <<<<<<<<<<<<<<
 *         python.PyErr_NoMemory()
 *     _Validator.__init__(dtd)
 */
  __pyx_t_1 = (__pyx_v_dtd->_c_dtd == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":129
 *     dtd._c_dtd = tree.xmlCopyDtd(c_dtd)
 *     if dtd._c_dtd is NULL:
 *         python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *     _Validator.__init__(dtd)
 *     return dtd
 */
    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":130
 *     if dtd._c_dtd is NULL:
 *         python.PyErr_NoMemory()
 *     _Validator.__init__(dtd)             # <<<<<<<<<<<<<<
 *     return dtd
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Validator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_v_dtd));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_dtd));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_dtd));
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":131
 *         python.PyErr_NoMemory()
 *     _Validator.__init__(dtd)
 *     return dtd             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_dtd));
  __pyx_r = __pyx_v_dtd;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree_DTD *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree._dtdFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_dtd);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":30
 *     """
 *     cdef relaxng.xmlRelaxNG* _c_schema
 *     def __init__(self, etree=None, *, file=None):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         cdef _Element root_node
 */

static int __pyx_pf_4lxml_5etree_7RelaxNG___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_7RelaxNG___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  PyObject *__pyx_v_file = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlNode *__pyx_v_c_node;
  xmlDoc *__pyx_v_fake_c_doc;
  char *__pyx_v_c_href;
  xmlRelaxNGParserCtxt *__pyx_v_parser_ctxt;
  PyObject *__pyx_v_filename;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  xmlDoc *__pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,&__pyx_n_s__file,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
    __pyx_v_file = values[1];
  } else {
    __pyx_v_etree = ((PyObject *)Py_None);
    __pyx_v_file = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.RelaxNG.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __Pyx_INCREF(__pyx_v_file);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_filename = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":37
 *         cdef char* c_href
 *         cdef relaxng.xmlRelaxNGParserCtxt* parser_ctxt
 *         _Validator.__init__(self)             # <<<<<<<<<<<<<<
 *         self._c_schema = NULL
 *         fake_c_doc = NULL
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Validator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":38
 *         cdef relaxng.xmlRelaxNGParserCtxt* parser_ctxt
 *         _Validator.__init__(self)
 *         self._c_schema = NULL             # <<<<<<<<<<<<<<
 *         fake_c_doc = NULL
 *         if etree is not None:
 */
  ((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->_c_schema = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":39
 *         _Validator.__init__(self)
 *         self._c_schema = NULL
 *         fake_c_doc = NULL             # <<<<<<<<<<<<<<
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)
 */
  __pyx_v_fake_c_doc = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":40
 *         self._c_schema = NULL
 *         fake_c_doc = NULL
 *         if etree is not None:             # <<<<<<<<<<<<<<
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)
 */
  __pyx_t_4 = (__pyx_v_etree != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":41
 *         fake_c_doc = NULL
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *             root_node = _rootNodeOrRaise(etree)
 *             c_node = root_node._c_node
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":42
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 *             c_node = root_node._c_node
 *             # work around for libxml2 crash bug if document is not RNG at all
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
    __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":43
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)
 *             c_node = root_node._c_node             # <<<<<<<<<<<<<<
 *             # work around for libxml2 crash bug if document is not RNG at all
 *             if _LIBXML_VERSION_INT < 20624:
 */
    __pyx_v_c_node = __pyx_v_root_node->_c_node;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":45
 *             c_node = root_node._c_node
 *             # work around for libxml2 crash bug if document is not RNG at all
 *             if _LIBXML_VERSION_INT < 20624:             # <<<<<<<<<<<<<<
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \
 */
    __pyx_t_4 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT < 20624);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":46
 *             # work around for libxml2 crash bug if document is not RNG at all
 *             if _LIBXML_VERSION_INT < 20624:
 *                 c_href = _getNs(c_node)             # <<<<<<<<<<<<<<
 *                 if c_href is NULL or \
 *                        cstd.strcmp(c_href,
 */
      __pyx_v_c_href = _getNs(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":47
 *             if _LIBXML_VERSION_INT < 20624:
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \             # <<<<<<<<<<<<<<
 *                        cstd.strcmp(c_href,
 *                                    'http://relaxng.org/ns/structure/1.0') != 0:
 */
      __pyx_t_4 = (__pyx_v_c_href == NULL);
      if (!__pyx_t_4) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":48
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \
 *                        cstd.strcmp(c_href,             # <<<<<<<<<<<<<<
 *                                    'http://relaxng.org/ns/structure/1.0') != 0:
 *                     raise RelaxNGParseError, u"Document is not Relax NG"
 */
        __pyx_t_5 = (strcmp(__pyx_v_c_href, __pyx_k_331) != 0);
        __pyx_t_6 = __pyx_t_5;
      } else {
        __pyx_t_6 = __pyx_t_4;
      }
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":50
 *                        cstd.strcmp(c_href,
 *                                    'http://relaxng.org/ns/structure/1.0') != 0:
 *                     raise RelaxNGParseError, u"Document is not Relax NG"             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 */
        __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_332), 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        {__pyx_filename = __pyx_f[21]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":51
 *                                    'http://relaxng.org/ns/structure/1.0') != 0:
 *                     raise RelaxNGParseError, u"Document is not Relax NG"
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":52
 *                     raise RelaxNGParseError, u"Document is not Relax NG"
 *             self._error_log.connect()
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fake_c_doc = __pyx_t_7;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":53
 *             self._error_log.connect()
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)             # <<<<<<<<<<<<<<
 *         elif file is not None:
 *             if _isString(file):
 */
    __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_fake_c_doc);
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":54
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:             # <<<<<<<<<<<<<<
 *             if _isString(file):
 *                 filename = _encodeFilename(file)
 */
  __pyx_t_6 = (__pyx_v_file != Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":55
 *             parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:
 *             if _isString(file):             # <<<<<<<<<<<<<<
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()
 */
    __pyx_t_6 = _isString(__pyx_v_file);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":56
 *         elif file is not None:
 *             if _isString(file):
 *                 filename = _encodeFilename(file)             # <<<<<<<<<<<<<<
 *                 self._error_log.connect()
 *                 parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
 */
      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_v_filename);
      __pyx_v_filename = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":57
 *             if _isString(file):
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()             # <<<<<<<<<<<<<<
 *                 parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
 *             else:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":58
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()
 *                 parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))             # <<<<<<<<<<<<<<
 *             else:
 *                 doc = _parseDocument(file, None, None)
 */
      __pyx_v_parser_ctxt = xmlRelaxNGNewParserCtxt(PyString_AS_STRING(__pyx_v_filename));
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":60
 *                 parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
 *             else:
 *                 doc = _parseDocument(file, None, None)             # <<<<<<<<<<<<<<
 *                 self._error_log.connect()
 *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
 */
      __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":61
 *             else:
 *                 doc = _parseDocument(file, None, None)
 *                 self._error_log.connect()             # <<<<<<<<<<<<<<
 *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
 *         else:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":62
 *                 doc = _parseDocument(file, None, None)
 *                 self._error_log.connect()
 *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)             # <<<<<<<<<<<<<<
 *         else:
 *             raise RelaxNGParseError, u"No tree or file given"
 */
      __pyx_v_parser_ctxt = xmlRelaxNGNewDocParserCtxt(__pyx_v_doc->_c_doc);
    }
    __pyx_L9:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":64
 *                 parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
 *         else:
 *             raise RelaxNGParseError, u"No tree or file given"             # <<<<<<<<<<<<<<
 * 
 *         if parser_ctxt is NULL:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_333), 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[21]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":66
 *             raise RelaxNGParseError, u"No tree or file given"
 * 
 *         if parser_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *             if fake_c_doc is not NULL:
 */
  __pyx_t_6 = (__pyx_v_parser_ctxt == NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":67
 * 
 *         if parser_ctxt is NULL:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             if fake_c_doc is not NULL:
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":68
 *         if parser_ctxt is NULL:
 *             self._error_log.disconnect()
 *             if fake_c_doc is not NULL:             # <<<<<<<<<<<<<<
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(
 */
    __pyx_t_6 = (__pyx_v_fake_c_doc != NULL);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":69
 *             self._error_log.disconnect()
 *             if fake_c_doc is not NULL:
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)             # <<<<<<<<<<<<<<
 *             raise RelaxNGParseError(
 *                 self._error_log._buildExceptionMessage(
 */
      __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
      goto __pyx_L11;
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":70
 *             if fake_c_doc is not NULL:
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(             # <<<<<<<<<<<<<<
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not parsable as Relax NG"),
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGParseError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":71
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(
 *                 self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                     u"Document is not parsable as Relax NG"),
 *                 self._error_log)
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log), ((PyObject *)__pyx_kp_u_334)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":73
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not parsable as Relax NG"),
 *                 self._error_log)             # <<<<<<<<<<<<<<
 *         self._c_schema = relaxng.xmlRelaxNGParse(parser_ctxt)
 *         self._error_log.disconnect()
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[21]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":74
 *                     u"Document is not parsable as Relax NG"),
 *                 self._error_log)
 *         self._c_schema = relaxng.xmlRelaxNGParse(parser_ctxt)             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->_c_schema = xmlRelaxNGParse(__pyx_v_parser_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":75
 *                 self._error_log)
 *         self._c_schema = relaxng.xmlRelaxNGParse(parser_ctxt)
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         if _LIBXML_VERSION_INT >= 20624:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":77
 *         self._error_log.disconnect()
 * 
 *         if _LIBXML_VERSION_INT >= 20624:             # <<<<<<<<<<<<<<
 *             relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *         if self._c_schema is NULL:
 */
  __pyx_t_6 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20624);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":78
 * 
 *         if _LIBXML_VERSION_INT >= 20624:
 *             relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)             # <<<<<<<<<<<<<<
 *         if self._c_schema is NULL:
 *             if fake_c_doc is not NULL:
 */
    xmlRelaxNGFreeParserCtxt(__pyx_v_parser_ctxt);
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":79
 *         if _LIBXML_VERSION_INT >= 20624:
 *             relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *         if self._c_schema is NULL:             # <<<<<<<<<<<<<<
 *             if fake_c_doc is not NULL:
 *                 if _LIBXML_VERSION_INT < 20624:
 */
  __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->_c_schema == NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":80
 *             relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *         if self._c_schema is NULL:
 *             if fake_c_doc is not NULL:             # <<<<<<<<<<<<<<
 *                 if _LIBXML_VERSION_INT < 20624:
 *                     relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 */
    __pyx_t_6 = (__pyx_v_fake_c_doc != NULL);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":81
 *         if self._c_schema is NULL:
 *             if fake_c_doc is not NULL:
 *                 if _LIBXML_VERSION_INT < 20624:             # <<<<<<<<<<<<<<
 *                     relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 */
      __pyx_t_6 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT < 20624);
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":82
 *             if fake_c_doc is not NULL:
 *                 if _LIBXML_VERSION_INT < 20624:
 *                     relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)             # <<<<<<<<<<<<<<
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(
 */
        xmlRelaxNGFreeParserCtxt(__pyx_v_parser_ctxt);
        goto __pyx_L15;
      }
      __pyx_L15:;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":83
 *                 if _LIBXML_VERSION_INT < 20624:
 *                     relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)             # <<<<<<<<<<<<<<
 *             raise RelaxNGParseError(
 *                 self._error_log._buildExceptionMessage(
 */
      __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":84
 *                     relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(             # <<<<<<<<<<<<<<
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not valid Relax NG"),
 */
    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGParseError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":85
 *                 _destroyFakeDoc(doc._c_doc, fake_c_doc)
 *             raise RelaxNGParseError(
 *                 self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                     u"Document is not valid Relax NG"),
 *                 self._error_log)
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log), ((PyObject *)__pyx_kp_u_335)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":87
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not valid Relax NG"),
 *                 self._error_log)             # <<<<<<<<<<<<<<
 *         if fake_c_doc is not NULL:
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[21]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L13;
  }
  __pyx_L13:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":88
 *                     u"Document is not valid Relax NG"),
 *                 self._error_log)
 *         if fake_c_doc is not NULL:             # <<<<<<<<<<<<<<
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
 * 
 */
  __pyx_t_6 = (__pyx_v_fake_c_doc != NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":89
 *                 self._error_log)
 *         if fake_c_doc is not NULL:
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
    goto __pyx_L16;
  }
  __pyx_L16:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.RelaxNG.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":91
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         relaxng.xmlRelaxNGFree(self._c_schema)
 * 
 */

static void __pyx_pf_4lxml_5etree_7RelaxNG___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_7RelaxNG___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":92
 * 
 *     def __dealloc__(self):
 *         relaxng.xmlRelaxNGFree(self._c_schema)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, etree):
 */
  xmlRelaxNGFree(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->_c_schema);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":94
 *         relaxng.xmlRelaxNGFree(self._c_schema)
 * 
 *     def __call__(self, etree):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_7RelaxNG___call__[] = "__call__(self, etree)\n\n        Validate doc using Relax NG.\n\n        Returns true if document is valid, false if not.";
static PyObject *__pyx_pf_4lxml_5etree_7RelaxNG___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlDoc *__pyx_v_c_doc;
  xmlRelaxNGValidCtxt *__pyx_v_valid_ctxt;
  int __pyx_v_ret;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,0};
  __Pyx_RefNannySetupContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[21]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.RelaxNG.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":106
 *         cdef int ret
 * 
 *         doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(etree)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":107
 * 
 *         doc = _documentOrRaise(etree)
 *         root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.connect()
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":109
 *         root_node = _rootNodeOrRaise(etree)
 * 
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":110
 * 
 *         self._error_log.connect()
 *         valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)             # <<<<<<<<<<<<<<
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 */
  __pyx_v_valid_ctxt = xmlRelaxNGNewValidCtxt(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->_c_schema);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":111
 *         self._error_log.connect()
 *         valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *             python.PyErr_NoMemory()
 */
  __pyx_t_2 = (__pyx_v_valid_ctxt == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":112
 *         valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 * 
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":113
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 */
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":115
 *             python.PyErr_NoMemory()
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":116
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":117
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:
 *             ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)             # <<<<<<<<<<<<<<
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 */
      __pyx_v_ret = xmlRelaxNGValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":116
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":118
 *         with nogil:
 *             ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 * 
 *         relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)
 */
  __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":120
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 *         relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.disconnect()
 */
  xmlRelaxNGFreeValidCtxt(__pyx_v_valid_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":122
 *         relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)
 * 
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         if ret == -1:
 *             raise RelaxNGValidateError(
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":123
 * 
 *         self._error_log.disconnect()
 *         if ret == -1:             # <<<<<<<<<<<<<<
 *             raise RelaxNGValidateError(
 *                 u"Internal error in Relax NG validation",
 */
  __pyx_t_2 = (__pyx_v_ret == -1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":124
 *         self._error_log.disconnect()
 *         if ret == -1:
 *             raise RelaxNGValidateError(             # <<<<<<<<<<<<<<
 *                 u"Internal error in Relax NG validation",
 *                 self._error_log)
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s_336); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":126
 *             raise RelaxNGValidateError(
 *                 u"Internal error in Relax NG validation",
 *                 self._error_log)             # <<<<<<<<<<<<<<
 *         if ret == 0:
 *             return True
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_337));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_337));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_337));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[21]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":127
 *                 u"Internal error in Relax NG validation",
 *                 self._error_log)
 *         if ret == 0:             # <<<<<<<<<<<<<<
 *             return True
 *         else:
 */
  __pyx_t_2 = (__pyx_v_ret == 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":128
 *                 self._error_log)
 *         if ret == 0:
 *             return True             # <<<<<<<<<<<<<<
 *         else:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L11;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":130
 *             return True
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  __pyx_L11:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.RelaxNG.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":40
 *     cdef bint _add_attribute_defaults
 * 
 *     def __init__(self, etree=None, *, file=None, attribute_defaults=False):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         cdef _Element root_node
 */

static int __pyx_pf_4lxml_5etree_9XMLSchema___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_9XMLSchema___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  PyObject *__pyx_v_file = 0;
  PyObject *__pyx_v_attribute_defaults = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlDoc *__pyx_v_fake_c_doc;
  xmlNode *__pyx_v_c_node;
  char *__pyx_v_c_href;
  xmlSchemaParserCtxt *__pyx_v_parser_ctxt;
  PyObject *__pyx_v_filename;
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  xmlDoc *__pyx_t_7;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,&__pyx_n_s__file,&__pyx_n_s__attribute_defaults,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = __pyx_k_338;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__attribute_defaults);
      if (value) { values[2] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
    __pyx_v_file = values[1];
    __pyx_v_attribute_defaults = values[2];
  } else {
    __pyx_v_etree = ((PyObject *)Py_None);
    __pyx_v_file = ((PyObject *)Py_None);
    __pyx_v_attribute_defaults = __pyx_k_338;
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XMLSchema.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __Pyx_INCREF(__pyx_v_file);
  __Pyx_INCREF(__pyx_v_attribute_defaults);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_filename = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":48
 *         cdef xmlschema.xmlSchemaParserCtxt* parser_ctxt
 * 
 *         self._has_default_attributes = True # play safe             # <<<<<<<<<<<<<<
 *         self._add_attribute_defaults = attribute_defaults
 *         self._c_schema = NULL
 */
  ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_has_default_attributes = 1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":49
 * 
 *         self._has_default_attributes = True # play safe
 *         self._add_attribute_defaults = attribute_defaults             # <<<<<<<<<<<<<<
 *         self._c_schema = NULL
 *         _Validator.__init__(self)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely((__pyx_t_1 == (int)-1))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_add_attribute_defaults = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":50
 *         self._has_default_attributes = True # play safe
 *         self._add_attribute_defaults = attribute_defaults
 *         self._c_schema = NULL             # <<<<<<<<<<<<<<
 *         _Validator.__init__(self)
 *         fake_c_doc = NULL
 */
  ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":51
 *         self._add_attribute_defaults = attribute_defaults
 *         self._c_schema = NULL
 *         _Validator.__init__(self)             # <<<<<<<<<<<<<<
 *         fake_c_doc = NULL
 *         if etree is not None:
 */
  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Validator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_4 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":52
 *         self._c_schema = NULL
 *         _Validator.__init__(self)
 *         fake_c_doc = NULL             # <<<<<<<<<<<<<<
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)
 */
  __pyx_v_fake_c_doc = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":53
 *         _Validator.__init__(self)
 *         fake_c_doc = NULL
 *         if etree is not None:             # <<<<<<<<<<<<<<
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)
 */
  __pyx_t_1 = (__pyx_v_etree != Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":54
 *         fake_c_doc = NULL
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *             root_node = _rootNodeOrRaise(etree)
 * 
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":55
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 * 
 *             # work around for libxml2 bug if document is not XML schema at all
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
    __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":58
 * 
 *             # work around for libxml2 bug if document is not XML schema at all
 *             if _LIBXML_VERSION_INT < 20624:             # <<<<<<<<<<<<<<
 *                 c_node = root_node._c_node
 *                 c_href = _getNs(c_node)
 */
    __pyx_t_1 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT < 20624);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":59
 *             # work around for libxml2 bug if document is not XML schema at all
 *             if _LIBXML_VERSION_INT < 20624:
 *                 c_node = root_node._c_node             # <<<<<<<<<<<<<<
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \
 */
      __pyx_v_c_node = __pyx_v_root_node->_c_node;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":60
 *             if _LIBXML_VERSION_INT < 20624:
 *                 c_node = root_node._c_node
 *                 c_href = _getNs(c_node)             # <<<<<<<<<<<<<<
 *                 if c_href is NULL or \
 *                        cstd.strcmp(c_href, 'http://www.w3.org/2001/XMLSchema') != 0:
 */
      __pyx_v_c_href = _getNs(__pyx_v_c_node);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":61
 *                 c_node = root_node._c_node
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \             # <<<<<<<<<<<<<<
 *                        cstd.strcmp(c_href, 'http://www.w3.org/2001/XMLSchema') != 0:
 *                     raise XMLSchemaParseError, u"Document is not XML Schema"
 */
      __pyx_t_1 = (__pyx_v_c_href == NULL);
      if (!__pyx_t_1) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":62
 *                 c_href = _getNs(c_node)
 *                 if c_href is NULL or \
 *                        cstd.strcmp(c_href, 'http://www.w3.org/2001/XMLSchema') != 0:             # <<<<<<<<<<<<<<
 *                     raise XMLSchemaParseError, u"Document is not XML Schema"
 * 
 */
        __pyx_t_5 = (strcmp(__pyx_v_c_href, __pyx_k_341) != 0);
        __pyx_t_6 = __pyx_t_5;
      } else {
        __pyx_t_6 = __pyx_t_1;
      }
      if (__pyx_t_6) {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":63
 *                 if c_href is NULL or \
 *                        cstd.strcmp(c_href, 'http://www.w3.org/2001/XMLSchema') != 0:
 *                     raise XMLSchemaParseError, u"Document is not XML Schema"             # <<<<<<<<<<<<<<
 * 
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 */
        __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSchemaParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, ((PyObject *)__pyx_kp_u_342), 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        {__pyx_filename = __pyx_f[22]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L8;
      }
      __pyx_L8:;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":65
 *                     raise XMLSchemaParseError, u"Document is not XML Schema"
 * 
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(fake_c_doc)
 */
    __pyx_t_7 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fake_c_doc = __pyx_t_7;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":66
 * 
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":67
 *             fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *             self._error_log.connect()
 *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(fake_c_doc)             # <<<<<<<<<<<<<<
 *         elif file is not None:
 *             if _isString(file):
 */
    __pyx_v_parser_ctxt = xmlSchemaNewDocParserCtxt(__pyx_v_fake_c_doc);
    goto __pyx_L6;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":68
 *             self._error_log.connect()
 *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:             # <<<<<<<<<<<<<<
 *             if _isString(file):
 *                 doc = None
 */
  __pyx_t_6 = (__pyx_v_file != Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":69
 *             parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(fake_c_doc)
 *         elif file is not None:
 *             if _isString(file):             # <<<<<<<<<<<<<<
 *                 doc = None
 *                 filename = _encodeFilename(file)
 */
    __pyx_t_6 = _isString(__pyx_v_file);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":70
 *         elif file is not None:
 *             if _isString(file):
 *                 doc = None             # <<<<<<<<<<<<<<
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)Py_None);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":71
 *             if _isString(file):
 *                 doc = None
 *                 filename = _encodeFilename(file)             # <<<<<<<<<<<<<<
 *                 self._error_log.connect()
 *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
 */
      __pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_file); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_v_filename);
      __pyx_v_filename = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":72
 *                 doc = None
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()             # <<<<<<<<<<<<<<
 *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
 *             else:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":73
 *                 filename = _encodeFilename(file)
 *                 self._error_log.connect()
 *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))             # <<<<<<<<<<<<<<
 *             else:
 *                 doc = _parseDocument(file, None, None)
 */
      __pyx_v_parser_ctxt = xmlSchemaNewParserCtxt(PyString_AS_STRING(__pyx_v_filename));
      goto __pyx_L9;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":75
 *                 parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
 *             else:
 *                 doc = _parseDocument(file, None, None)             # <<<<<<<<<<<<<<
 *                 self._error_log.connect()
 *                 parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(doc._c_doc)
 */
      __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(((PyObject *)__pyx_v_doc));
      __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":76
 *             else:
 *                 doc = _parseDocument(file, None, None)
 *                 self._error_log.connect()             # <<<<<<<<<<<<<<
 *                 parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(doc._c_doc)
 *         else:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":77
 *                 doc = _parseDocument(file, None, None)
 *                 self._error_log.connect()
 *                 parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(doc._c_doc)             # <<<<<<<<<<<<<<
 *         else:
 *             raise XMLSchemaParseError, u"No tree or file given"
 */
      __pyx_v_parser_ctxt = xmlSchemaNewDocParserCtxt(__pyx_v_doc->_c_doc);
    }
    __pyx_L9:;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":79
 *                 parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(doc._c_doc)
 *         else:
 *             raise XMLSchemaParseError, u"No tree or file given"             # <<<<<<<<<<<<<<
 * 
 *         if parser_ctxt is not NULL:
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSchemaParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, ((PyObject *)__pyx_kp_u_333), 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":81
 *             raise XMLSchemaParseError, u"No tree or file given"
 * 
 *         if parser_ctxt is not NULL:             # <<<<<<<<<<<<<<
 *             if doc is None:
 *                 with nogil:
 */
  __pyx_t_6 = (__pyx_v_parser_ctxt != NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":82
 * 
 *         if parser_ctxt is not NULL:
 *             if doc is None:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
 */
    __pyx_t_6 = (((PyObject *)__pyx_v_doc) == Py_None);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":83
 *         if parser_ctxt is not NULL:
 *             if doc is None:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
 *             else:
 */
      { PyThreadState *_save;
        Py_UNBLOCK_THREADS
        /*try:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":84
 *             if doc is None:
 *                 with nogil:
 *                     self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)             # <<<<<<<<<<<<<<
 *             else:
 *                 # calling xmlSchemaParse on a schema with imports or
 */
          ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema = xmlSchemaParse(__pyx_v_parser_ctxt);
        }
        /*finally:*/ {

          /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":83
 *         if parser_ctxt is not NULL:
 *             if doc is None:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
 *             else:
 */
          Py_BLOCK_THREADS
        }
      }
      goto __pyx_L11;
    }
    /*else*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":90
 *                 # context for parsing, so push an implied context to route
 *                 # resolve requests to the document's parser
 *                 __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(doc._parser)             # <<<<<<<<<<<<<<
 *                 self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
 *                 __GLOBAL_PARSER_CONTEXT.popImpliedContext()
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->pushImpliedContextFromParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, __pyx_v_doc->_parser);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":91
 *                 # resolve requests to the document's parser
 *                 __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(doc._parser)
 *                 self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)             # <<<<<<<<<<<<<<
 *                 __GLOBAL_PARSER_CONTEXT.popImpliedContext()
 * 
 */
      ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema = xmlSchemaParse(__pyx_v_parser_ctxt);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":92
 *                 __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(doc._parser)
 *                 self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
 *                 __GLOBAL_PARSER_CONTEXT.popImpliedContext()             # <<<<<<<<<<<<<<
 * 
 *             if _LIBXML_VERSION_INT >= 20624:
 */
      ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->popImpliedContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);
    }
    __pyx_L11:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":94
 *                 __GLOBAL_PARSER_CONTEXT.popImpliedContext()
 * 
 *             if _LIBXML_VERSION_INT >= 20624:             # <<<<<<<<<<<<<<
 *                 xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)
 * 
 */
    __pyx_t_6 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20624);
    if (__pyx_t_6) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":95
 * 
 *             if _LIBXML_VERSION_INT >= 20624:
 *                 xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.disconnect()
 */
      xmlSchemaFreeParserCtxt(__pyx_v_parser_ctxt);
      goto __pyx_L15;
    }
    __pyx_L15:;
    goto __pyx_L10;
  }
  __pyx_L10:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":97
 *                 xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)
 * 
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         if fake_c_doc is not NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":99
 *         self._error_log.disconnect()
 * 
 *         if fake_c_doc is not NULL:             # <<<<<<<<<<<<<<
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
 * 
 */
  __pyx_t_6 = (__pyx_v_fake_c_doc != NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":100
 * 
 *         if fake_c_doc is not NULL:
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)             # <<<<<<<<<<<<<<
 * 
 *         if self._c_schema is NULL:
 */
    __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_fake_c_doc);
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":102
 *             _destroyFakeDoc(doc._c_doc, fake_c_doc)
 * 
 *         if self._c_schema is NULL:             # <<<<<<<<<<<<<<
 *             raise XMLSchemaParseError(
 *                 self._error_log._buildExceptionMessage(
 */
  __pyx_t_6 = (((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema == NULL);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":103
 * 
 *         if self._c_schema is NULL:
 *             raise XMLSchemaParseError(             # <<<<<<<<<<<<<<
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not valid XML Schema"),
 */
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSchemaParseError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":104
 *         if self._c_schema is NULL:
 *             raise XMLSchemaParseError(
 *                 self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
 *                     u"Document is not valid XML Schema"),
 *                 self._error_log)
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base._buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log), ((PyObject *)__pyx_kp_u_343)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":106
 *                 self._error_log._buildExceptionMessage(
 *                     u"Document is not valid XML Schema"),
 *                 self._error_log)             # <<<<<<<<<<<<<<
 * 
 *         if doc is not None:
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L17;
  }
  __pyx_L17:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":108
 *                 self._error_log)
 * 
 *         if doc is not None:             # <<<<<<<<<<<<<<
 *             self._has_default_attributes = _check_for_default_attributes(doc)
 *         self._add_attribute_defaults = attribute_defaults and \
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_doc) != Py_None);
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":109
 * 
 *         if doc is not None:
 *             self._has_default_attributes = _check_for_default_attributes(doc)             # <<<<<<<<<<<<<<
 *         self._add_attribute_defaults = attribute_defaults and \
 *                                        self._has_default_attributes
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_doc));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_doc));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_doc));
    __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_has_default_attributes = __pyx_t_6;
    goto __pyx_L18;
  }
  __pyx_L18:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":110
 *         if doc is not None:
 *             self._has_default_attributes = _check_for_default_attributes(doc)
 *         self._add_attribute_defaults = attribute_defaults and \             # <<<<<<<<<<<<<<
 *                                        self._has_default_attributes
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_attribute_defaults); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_6) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":111
 *             self._has_default_attributes = _check_for_default_attributes(doc)
 *         self._add_attribute_defaults = attribute_defaults and \
 *                                        self._has_default_attributes             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __pyx_t_2 = __Pyx_PyBool_FromLong(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_has_default_attributes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_v_attribute_defaults);
    __pyx_t_3 = __pyx_v_attribute_defaults;
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1))) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":110
 *         if doc is not None:
 *             self._has_default_attributes = _check_for_default_attributes(doc)
 *         self._add_attribute_defaults = attribute_defaults and \             # <<<<<<<<<<<<<<
 *                                        self._has_default_attributes
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_add_attribute_defaults = __pyx_t_6;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.XMLSchema.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_DECREF(__pyx_v_attribute_defaults);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":113
 *                                        self._has_default_attributes
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         xmlschema.xmlSchemaFree(self._c_schema)
 * 
 */

static void __pyx_pf_4lxml_5etree_9XMLSchema___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_9XMLSchema___dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannySetupContext("__dealloc__");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":114
 * 
 *     def __dealloc__(self):
 *         xmlschema.xmlSchemaFree(self._c_schema)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, etree):
 */
  xmlSchemaFree(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":116
 *         xmlschema.xmlSchemaFree(self._c_schema)
 * 
 *     def __call__(self, etree):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_9XMLSchema___call__[] = "__call__(self, etree)\n\n        Validate doc using XML Schema.\n\n        Returns true if document is valid, false if not.\n        ";
static PyObject *__pyx_pf_4lxml_5etree_9XMLSchema___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  xmlSchemaValidCtxt *__pyx_v_valid_ctxt;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlDoc *__pyx_v_c_doc;
  int __pyx_v_ret;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  xmlDoc *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,0};
  __Pyx_RefNannySetupContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[22]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.XMLSchema.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":129
 *         cdef int ret
 * 
 *         doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(etree)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":130
 * 
 *         doc = _documentOrRaise(etree)
 *         root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.connect()
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":132
 *         root_node = _rootNodeOrRaise(etree)
 * 
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":133
 * 
 *         self._error_log.connect()
 *         valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)             # <<<<<<<<<<<<<<
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 */
  __pyx_v_valid_ctxt = xmlSchemaNewValidCtxt(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_c_schema);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":134
 *         self._error_log.connect()
 *         valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *             return python.PyErr_NoMemory()
 */
  __pyx_t_2 = (__pyx_v_valid_ctxt == NULL);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":135
 *         valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             return python.PyErr_NoMemory()
 * 
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":136
 *         if valid_ctxt is NULL:
 *             self._error_log.disconnect()
 *             return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *         if self._add_attribute_defaults:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":138
 *             return python.PyErr_NoMemory()
 * 
 *         if self._add_attribute_defaults:             # <<<<<<<<<<<<<<
 *             xmlschema.xmlSchemaSetValidOptions(
 *                 valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
 */
  __pyx_t_2 = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->_add_attribute_defaults;
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":140
 *         if self._add_attribute_defaults:
 *             xmlschema.xmlSchemaSetValidOptions(
 *                 valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)             # <<<<<<<<<<<<<<
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 */
    xmlSchemaSetValidOptions(__pyx_v_valid_ctxt, XML_SCHEMA_VAL_VC_I_CREATE);
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":142
 *                 valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
 */
  __pyx_t_3 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":143
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":144
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:
 *             ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)             # <<<<<<<<<<<<<<
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 */
      __pyx_v_ret = xmlSchemaValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":143
 * 
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":145
 *         with nogil:
 *             ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 * 
 *         xmlschema.xmlSchemaFreeValidCtxt(valid_ctxt)
 */
  __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":147
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 * 
 *         xmlschema.xmlSchemaFreeValidCtxt(valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.disconnect()
 */
  xmlSchemaFreeValidCtxt(__pyx_v_valid_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":149
 *         xmlschema.xmlSchemaFreeValidCtxt(valid_ctxt)
 * 
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *         if ret == -1:
 *             raise XMLSchemaValidateError(
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":150
 * 
 *         self._error_log.disconnect()
 *         if ret == -1:             # <<<<<<<<<<<<<<
 *             raise XMLSchemaValidateError(
 *                 u"Internal error in XML Schema validation.",
 */
  __pyx_t_2 = (__pyx_v_ret == -1);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":151
 *         self._error_log.disconnect()
 *         if ret == -1:
 *             raise XMLSchemaValidateError(             # <<<<<<<<<<<<<<
 *                 u"Internal error in XML Schema validation.",
 *                 self._error_log)
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s_344); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":153
 *             raise XMLSchemaValidateError(
 *                 u"Internal error in XML Schema validation.",
 *                 self._error_log)             # <<<<<<<<<<<<<<
 *         if ret == 0:
 *             return True
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_345));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_345));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_345));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[22]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L11;
  }
  __pyx_L11:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":154
 *                 u"Internal error in XML Schema validation.",
 *                 self._error_log)
 *         if ret == 0:             # <<<<<<<<<<<<<<
 *             return True
 *         else:
 */
  __pyx_t_2 = (__pyx_v_ret == 0);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":155
 *                 self._error_log)
 *         if ret == 0:
 *             return True             # <<<<<<<<<<<<<<
 *         else:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L12;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":157
 *             return True
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserSchemaValidationContext _newSaxValidator(
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  __pyx_L12:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("lxml.etree.XMLSchema.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":159
 *             return False
 * 
 *     cdef _ParserSchemaValidationContext _newSaxValidator(             # <<<<<<<<<<<<<<
 *             self, bint add_default_attributes):
 *         cdef _ParserSchemaValidationContext context
 */

static  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lxml_5etree_9XMLSchema__newSaxValidator(struct __pyx_obj_4lxml_5etree_XMLSchema *__pyx_v_self, int __pyx_v_add_default_attributes) {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_context;
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("_newSaxValidator");
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":162
 *             self, bint add_default_attributes):
 *         cdef _ParserSchemaValidationContext context
 *         context = NEW_SCHEMA_CONTEXT(_ParserSchemaValidationContext)             # <<<<<<<<<<<<<<
 *         context._schema = self
 *         context._valid_ctxt = NULL
 */
  __pyx_t_1 = ((PyObject *)PY_NEW(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ParserSchemaValidationContext)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_context));
  __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":163
 *         cdef _ParserSchemaValidationContext context
 *         context = NEW_SCHEMA_CONTEXT(_ParserSchemaValidationContext)
 *         context._schema = self             # <<<<<<<<<<<<<<
 *         context._valid_ctxt = NULL
 *         context._sax_plug = NULL
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  __Pyx_GOTREF(__pyx_v_context->_schema);
  __Pyx_DECREF(((PyObject *)__pyx_v_context->_schema));
  __pyx_v_context->_schema = __pyx_v_self;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":164
 *         context = NEW_SCHEMA_CONTEXT(_ParserSchemaValidationContext)
 *         context._schema = self
 *         context._valid_ctxt = NULL             # <<<<<<<<<<<<<<
 *         context._sax_plug = NULL
 *         context._add_default_attributes = (self._has_default_attributes and (
 */
  __pyx_v_context->_valid_ctxt = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":165
 *         context._schema = self
 *         context._valid_ctxt = NULL
 *         context._sax_plug = NULL             # <<<<<<<<<<<<<<
 *         context._add_default_attributes = (self._has_default_attributes and (
 *             add_default_attributes or self._add_attribute_defaults))
 */
  __pyx_v_context->_sax_plug = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":166
 *         context._valid_ctxt = NULL
 *         context._sax_plug = NULL
 *         context._add_default_attributes = (self._has_default_attributes and (             # <<<<<<<<<<<<<<
 *             add_default_attributes or self._add_attribute_defaults))
 *         return context
 */
  if (__pyx_v_self->_has_default_attributes) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":167
 *         context._sax_plug = NULL
 *         context._add_default_attributes = (self._has_default_attributes and (
 *             add_default_attributes or self._add_attribute_defaults))             # <<<<<<<<<<<<<<
 *         return context
 * 
 */
    if (!__pyx_v_add_default_attributes) {
      __pyx_t_2 = __pyx_v_self->_add_attribute_defaults;
    } else {
      __pyx_t_2 = __pyx_v_add_default_attributes;
    }
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_v_self->_has_default_attributes;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":166
 *         context._valid_ctxt = NULL
 *         context._sax_plug = NULL
 *         context._add_default_attributes = (self._has_default_attributes and (             # <<<<<<<<<<<<<<
 *             add_default_attributes or self._add_attribute_defaults))
 *         return context
 */
  __pyx_v_context->_add_default_attributes = __pyx_t_3;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":168
 *         context._add_default_attributes = (self._has_default_attributes and (
 *             add_default_attributes or self._add_attribute_defaults))
 *         return context             # <<<<<<<<<<<<<<
 * 
 * cdef class _ParserSchemaValidationContext:
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __pyx_r = __pyx_v_context;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.XMLSchema._newSaxValidator");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":176
 *     cdef bint _add_default_attributes
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.disconnect()
 *         if self._valid_ctxt:
 */

static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":177
 * 
 *     def __dealloc__(self):
 *         self.disconnect()             # <<<<<<<<<<<<<<
 *         if self._valid_ctxt:
 *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext *)((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self)->__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":178
 *     def __dealloc__(self):
 *         self.disconnect()
 *         if self._valid_ctxt:             # <<<<<<<<<<<<<<
 *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)
 * 
 */
  __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self)->_valid_ctxt != 0);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":179
 *         self.disconnect()
 *         if self._valid_ctxt:
 *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 *     cdef _ParserSchemaValidationContext copy(self):
 */
    xmlSchemaFreeValidCtxt(((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_v_self)->_valid_ctxt);
    goto __pyx_L5;
  }
  __pyx_L5:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":181
 *             xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)
 * 
 *     cdef _ParserSchemaValidationContext copy(self):             # <<<<<<<<<<<<<<
 *         return self._schema._newSaxValidator(
 *             self._add_default_attributes)
 */

static  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("copy");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":182
 * 
 *     cdef _ParserSchemaValidationContext copy(self):
 *         return self._schema._newSaxValidator(             # <<<<<<<<<<<<<<
 *             self._add_default_attributes)
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":183
 *     cdef _ParserSchemaValidationContext copy(self):
 *         return self._schema._newSaxValidator(
 *             self._add_default_attributes)             # <<<<<<<<<<<<<<
 * 
 *     cdef void inject_default_attributes(self, xmlDoc* c_doc):
 */
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree_XMLSchema *)__pyx_v_self->_schema->__pyx_vtab)->_newSaxValidator(__pyx_v_self->_schema, __pyx_v_self->_add_default_attributes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree._ParserSchemaValidationContext.copy");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":185
 *             self._add_default_attributes)
 * 
 *     cdef void inject_default_attributes(self, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
 *         # we currently need to insert default attributes manually
 *         # after parsing, as libxml2 does not support this at parse
 */

static  void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self, xmlDoc *__pyx_v_c_doc) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("inject_default_attributes");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":189
 *         # after parsing, as libxml2 does not support this at parse
 *         # time
 *         if self._add_default_attributes:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
 */
  __pyx_t_1 = __pyx_v_self->_add_default_attributes;
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":190
 *         # time
 *         if self._add_default_attributes:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
 * 
 */
    { PyThreadState *_save;
      Py_UNBLOCK_THREADS
      /*try:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":191
 *         if self._add_default_attributes:
 *             with nogil:
 *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)             # <<<<<<<<<<<<<<
 * 
 *     cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
 */
        xmlSchemaValidateDoc(__pyx_v_self->_valid_ctxt, __pyx_v_c_doc);
      }
      /*finally:*/ {

        /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":190
 *         # time
 *         if self._add_default_attributes:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
 * 
 */
        Py_BLOCK_THREADS
      }
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":193
 *                 xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)
 * 
 *     cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:             # <<<<<<<<<<<<<<
 *         if self._valid_ctxt is NULL:
 *             self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(
 */

static  int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self, xmlParserCtxt *__pyx_v_c_ctxt) {
  int __pyx_r;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  __Pyx_RefNannySetupContext("connect");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":194
 * 
 *     cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
 *         if self._valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(
 *                 self._schema._c_schema)
 */
  __pyx_t_1 = (__pyx_v_self->_valid_ctxt == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":195
 *     cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt) except -1:
 *         if self._valid_ctxt is NULL:
 *             self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(             # <<<<<<<<<<<<<<
 *                 self._schema._c_schema)
 *             if self._valid_ctxt is NULL:
 */
    __pyx_v_self->_valid_ctxt = xmlSchemaNewValidCtxt(__pyx_v_self->_schema->_c_schema);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":197
 *             self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(
 *                 self._schema._c_schema)
 *             if self._valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *                 return python.PyErr_NoMemory()
 *             if self._add_default_attributes:
 */
    __pyx_t_1 = (__pyx_v_self->_valid_ctxt == NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":198
 *                 self._schema._c_schema)
 *             if self._valid_ctxt is NULL:
 *                 return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             if self._add_default_attributes:
 *                 xmlschema.xmlSchemaSetValidOptions(
 */
      __pyx_t_2 = PyErr_NoMemory(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    __pyx_L4:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":199
 *             if self._valid_ctxt is NULL:
 *                 return python.PyErr_NoMemory()
 *             if self._add_default_attributes:             # <<<<<<<<<<<<<<
 *                 xmlschema.xmlSchemaSetValidOptions(
 *                     self._valid_ctxt,
 */
    __pyx_t_1 = __pyx_v_self->_add_default_attributes;
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":202
 *                 xmlschema.xmlSchemaSetValidOptions(
 *                     self._valid_ctxt,
 *                     xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)             # <<<<<<<<<<<<<<
 *         self._sax_plug = xmlschema.xmlSchemaSAXPlug(
 *             self._valid_ctxt, &c_ctxt.sax, &c_ctxt.userData)
 */
      xmlSchemaSetValidOptions(__pyx_v_self->_valid_ctxt, XML_SCHEMA_VAL_VC_I_CREATE);
      goto __pyx_L5;
    }
    __pyx_L5:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":203
 *                     self._valid_ctxt,
 *                     xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
 *         self._sax_plug = xmlschema.xmlSchemaSAXPlug(             # <<<<<<<<<<<<<<
 *             self._valid_ctxt, &c_ctxt.sax, &c_ctxt.userData)
 * 
 */
  __pyx_v_self->_sax_plug = xmlSchemaSAXPlug(__pyx_v_self->_valid_ctxt, (&__pyx_v_c_ctxt->sax), (&__pyx_v_c_ctxt->userData));

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree._ParserSchemaValidationContext.connect");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":206
 *             self._valid_ctxt, &c_ctxt.sax, &c_ctxt.userData)
 * 
 *     cdef void disconnect(self):             # <<<<<<<<<<<<<<
 *         if self._sax_plug is not NULL:
 *             xmlschema.xmlSchemaSAXUnplug(self._sax_plug)
 */

static  void __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("disconnect");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":207
 * 
 *     cdef void disconnect(self):
 *         if self._sax_plug is not NULL:             # <<<<<<<<<<<<<<
 *             xmlschema.xmlSchemaSAXUnplug(self._sax_plug)
 *             self._sax_plug = NULL
 */
  __pyx_t_1 = (__pyx_v_self->_sax_plug != NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":208
 *     cdef void disconnect(self):
 *         if self._sax_plug is not NULL:
 *             xmlschema.xmlSchemaSAXUnplug(self._sax_plug)             # <<<<<<<<<<<<<<
 *             self._sax_plug = NULL
 * 
 */
    xmlSchemaSAXUnplug(__pyx_v_self->_sax_plug);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":209
 *         if self._sax_plug is not NULL:
 *             xmlschema.xmlSchemaSAXUnplug(self._sax_plug)
 *             self._sax_plug = NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef bint isvalid(self):
 */
    __pyx_v_self->_sax_plug = NULL;
    goto __pyx_L3;
  }
  __pyx_L3:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":211
 *             self._sax_plug = NULL
 * 
 *     cdef bint isvalid(self):             # <<<<<<<<<<<<<<
 *         if self._valid_ctxt is NULL:
 *             return 1 # valid
 */

static  int __pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("isvalid");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":212
 * 
 *     cdef bint isvalid(self):
 *         if self._valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             return 1 # valid
 *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)
 */
  __pyx_t_1 = (__pyx_v_self->_valid_ctxt == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":213
 *     cdef bint isvalid(self):
 *         if self._valid_ctxt is NULL:
 *             return 1 # valid             # <<<<<<<<<<<<<<
 *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)
 * 
 */
    __pyx_r = 1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":214
 *         if self._valid_ctxt is NULL:
 *             return 1 # valid
 *         return xmlschema.xmlSchemaIsValid(self._valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "etree_defs.h":
 */
  __pyx_r = xmlSchemaIsValid(__pyx_v_self->_valid_ctxt);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":73
 *     cdef schematron.xmlSchematron* _c_schema
 *     cdef xmlDoc* _c_schema_doc
 *     def __init__(self, etree=None, *, file=None):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         cdef _Element root_node
 */

static int __pyx_pf_4lxml_5etree_10Schematron___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pf_4lxml_5etree_10Schematron___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  PyObject *__pyx_v_file = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlSchematronParserCtxt *__pyx_v_parser_ctxt;
  PyObject *__pyx_v_filename;
  int __pyx_r;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  xmlDoc *__pyx_t_5;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,&__pyx_n_s__file,0};
  __Pyx_RefNannySetupContext("__init__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      if (kw_args > 1) {
        PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
        if (unlikely(value)) { values[0] = value; kw_args--; }
      }
    }
    while (kw_args > 0) {
      PyObject* value;
      value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file);
      if (value) { values[1] = value; if (!(--kw_args)) break; }
      break;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__init__") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
    __pyx_v_file = values[1];
  } else {
    __pyx_v_etree = ((PyObject *)Py_None);
    __pyx_v_file = ((PyObject *)Py_None);
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Schematron.__init__");
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __Pyx_INCREF(__pyx_v_file);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_filename = Py_None; __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":79
 *         cdef char* c_href
 *         cdef schematron.xmlSchematronParserCtxt* parser_ctxt
 *         self._c_schema = NULL             # <<<<<<<<<<<<<<
 *         self._c_schema_doc = NULL
 *         _Validator.__init__(self)
 */
  ((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":80
 *         cdef schematron.xmlSchematronParserCtxt* parser_ctxt
 *         self._c_schema = NULL
 *         self._c_schema_doc = NULL             # <<<<<<<<<<<<<<
 *         _Validator.__init__(self)
 *         if not config.ENABLE_SCHEMATRON:
 */
  ((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":81
 *         self._c_schema = NULL
 *         self._c_schema_doc = NULL
 *         _Validator.__init__(self)             # <<<<<<<<<<<<<<
 *         if not config.ENABLE_SCHEMATRON:
 *             raise SchematronError, \
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__Validator)), __pyx_n_s____init__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self);
  __Pyx_GIVEREF(__pyx_v_self);
  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":82
 *         self._c_schema_doc = NULL
 *         _Validator.__init__(self)
 *         if not config.ENABLE_SCHEMATRON:             # <<<<<<<<<<<<<<
 *             raise SchematronError, \
 *                 u"lxml.etree was compiled without Schematron support."
 */
  __pyx_t_4 = (!ENABLE_SCHEMATRON);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":83
 *         _Validator.__init__(self)
 *         if not config.ENABLE_SCHEMATRON:
 *             raise SchematronError, \             # <<<<<<<<<<<<<<
 *                 u"lxml.etree was compiled without Schematron support."
 *         if etree is not None:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__SchematronError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_346), 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":85
 *             raise SchematronError, \
 *                 u"lxml.etree was compiled without Schematron support."
 *         if etree is not None:             # <<<<<<<<<<<<<<
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)
 */
  __pyx_t_4 = (__pyx_v_etree != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":86
 *                 u"lxml.etree was compiled without Schematron support."
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *             root_node = _rootNodeOrRaise(etree)
 *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_v_doc));
    __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":87
 *         if etree is not None:
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
 *             self._error_log.connect()
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
    __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":88
 *             doc = _documentOrRaise(etree)
 *             root_node = _rootNodeOrRaise(etree)
 *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(
 */
    __pyx_t_5 = __pyx_f_4lxml_5etree__copyDocRoot(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    ((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc = __pyx_t_5;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":89
 *             root_node = _rootNodeOrRaise(etree)
 *             self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(
 *                 self._c_schema_doc)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":91
 *             self._error_log.connect()
 *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(
 *                 self._c_schema_doc)             # <<<<<<<<<<<<<<
 *         elif file is not None:
 *             filename = _getFilenameForFile(file)
 */
    __pyx_v_parser_ctxt = xmlSchematronNewDocParserCtxt(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc);
    goto __pyx_L7;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":92
 *             parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(
 *                 self._c_schema_doc)
 *         elif file is not None:             # <<<<<<<<<<<<<<
 *             filename = _getFilenameForFile(file)
 *             if filename is None:
 */
  __pyx_t_4 = (__pyx_v_file != Py_None);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":93
 *                 self._c_schema_doc)
 *         elif file is not None:
 *             filename = _getFilenameForFile(file)             # <<<<<<<<<<<<<<
 *             if filename is None:
 *                 # XXX assume a string object
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_filename);
    __pyx_v_filename = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":94
 *         elif file is not None:
 *             filename = _getFilenameForFile(file)
 *             if filename is None:             # <<<<<<<<<<<<<<
 *                 # XXX assume a string object
 *                 filename = file
 */
    __pyx_t_4 = (__pyx_v_filename == Py_None);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":96
 *             if filename is None:
 *                 # XXX assume a string object
 *                 filename = file             # <<<<<<<<<<<<<<
 *             filename = _encodeFilename(filename)
 *             self._error_log.connect()
 */
      __Pyx_INCREF(__pyx_v_file);
      __Pyx_DECREF(__pyx_v_filename);
      __pyx_v_filename = __pyx_v_file;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":97
 *                 # XXX assume a string object
 *                 filename = file
 *             filename = _encodeFilename(filename)             # <<<<<<<<<<<<<<
 *             self._error_log.connect()
 *             parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
 */
    __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_filename); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_v_filename);
    __pyx_v_filename = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":98
 *                 filename = file
 *             filename = _encodeFilename(filename)
 *             self._error_log.connect()             # <<<<<<<<<<<<<<
 *             parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
 *         else:
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":99
 *             filename = _encodeFilename(filename)
 *             self._error_log.connect()
 *             parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))             # <<<<<<<<<<<<<<
 *         else:
 *             raise SchematronParseError, u"No tree or file given"
 */
    __pyx_v_parser_ctxt = xmlSchematronNewParserCtxt(PyString_AS_STRING(__pyx_v_filename));
    goto __pyx_L7;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":101
 *             parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename))
 *         else:
 *             raise SchematronParseError, u"No tree or file given"             # <<<<<<<<<<<<<<
 * 
 *         if parser_ctxt is NULL:
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s_347); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, ((PyObject *)__pyx_kp_u_333), 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":103
 *             raise SchematronParseError, u"No tree or file given"
 * 
 *         if parser_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             self._error_log.disconnect()
 *             if self._c_schema_doc is not NULL:
 */
  __pyx_t_4 = (__pyx_v_parser_ctxt == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":104
 * 
 *         if parser_ctxt is NULL:
 *             self._error_log.disconnect()             # <<<<<<<<<<<<<<
 *             if self._c_schema_doc is not NULL:
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 */
    ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":105
 *         if parser_ctxt is NULL:
 *             self._error_log.disconnect()
 *             if self._c_schema_doc is not NULL:             # <<<<<<<<<<<<<<
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 *                 self._c_schema_doc = NULL
 */
    __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc != NULL);
    if (__pyx_t_4) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":106
 *             self._error_log.disconnect()
 *             if self._c_schema_doc is not NULL:
 *                 tree.xmlFreeDoc(self._c_schema_doc)             # <<<<<<<<<<<<<<
 *                 self._c_schema_doc = NULL
 *             python.PyErr_NoMemory()
 */
      xmlFreeDoc(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":107
 *             if self._c_schema_doc is not NULL:
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 *                 self._c_schema_doc = NULL             # <<<<<<<<<<<<<<
 *             python.PyErr_NoMemory()
 *             return
 */
      ((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc = NULL;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":108
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 *                 self._c_schema_doc = NULL
 *             python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    __pyx_t_3 = PyErr_NoMemory(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":109
 *                 self._c_schema_doc = NULL
 *             python.PyErr_NoMemory()
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L9;
  }
  __pyx_L9:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":111
 *             return
 * 
 *         self._c_schema = schematron.xmlSchematronParse(parser_ctxt)             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 * 
 */
  ((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema = xmlSchematronParse(__pyx_v_parser_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":112
 * 
 *         self._c_schema = schematron.xmlSchematronParse(parser_ctxt)
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         schematron.xmlSchematronFreeParserCtxt(parser_ctxt)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":114
 *         self._error_log.disconnect()
 * 
 *         schematron.xmlSchematronFreeParserCtxt(parser_ctxt)             # <<<<<<<<<<<<<<
 *         if self._c_schema is NULL:
 *             raise SchematronParseError(
 */
  xmlSchematronFreeParserCtxt(__pyx_v_parser_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":115
 * 
 *         schematron.xmlSchematronFreeParserCtxt(parser_ctxt)
 *         if self._c_schema is NULL:             # <<<<<<<<<<<<<<
 *             raise SchematronParseError(
 *                 u"Document is not a valid Schematron schema",
 */
  __pyx_t_4 = (((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":116
 *         schematron.xmlSchematronFreeParserCtxt(parser_ctxt)
 *         if self._c_schema is NULL:
 *             raise SchematronParseError(             # <<<<<<<<<<<<<<
 *                 u"Document is not a valid Schematron schema",
 *                 self._error_log)
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s_347); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":118
 *             raise SchematronParseError(
 *                 u"Document is not a valid Schematron schema",
 *                 self._error_log)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_348));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_u_348));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_348));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L11;
  }
  __pyx_L11:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("lxml.etree.Schematron.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF(__pyx_v_filename);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_DECREF(__pyx_v_file);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":120
 *                 self._error_log)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         schematron.xmlSchematronFree(self._c_schema)
 *         if _LIBXML_VERSION_INT >= 20631:
 */

static void __pyx_pf_4lxml_5etree_10Schematron___dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pf_4lxml_5etree_10Schematron___dealloc__(PyObject *__pyx_v_self) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__");
  __Pyx_INCREF((PyObject *)__pyx_v_self);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":121
 * 
 *     def __dealloc__(self):
 *         schematron.xmlSchematronFree(self._c_schema)             # <<<<<<<<<<<<<<
 *         if _LIBXML_VERSION_INT >= 20631:
 *             # earlier libxml2 versions may have freed the document in
 */
  xmlSchematronFree(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":122
 *     def __dealloc__(self):
 *         schematron.xmlSchematronFree(self._c_schema)
 *         if _LIBXML_VERSION_INT >= 20631:             # <<<<<<<<<<<<<<
 *             # earlier libxml2 versions may have freed the document in
 *             # xmlSchematronFree() already, we don't know ...
 */
  __pyx_t_1 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20631);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":125
 *             # earlier libxml2 versions may have freed the document in
 *             # xmlSchematronFree() already, we don't know ...
 *             if self._c_schema_doc is not NULL:             # <<<<<<<<<<<<<<
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 * 
 */
    __pyx_t_1 = (((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc != NULL);
    if (__pyx_t_1) {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":126
 *             # xmlSchematronFree() already, we don't know ...
 *             if self._c_schema_doc is not NULL:
 *                 tree.xmlFreeDoc(self._c_schema_doc)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, etree):
 */
      xmlFreeDoc(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema_doc);
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }
  __pyx_L5:;

  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":128
 *                 tree.xmlFreeDoc(self._c_schema_doc)
 * 
 *     def __call__(self, etree):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, etree)
 * 
 */

static PyObject *__pyx_pf_4lxml_5etree_10Schematron___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4lxml_5etree_10Schematron___call__[] = "__call__(self, etree)\n\n        Validate doc using Schematron.\n\n        Returns true if document is valid, false if not.";
static PyObject *__pyx_pf_4lxml_5etree_10Schematron___call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_etree = 0;
  struct LxmlDocument *__pyx_v_doc;
  struct LxmlElement *__pyx_v_root_node;
  xmlDoc *__pyx_v_c_doc;
  xmlSchematronValidCtxt *__pyx_v_valid_ctxt;
  int __pyx_v_ret;
  int __pyx_v_options;
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  xmlDoc *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__etree,0};
  __Pyx_RefNannySetupContext("__call__");
  if (unlikely(__pyx_kwds)) {
    Py_ssize_t kw_args = PyDict_Size(__pyx_kwds);
    PyObject* values[1] = {0};
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      case  0: break;
      default: goto __pyx_L5_argtuple_error;
    }
    switch (PyTuple_GET_SIZE(__pyx_args)) {
      case  0:
      values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__etree);
      if (likely(values[0])) kw_args--;
      else goto __pyx_L5_argtuple_error;
    }
    if (unlikely(kw_args > 0)) {
      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__call__") < 0)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    }
    __pyx_v_etree = values[0];
  } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
    goto __pyx_L5_argtuple_error;
  } else {
    __pyx_v_etree = PyTuple_GET_ITEM(__pyx_args, 0);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[23]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("lxml.etree.Schematron.__call__");
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_v_etree);
  __pyx_v_doc = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  __pyx_v_root_node = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":141
 *         cdef int options
 * 
 *         doc = _documentOrRaise(etree)             # <<<<<<<<<<<<<<
 *         root_node = _rootNodeOrRaise(etree)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_doc));
  __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":142
 * 
 *         doc = _documentOrRaise(etree)
 *         root_node = _rootNodeOrRaise(etree)             # <<<<<<<<<<<<<<
 * 
 *         if _LIBXML_VERSION_INT >= 20632 and \
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_etree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_v_root_node));
  __pyx_v_root_node = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":144
 *         root_node = _rootNodeOrRaise(etree)
 * 
 *         if _LIBXML_VERSION_INT >= 20632 and \             # <<<<<<<<<<<<<<
 *                 schematron.XML_SCHEMATRON_OUT_ERROR != 0:
 *             options = schematron.XML_SCHEMATRON_OUT_ERROR
 */
  __pyx_t_2 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20632);
  if (__pyx_t_2) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":145
 * 
 *         if _LIBXML_VERSION_INT >= 20632 and \
 *                 schematron.XML_SCHEMATRON_OUT_ERROR != 0:             # <<<<<<<<<<<<<<
 *             options = schematron.XML_SCHEMATRON_OUT_ERROR
 *         else:
 */
    __pyx_t_3 = (XML_SCHEMATRON_OUT_ERROR != 0);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":146
 *         if _LIBXML_VERSION_INT >= 20632 and \
 *                 schematron.XML_SCHEMATRON_OUT_ERROR != 0:
 *             options = schematron.XML_SCHEMATRON_OUT_ERROR             # <<<<<<<<<<<<<<
 *         else:
 *             options = schematron.XML_SCHEMATRON_OUT_QUIET
 */
    __pyx_v_options = XML_SCHEMATRON_OUT_ERROR;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":148
 *             options = schematron.XML_SCHEMATRON_OUT_ERROR
 *         else:
 *             options = schematron.XML_SCHEMATRON_OUT_QUIET             # <<<<<<<<<<<<<<
 *             # hack to switch off stderr output
 *             options = options | schematron.XML_SCHEMATRON_OUT_XML
 */
    __pyx_v_options = XML_SCHEMATRON_OUT_QUIET;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":150
 *             options = schematron.XML_SCHEMATRON_OUT_QUIET
 *             # hack to switch off stderr output
 *             options = options | schematron.XML_SCHEMATRON_OUT_XML             # <<<<<<<<<<<<<<
 * 
 *         valid_ctxt = schematron.xmlSchematronNewValidCtxt(
 */
    __pyx_v_options = (__pyx_v_options | XML_SCHEMATRON_OUT_XML);
  }
  __pyx_L6:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":153
 * 
 *         valid_ctxt = schematron.xmlSchematronNewValidCtxt(
 *             self._c_schema, options)             # <<<<<<<<<<<<<<
 *         if valid_ctxt is NULL:
 *             return python.PyErr_NoMemory()
 */
  __pyx_v_valid_ctxt = xmlSchematronNewValidCtxt(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->_c_schema, __pyx_v_options);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":154
 *         valid_ctxt = schematron.xmlSchematronNewValidCtxt(
 *             self._c_schema, options)
 *         if valid_ctxt is NULL:             # <<<<<<<<<<<<<<
 *             return python.PyErr_NoMemory()
 * 
 */
  __pyx_t_4 = (__pyx_v_valid_ctxt == NULL);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":155
 *             self._c_schema, options)
 *         if valid_ctxt is NULL:
 *             return python.PyErr_NoMemory()             # <<<<<<<<<<<<<<
 * 
 *         self._error_log.connect()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyErr_NoMemory(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":157
 *             return python.PyErr_NoMemory()
 * 
 *         self._error_log.connect()             # <<<<<<<<<<<<<<
 *         if _LIBXML_VERSION_INT >= 20632:
 *             schematron.xmlSchematronSetValidStructuredErrors(
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->connect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":158
 * 
 *         self._error_log.connect()
 *         if _LIBXML_VERSION_INT >= 20632:             # <<<<<<<<<<<<<<
 *             schematron.xmlSchematronSetValidStructuredErrors(
 *                 valid_ctxt, _receiveError, <void*>self._error_log)
 */
  __pyx_t_4 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT >= 20632);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":160
 *         if _LIBXML_VERSION_INT >= 20632:
 *             schematron.xmlSchematronSetValidStructuredErrors(
 *                 valid_ctxt, _receiveError, <void*>self._error_log)             # <<<<<<<<<<<<<<
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:
 */
    xmlSchematronSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":161
 *             schematron.xmlSchematronSetValidStructuredErrors(
 *                 valid_ctxt, _receiveError, <void*>self._error_log)
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_doc->_c_doc, __pyx_v_root_node->_c_node); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_doc = __pyx_t_5;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":162
 *                 valid_ctxt, _receiveError, <void*>self._error_log)
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
  { PyThreadState *_save;
    Py_UNBLOCK_THREADS
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":163
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)             # <<<<<<<<<<<<<<
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 *         self._error_log.disconnect()
 */
      __pyx_v_ret = xmlSchematronValidateDoc(__pyx_v_valid_ctxt, __pyx_v_c_doc);
    }
    /*finally:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":162
 *                 valid_ctxt, _receiveError, <void*>self._error_log)
 *         c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 */
      Py_BLOCK_THREADS
    }
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":164
 *         with nogil:
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
 *         self._error_log.disconnect()
 * 
 */
  __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":165
 *             ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc)
 *         _destroyFakeDoc(doc._c_doc, c_doc)
 *         self._error_log.disconnect()             # <<<<<<<<<<<<<<
 * 
 *         schematron.xmlSchematronFreeValidCtxt(valid_ctxt)
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log->__pyx_base.__pyx_base.__pyx_vtab)->disconnect(((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":167
 *         self._error_log.disconnect()
 * 
 *         schematron.xmlSchematronFreeValidCtxt(valid_ctxt)             # <<<<<<<<<<<<<<
 * 
 *         if ret == -1:
 */
  xmlSchematronFreeValidCtxt(__pyx_v_valid_ctxt);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":169
 *         schematron.xmlSchematronFreeValidCtxt(valid_ctxt)
 * 
 *         if ret == -1:             # <<<<<<<<<<<<<<
 *             raise SchematronValidateError(
 *                 u"Internal error in Schematron validation",
 */
  __pyx_t_4 = (__pyx_v_ret == -1);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":170
 * 
 *         if ret == -1:
 *             raise SchematronValidateError(             # <<<<<<<<<<<<<<
 *                 u"Internal error in Schematron validation",
 *                 self._error_log)
 */
    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s_349); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":172
 *             raise SchematronValidateError(
 *                 u"Internal error in Schematron validation",
 *                 self._error_log)             # <<<<<<<<<<<<<<
 *         if ret == 0:
 *             return True
 */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_350));
    PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_kp_u_350));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_350));
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    __Pyx_GIVEREF(((PyObject *)((struct __pyx_obj_4lxml_5etree_Schematron *)__pyx_v_self)->__pyx_base._error_log));
    __pyx_t_7 = PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_7, 0, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    {__pyx_filename = __pyx_f[23]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L12;
  }
  __pyx_L12:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":173
 *                 u"Internal error in Schematron validation",
 *                 self._error_log)
 *         if ret == 0:             # <<<<<<<<<<<<<<
 *             return True
 *         else:
 */
  __pyx_t_4 = (__pyx_v_ret == 0);
  if (__pyx_t_4) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":174
 *                 self._error_log)
 *         if ret == 0:
 *             return True             # <<<<<<<<<<<<<<
 *         else:
 *             return False
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
    goto __pyx_L13;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":176
 *             return True
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_r = __pyx_t_7;
    __pyx_t_7 = 0;
    goto __pyx_L0;
  }
  __pyx_L13:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("lxml.etree.Schematron.__call__");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_DECREF((PyObject *)__pyx_v_root_node);
  __Pyx_DECREF((PyObject *)__pyx_v_self);
  __Pyx_DECREF(__pyx_v_etree);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":3
 * # Public C API for lxml.etree
 * 
 * cdef public api _Element deepcopyNodeToDocument(_Document doc, xmlNode* c_root):             # <<<<<<<<<<<<<<
 *     u"Recursively copy the element into the document. doc is not modified."
 *     cdef xmlNode* c_node
 */

 DL_EXPORT(struct LxmlElement) *deepcopyNodeToDocument(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_root) {
  xmlNode *__pyx_v_c_node;
  struct LxmlElement *__pyx_r = NULL;
  xmlNode *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("deepcopyNodeToDocument");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":6
 *     u"Recursively copy the element into the document. doc is not modified."
 *     cdef xmlNode* c_node
 *     c_node = _copyNodeToDoc(c_root, doc._c_doc)             # <<<<<<<<<<<<<<
 *     return _elementFactory(doc, c_node)
 * 
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__copyNodeToDoc(__pyx_v_c_root, __pyx_v_doc->_c_doc); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_c_node = __pyx_t_1;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":7
 *     cdef xmlNode* c_node
 *     c_node = _copyNodeToDoc(c_root, doc._c_doc)
 *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _ElementTree elementTreeFactory(_Element context_node):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 7; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct LxmlElement *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.deepcopyNodeToDocument");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":9
 *     return _elementFactory(doc, c_node)
 * 
 * cdef public api _ElementTree elementTreeFactory(_Element context_node):             # <<<<<<<<<<<<<<
 *     return newElementTree(context_node, _ElementTree)
 * 
 */

 DL_EXPORT(struct LxmlElementTree) *elementTreeFactory(struct LxmlElement *__pyx_v_context_node) {
  struct LxmlElementTree *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("elementTreeFactory");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":10
 * 
 * cdef public api _ElementTree elementTreeFactory(_Element context_node):
 *     return newElementTree(context_node, _ElementTree)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _ElementTree newElementTree(_Element context_node,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = ((PyObject *)newElementTree(__pyx_v_context_node, ((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlElementTree *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElementTree *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.elementTreeFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":12
 *     return newElementTree(context_node, _ElementTree)
 * 
 * cdef public api _ElementTree newElementTree(_Element context_node,             # <<<<<<<<<<<<<<
 *                                         object subclass):
 *     if <void*>context_node is NULL or context_node is None:
 */

 DL_EXPORT(struct LxmlElementTree) *newElementTree(struct LxmlElement *__pyx_v_context_node, PyObject *__pyx_v_subclass) {
  struct LxmlElementTree *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("newElementTree");
  __Pyx_INCREF((PyObject *)__pyx_v_context_node);
  __Pyx_INCREF(__pyx_v_subclass);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":14
 * cdef public api _ElementTree newElementTree(_Element context_node,
 *                                         object subclass):
 *     if <void*>context_node is NULL or context_node is None:             # <<<<<<<<<<<<<<
 *         raise TypeError
 * 
 */
  __pyx_t_1 = (((void *)__pyx_v_context_node) == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (((PyObject *)__pyx_v_context_node) == Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":15
 *                                         object subclass):
 *     if <void*>context_node is NULL or context_node is None:
 *         raise TypeError             # <<<<<<<<<<<<<<
 * 
 *     return _newElementTree(context_node._doc, context_node, subclass)
 */
    __Pyx_Raise(__pyx_builtin_TypeError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":17
 *         raise TypeError
 * 
 *     return _newElementTree(context_node._doc, context_node, subclass)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _Element elementFactory(_Document doc, xmlNode* c_node):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__newElementTree(__pyx_v_context_node->_doc, __pyx_v_context_node, __pyx_v_subclass)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = ((struct LxmlElementTree *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElementTree *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.newElementTree");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_context_node);
  __Pyx_DECREF(__pyx_v_subclass);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":19
 *     return _newElementTree(context_node._doc, context_node, subclass)
 * 
 * cdef public api _Element elementFactory(_Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     if c_node is NULL or doc is None:
 *         raise TypeError
 */

 DL_EXPORT(struct LxmlElement) *elementFactory(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  struct LxmlElement *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __Pyx_RefNannySetupContext("elementFactory");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":20
 * 
 * cdef public api _Element elementFactory(_Document doc, xmlNode* c_node):
 *     if c_node is NULL or doc is None:             # <<<<<<<<<<<<<<
 *         raise TypeError
 *     return _elementFactory(doc, c_node)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (!__pyx_t_1) {
    __pyx_t_2 = (((PyObject *)__pyx_v_doc) == Py_None);
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":21
 * cdef public api _Element elementFactory(_Document doc, xmlNode* c_node):
 *     if c_node is NULL or doc is None:
 *         raise TypeError             # <<<<<<<<<<<<<<
 *     return _elementFactory(doc, c_node)
 * 
 */
    __Pyx_Raise(__pyx_builtin_TypeError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":22
 *     if c_node is NULL or doc is None:
 *         raise TypeError
 *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _Element makeElement(tag, _Document doc, parser,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = ((struct LxmlElement *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("lxml.etree.elementFactory");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":24
 *     return _elementFactory(doc, c_node)
 * 
 * cdef public api _Element makeElement(tag, _Document doc, parser,             # <<<<<<<<<<<<<<
 *                                  text, tail, attrib, nsmap):
 *     return _makeElement(tag, NULL, doc, parser, text, tail, attrib, nsmap, None)
 */

 DL_EXPORT(struct LxmlElement) *makeElement(PyObject *__pyx_v_tag, struct LxmlDocument *__pyx_v_doc, PyObject *__pyx_v_parser, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
  struct LxmlElement *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("makeElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":26
 * cdef public api _Element makeElement(tag, _Document doc, parser,
 *                                  text, tail, attrib, nsmap):
 *     return _makeElement(tag, NULL, doc, parser, text, tail, attrib, nsmap, None)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _Element makeSubElement(_Element parent, tag, text, tail,
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  if (!(likely(((__pyx_v_parser) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_parser, __pyx_ptype_4lxml_5etree__BaseParser))))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v_tag, NULL, __pyx_v_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_parser), __pyx_v_text, __pyx_v_tail, __pyx_v_attrib, __pyx_v_nsmap, Py_None)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.makeElement");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":28
 *     return _makeElement(tag, NULL, doc, parser, text, tail, attrib, nsmap, None)
 * 
 * cdef public api _Element makeSubElement(_Element parent, tag, text, tail,             # <<<<<<<<<<<<<<
 *                                     attrib, nsmap):
 *     return _makeSubElement(parent, tag, text, tail, attrib, nsmap, None)
 */

 DL_EXPORT(struct LxmlElement) *makeSubElement(struct LxmlElement *__pyx_v_parent, PyObject *__pyx_v_tag, PyObject *__pyx_v_text, PyObject *__pyx_v_tail, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {
  struct LxmlElement *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("makeSubElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":30
 * cdef public api _Element makeSubElement(_Element parent, tag, text, tail,
 *                                     attrib, nsmap):
 *     return _makeSubElement(parent, tag, text, tail, attrib, nsmap, None)             # <<<<<<<<<<<<<<
 * 
 * cdef public api void setElementClassLookupFunction(
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v_parent, __pyx_v_tag, __pyx_v_text, __pyx_v_tail, __pyx_v_attrib, __pyx_v_nsmap, Py_None)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.makeSubElement");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":32
 *     return _makeSubElement(parent, tag, text, tail, attrib, nsmap, None)
 * 
 * cdef public api void setElementClassLookupFunction(             # <<<<<<<<<<<<<<
 *     _element_class_lookup_function function, state):
 *     _setElementClassLookupFunction(function, state)
 */

 DL_EXPORT(void) setElementClassLookupFunction(_element_class_lookup_function __pyx_v_function, PyObject *__pyx_v_state) {
  __Pyx_RefNannySetupContext("setElementClassLookupFunction");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":34
 * cdef public api void setElementClassLookupFunction(
 *     _element_class_lookup_function function, state):
 *     _setElementClassLookupFunction(function, state)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object lookupDefaultElementClass(state, doc, xmlNode* c_node):
 */
  __pyx_f_4lxml_5etree__setElementClassLookupFunction(__pyx_v_function, __pyx_v_state);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":36
 *     _setElementClassLookupFunction(function, state)
 * 
 * cdef public api object lookupDefaultElementClass(state, doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _lookupDefaultElementClass(state, doc, c_node)
 * 
 */

 DL_EXPORT(PyObject) *lookupDefaultElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("lookupDefaultElementClass");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":37
 * 
 * cdef public api object lookupDefaultElementClass(state, doc, xmlNode* c_node):
 *     return _lookupDefaultElementClass(state, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object lookupNamespaceElementClass(state, doc, xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __pyx_f_4lxml_5etree__lookupDefaultElementClass(__pyx_v_state, ((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.lookupDefaultElementClass");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":39
 *     return _lookupDefaultElementClass(state, doc, c_node)
 * 
 * cdef public api object lookupNamespaceElementClass(state, doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _find_nselement_class(state, doc, c_node)
 * 
 */

 DL_EXPORT(PyObject) *lookupNamespaceElementClass(PyObject *__pyx_v_state, PyObject *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("lookupNamespaceElementClass");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":40
 * 
 * cdef public api object lookupNamespaceElementClass(state, doc, xmlNode* c_node):
 *     return _find_nselement_class(state, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object callLookupFallback(FallbackElementClassLookup lookup,
 */
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(((__pyx_v_doc) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_doc, __pyx_ptype_4lxml_5etree__Document))))) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __pyx_f_4lxml_5etree__find_nselement_class(__pyx_v_state, ((struct LxmlDocument *)__pyx_v_doc), __pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.lookupNamespaceElementClass");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":42
 *     return _find_nselement_class(state, doc, c_node)
 * 
 * cdef public api object callLookupFallback(FallbackElementClassLookup lookup,             # <<<<<<<<<<<<<<
 *                                       _Document doc, xmlNode* c_node):
 *     return _callLookupFallback(lookup, doc, c_node)
 */

 DL_EXPORT(PyObject) *callLookupFallback(struct LxmlFallbackElementClassLookup *__pyx_v_lookup, struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("callLookupFallback");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":44
 * cdef public api object callLookupFallback(FallbackElementClassLookup lookup,
 *                                       _Document doc, xmlNode* c_node):
 *     return _callLookupFallback(lookup, doc, c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int tagMatches(xmlNode* c_node, char* c_href, char* c_name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__callLookupFallback(__pyx_v_lookup, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.callLookupFallback");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":46
 *     return _callLookupFallback(lookup, doc, c_node)
 * 
 * cdef public api int tagMatches(xmlNode* c_node, char* c_href, char* c_name):             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         return -1
 */

 DL_EXPORT(int) tagMatches(xmlNode *__pyx_v_c_node, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("tagMatches");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":47
 * 
 * cdef public api int tagMatches(xmlNode* c_node, char* c_href, char* c_name):
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return -1
 *     return _tagMatches(c_node, c_href, c_name)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":48
 * cdef public api int tagMatches(xmlNode* c_node, char* c_href, char* c_name):
 *     if c_node is NULL:
 *         return -1             # <<<<<<<<<<<<<<
 *     return _tagMatches(c_node, c_href, c_name)
 * 
 */
    __pyx_r = -1;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":49
 *     if c_node is NULL:
 *         return -1
 *     return _tagMatches(c_node, c_href, c_name)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _Document documentOrRaise(object input):
 */
  __pyx_r = __pyx_f_4lxml_5etree__tagMatches(__pyx_v_c_node, __pyx_v_c_href, __pyx_v_c_name);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":51
 *     return _tagMatches(c_node, c_href, c_name)
 * 
 * cdef public api _Document documentOrRaise(object input):             # <<<<<<<<<<<<<<
 *     return _documentOrRaise(input)
 * 
 */

 DL_EXPORT(struct LxmlDocument) *documentOrRaise(PyObject *__pyx_v_input) {
  struct LxmlDocument *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("documentOrRaise");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":52
 * 
 * cdef public api _Document documentOrRaise(object input):
 *     return _documentOrRaise(input)             # <<<<<<<<<<<<<<
 * 
 * cdef public api _Element rootNodeOrRaise(object input):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentOrRaise(__pyx_v_input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlDocument *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlDocument *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.documentOrRaise");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":54
 *     return _documentOrRaise(input)
 * 
 * cdef public api _Element rootNodeOrRaise(object input):             # <<<<<<<<<<<<<<
 *     return _rootNodeOrRaise(input)
 * 
 */

 DL_EXPORT(struct LxmlElement) *rootNodeOrRaise(PyObject *__pyx_v_input) {
  struct LxmlElement *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("rootNodeOrRaise");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":55
 * 
 * cdef public api _Element rootNodeOrRaise(object input):
 *     return _rootNodeOrRaise(input)             # <<<<<<<<<<<<<<
 * 
 * cdef public api bint hasText(xmlNode* c_node):
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_input)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct LxmlElement *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.rootNodeOrRaise");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":57
 *     return _rootNodeOrRaise(input)
 * 
 * cdef public api bint hasText(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _hasText(c_node)
 * 
 */

 DL_EXPORT(int) hasText(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("hasText");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":58
 * 
 * cdef public api bint hasText(xmlNode* c_node):
 *     return _hasText(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api bint hasTail(xmlNode* c_node):
 */
  __pyx_r = __pyx_f_4lxml_5etree__hasText(__pyx_v_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":60
 *     return _hasText(c_node)
 * 
 * cdef public api bint hasTail(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _hasTail(c_node)
 * 
 */

 DL_EXPORT(int) hasTail(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("hasTail");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":61
 * 
 * cdef public api bint hasTail(xmlNode* c_node):
 *     return _hasTail(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object textOf(xmlNode* c_node):
 */
  __pyx_r = __pyx_f_4lxml_5etree__hasTail(__pyx_v_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":63
 *     return _hasTail(c_node)
 * 
 * cdef public api object textOf(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         return None
 */

 DL_EXPORT(PyObject) *textOf(xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("textOf");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":64
 * 
 * cdef public api object textOf(xmlNode* c_node):
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     return _collectText(c_node.children)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":65
 * cdef public api object textOf(xmlNode* c_node):
 *     if c_node is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     return _collectText(c_node.children)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":66
 *     if c_node is NULL:
 *         return None
 *     return _collectText(c_node.children)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object tailOf(xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_c_node->children); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.textOf");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":68
 *     return _collectText(c_node.children)
 * 
 * cdef public api object tailOf(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         return None
 */

 DL_EXPORT(PyObject) *tailOf(xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("tailOf");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":69
 * 
 * cdef public api object tailOf(xmlNode* c_node):
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     return _collectText(c_node.next)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":70
 * cdef public api object tailOf(xmlNode* c_node):
 *     if c_node is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     return _collectText(c_node.next)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":71
 *     if c_node is NULL:
 *         return None
 *     return _collectText(c_node.next)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int setNodeText(xmlNode* c_node, text) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree__collectText(__pyx_v_c_node->next); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.tailOf");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":73
 *     return _collectText(c_node.next)
 * 
 * cdef public api int setNodeText(xmlNode* c_node, text) except -1:             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         raise ValueError
 */

 DL_EXPORT(int) setNodeText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("setNodeText");
  __Pyx_INCREF(__pyx_v_text);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":74
 * 
 * cdef public api int setNodeText(xmlNode* c_node, text) except -1:
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError
 *     return _setNodeText(c_node, text)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":75
 * cdef public api int setNodeText(xmlNode* c_node, text) except -1:
 *     if c_node is NULL:
 *         raise ValueError             # <<<<<<<<<<<<<<
 *     return _setNodeText(c_node, text)
 * 
 */
    __Pyx_Raise(__pyx_builtin_ValueError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":76
 *     if c_node is NULL:
 *         raise ValueError
 *     return _setNodeText(c_node, text)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int setTailText(xmlNode* c_node, text) except -1:
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__setNodeText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.setNodeText");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":78
 *     return _setNodeText(c_node, text)
 * 
 * cdef public api int setTailText(xmlNode* c_node, text) except -1:             # <<<<<<<<<<<<<<
 *     if c_node is NULL:
 *         raise ValueError
 */

 DL_EXPORT(int) setTailText(xmlNode *__pyx_v_c_node, PyObject *__pyx_v_text) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("setTailText");
  __Pyx_INCREF(__pyx_v_text);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":79
 * 
 * cdef public api int setTailText(xmlNode* c_node, text) except -1:
 *     if c_node is NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError
 *     return _setTailText(c_node, text)
 */
  __pyx_t_1 = (__pyx_v_c_node == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":80
 * cdef public api int setTailText(xmlNode* c_node, text) except -1:
 *     if c_node is NULL:
 *         raise ValueError             # <<<<<<<<<<<<<<
 *     return _setTailText(c_node, text)
 * 
 */
    __Pyx_Raise(__pyx_builtin_ValueError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":81
 *     if c_node is NULL:
 *         raise ValueError
 *     return _setTailText(c_node, text)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):
 */
  __pyx_t_2 = __pyx_f_4lxml_5etree__setTailText(__pyx_v_c_node, __pyx_v_text); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.setTailText");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_DECREF(__pyx_v_text);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":83
 *     return _setTailText(c_node, text)
 * 
 * cdef public api object attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):             # <<<<<<<<<<<<<<
 *     return _attributeValue(c_element, c_attrib_node)
 * 
 */

 DL_EXPORT(PyObject) *attributeValue(xmlNode *__pyx_v_c_element, xmlAttr *__pyx_v_c_attrib_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("attributeValue");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":84
 * 
 * cdef public api object attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node):
 *     return _attributeValue(c_element, c_attrib_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object attributeValueFromNsName(xmlNode* c_element,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__attributeValue(__pyx_v_c_element, __pyx_v_c_attrib_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.attributeValue");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":86
 *     return _attributeValue(c_element, c_attrib_node)
 * 
 * cdef public api object attributeValueFromNsName(xmlNode* c_element,             # <<<<<<<<<<<<<<
 *                                             char* ns, char* name):
 *     return _attributeValueFromNsName(c_element, ns, name)
 */

 DL_EXPORT(PyObject) *attributeValueFromNsName(xmlNode *__pyx_v_c_element, char *__pyx_v_ns, char *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("attributeValueFromNsName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":88
 * cdef public api object attributeValueFromNsName(xmlNode* c_element,
 *                                             char* ns, char* name):
 *     return _attributeValueFromNsName(c_element, ns, name)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object getAttributeValue(_Element element, key, default):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__attributeValueFromNsName(__pyx_v_c_element, __pyx_v_ns, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.attributeValueFromNsName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":90
 *     return _attributeValueFromNsName(c_element, ns, name)
 * 
 * cdef public api object getAttributeValue(_Element element, key, default):             # <<<<<<<<<<<<<<
 *     return _getAttributeValue(element, key, default)
 * 
 */

 DL_EXPORT(PyObject) *getAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getAttributeValue");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":91
 * 
 * cdef public api object getAttributeValue(_Element element, key, default):
 *     return _getAttributeValue(element, key, default)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object iterattributes(_Element element, int keysvalues):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__getAttributeValue(__pyx_v_element, __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.getAttributeValue");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":93
 *     return _getAttributeValue(element, key, default)
 * 
 * cdef public api object iterattributes(_Element element, int keysvalues):             # <<<<<<<<<<<<<<
 *     return _attributeIteratorFactory(element, keysvalues)
 * 
 */

 DL_EXPORT(PyObject) *iterattributes(struct LxmlElement *__pyx_v_element, int __pyx_v_keysvalues) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("iterattributes");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":94
 * 
 * cdef public api object iterattributes(_Element element, int keysvalues):
 *     return _attributeIteratorFactory(element, keysvalues)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object collectAttributes(xmlNode* c_element, int keysvalues):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__attributeIteratorFactory(__pyx_v_element, __pyx_v_keysvalues); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.iterattributes");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":96
 *     return _attributeIteratorFactory(element, keysvalues)
 * 
 * cdef public api object collectAttributes(xmlNode* c_element, int keysvalues):             # <<<<<<<<<<<<<<
 *     return _collectAttributes(c_element, keysvalues)
 * 
 */

 DL_EXPORT(PyObject) *collectAttributes(xmlNode *__pyx_v_c_element, int __pyx_v_keysvalues) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("collectAttributes");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":97
 * 
 * cdef public api object collectAttributes(xmlNode* c_element, int keysvalues):
 *     return _collectAttributes(c_element, keysvalues)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int setAttributeValue(_Element element, key, value) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_c_element, __pyx_v_keysvalues); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.collectAttributes");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":99
 *     return _collectAttributes(c_element, keysvalues)
 * 
 * cdef public api int setAttributeValue(_Element element, key, value) except -1:             # <<<<<<<<<<<<<<
 *     return _setAttributeValue(element, key, value)
 * 
 */

 DL_EXPORT(int) setAttributeValue(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("setAttributeValue");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":100
 * 
 * cdef public api int setAttributeValue(_Element element, key, value) except -1:
 *     return _setAttributeValue(element, key, value)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int delAttribute(_Element element, key) except -1:
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__setAttributeValue(__pyx_v_element, __pyx_v_key, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.setAttributeValue");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":102
 *     return _setAttributeValue(element, key, value)
 * 
 * cdef public api int delAttribute(_Element element, key) except -1:             # <<<<<<<<<<<<<<
 *     return _delAttribute(element, key)
 * 
 */

 DL_EXPORT(int) delAttribute(struct LxmlElement *__pyx_v_element, PyObject *__pyx_v_key) {
  int __pyx_r;
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("delAttribute");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":103
 * 
 * cdef public api int delAttribute(_Element element, key) except -1:
 *     return _delAttribute(element, key)             # <<<<<<<<<<<<<<
 * 
 * cdef public api int delAttributeFromNsName(tree.xmlNode* c_element,
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__delAttribute(__pyx_v_element, __pyx_v_key); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.delAttribute");
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":105
 *     return _delAttribute(element, key)
 * 
 * cdef public api int delAttributeFromNsName(tree.xmlNode* c_element,             # <<<<<<<<<<<<<<
 *                                        char* c_href, char* c_name):
 *     return _delAttributeFromNsName(c_element, c_href, c_name)
 */

 DL_EXPORT(int) delAttributeFromNsName(xmlNode *__pyx_v_c_element, char *__pyx_v_c_href, char *__pyx_v_c_name) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("delAttributeFromNsName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":107
 * cdef public api int delAttributeFromNsName(tree.xmlNode* c_element,
 *                                        char* c_href, char* c_name):
 *     return _delAttributeFromNsName(c_element, c_href, c_name)             # <<<<<<<<<<<<<<
 * 
 * cdef public api bint hasChild(xmlNode* c_node):
 */
  __pyx_r = __pyx_f_4lxml_5etree__delAttributeFromNsName(__pyx_v_c_element, __pyx_v_c_href, __pyx_v_c_name);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":109
 *     return _delAttributeFromNsName(c_element, c_href, c_name)
 * 
 * cdef public api bint hasChild(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _hasChild(c_node)
 * 
 */

 DL_EXPORT(int) hasChild(xmlNode *__pyx_v_c_node) {
  int __pyx_r;
  __Pyx_RefNannySetupContext("hasChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":110
 * 
 * cdef public api bint hasChild(xmlNode* c_node):
 *     return _hasChild(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api xmlNode* findChild(xmlNode* c_node, Py_ssize_t index):
 */
  __pyx_r = __pyx_f_4lxml_5etree__hasChild(__pyx_v_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":112
 *     return _hasChild(c_node)
 * 
 * cdef public api xmlNode* findChild(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     return _findChild(c_node, index)
 * 
 */

 DL_EXPORT(xmlNode) *findChild(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("findChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":113
 * 
 * cdef public api xmlNode* findChild(xmlNode* c_node, Py_ssize_t index):
 *     return _findChild(c_node, index)             # <<<<<<<<<<<<<<
 * 
 * cdef public api xmlNode* findChildForwards(xmlNode* c_node, Py_ssize_t index):
 */
  __pyx_r = __pyx_f_4lxml_5etree__findChild(__pyx_v_c_node, __pyx_v_index);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":115
 *     return _findChild(c_node, index)
 * 
 * cdef public api xmlNode* findChildForwards(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     return _findChildForwards(c_node, index)
 * 
 */

 DL_EXPORT(xmlNode) *findChildForwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("findChildForwards");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":116
 * 
 * cdef public api xmlNode* findChildForwards(xmlNode* c_node, Py_ssize_t index):
 *     return _findChildForwards(c_node, index)             # <<<<<<<<<<<<<<
 * 
 * cdef public api xmlNode* findChildBackwards(xmlNode* c_node, Py_ssize_t index):
 */
  __pyx_r = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_c_node, __pyx_v_index);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":118
 *     return _findChildForwards(c_node, index)
 * 
 * cdef public api xmlNode* findChildBackwards(xmlNode* c_node, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *     return _findChildBackwards(c_node, index)
 * 
 */

 DL_EXPORT(xmlNode) *findChildBackwards(xmlNode *__pyx_v_c_node, Py_ssize_t __pyx_v_index) {
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("findChildBackwards");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":119
 * 
 * cdef public api xmlNode* findChildBackwards(xmlNode* c_node, Py_ssize_t index):
 *     return _findChildBackwards(c_node, index)             # <<<<<<<<<<<<<<
 * 
 * cdef public api xmlNode* nextElement(xmlNode* c_node):
 */
  __pyx_r = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_c_node, __pyx_v_index);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":121
 *     return _findChildBackwards(c_node, index)
 * 
 * cdef public api xmlNode* nextElement(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _nextElement(c_node)
 * 
 */

 DL_EXPORT(xmlNode) *nextElement(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("nextElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":122
 * 
 * cdef public api xmlNode* nextElement(xmlNode* c_node):
 *     return _nextElement(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api xmlNode* previousElement(xmlNode* c_node):
 */
  __pyx_r = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":124
 *     return _nextElement(c_node)
 * 
 * cdef public api xmlNode* previousElement(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _previousElement(c_node)
 * 
 */

 DL_EXPORT(xmlNode) *previousElement(xmlNode *__pyx_v_c_node) {
  xmlNode *__pyx_r;
  __Pyx_RefNannySetupContext("previousElement");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":125
 * 
 * cdef public api xmlNode* previousElement(xmlNode* c_node):
 *     return _previousElement(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api void appendChild(_Element parent, _Element child):
 */
  __pyx_r = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":127
 *     return _previousElement(c_node)
 * 
 * cdef public api void appendChild(_Element parent, _Element child):             # <<<<<<<<<<<<<<
 *     _appendChild(parent, child)
 * 
 */

 DL_EXPORT(void) appendChild(struct LxmlElement *__pyx_v_parent, struct LxmlElement *__pyx_v_child) {
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("appendChild");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":128
 * 
 * cdef public api void appendChild(_Element parent, _Element child):
 *     _appendChild(parent, child)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object pyunicode(char* s):
 */
  __pyx_t_1 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_child); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("lxml.etree.appendChild");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":130
 *     _appendChild(parent, child)
 * 
 * cdef public api object pyunicode(char* s):             # <<<<<<<<<<<<<<
 *     if s is NULL:
 *         raise TypeError
 */

 DL_EXPORT(PyObject) *pyunicode(char *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  __Pyx_RefNannySetupContext("pyunicode");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":131
 * 
 * cdef public api object pyunicode(char* s):
 *     if s is NULL:             # <<<<<<<<<<<<<<
 *         raise TypeError
 *     return funicode(s)
 */
  __pyx_t_1 = (__pyx_v_s == NULL);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":132
 * cdef public api object pyunicode(char* s):
 *     if s is NULL:
 *         raise TypeError             # <<<<<<<<<<<<<<
 *     return funicode(s)
 * 
 */
    __Pyx_Raise(__pyx_builtin_TypeError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":133
 *     if s is NULL:
 *         raise TypeError
 *     return funicode(s)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object utf8(object s):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("lxml.etree.pyunicode");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":135
 *     return funicode(s)
 * 
 * cdef public api object utf8(object s):             # <<<<<<<<<<<<<<
 *     return _utf8(s)
 * 
 */

 DL_EXPORT(PyObject) *utf8(PyObject *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("utf8");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":136
 * 
 * cdef public api object utf8(object s):
 *     return _utf8(s)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object getNsTag(object tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.utf8");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":138
 *     return _utf8(s)
 * 
 * cdef public api object getNsTag(object tag):             # <<<<<<<<<<<<<<
 *     return _getNsTag(tag)
 * 
 */

 DL_EXPORT(PyObject) *getNsTag(PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("getNsTag");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":139
 * 
 * cdef public api object getNsTag(object tag):
 *     return _getNsTag(tag)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object namespacedName(xmlNode* c_node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.getNsTag");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":141
 *     return _getNsTag(tag)
 * 
 * cdef public api object namespacedName(xmlNode* c_node):             # <<<<<<<<<<<<<<
 *     return _namespacedName(c_node)
 * 
 */

 DL_EXPORT(PyObject) *namespacedName(xmlNode *__pyx_v_c_node) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("namespacedName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":142
 * 
 * cdef public api object namespacedName(xmlNode* c_node):
 *     return _namespacedName(c_node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api object namespacedNameFromNsName(char* href, char* name):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedName(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.namespacedName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":144
 *     return _namespacedName(c_node)
 * 
 * cdef public api object namespacedNameFromNsName(char* href, char* name):             # <<<<<<<<<<<<<<
 *     return _namespacedNameFromNsName(href, name)
 * 
 */

 DL_EXPORT(PyObject) *namespacedNameFromNsName(char *__pyx_v_href, char *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("namespacedNameFromNsName");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":145
 * 
 * cdef public api object namespacedNameFromNsName(char* href, char* name):
 *     return _namespacedNameFromNsName(href, name)             # <<<<<<<<<<<<<<
 * 
 * cdef public api void iteratorStoreNext(_ElementIterator iterator, _Element node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("lxml.etree.namespacedNameFromNsName");
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":147
 *     return _namespacedNameFromNsName(href, name)
 * 
 * cdef public api void iteratorStoreNext(_ElementIterator iterator, _Element node):             # <<<<<<<<<<<<<<
 *     iterator._storeNext(node)
 * 
 */

 DL_EXPORT(void) iteratorStoreNext(struct LxmlElementIterator *__pyx_v_iterator, struct LxmlElement *__pyx_v_node) {
  __Pyx_RefNannySetupContext("iteratorStoreNext");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":148
 * 
 * cdef public api void iteratorStoreNext(_ElementIterator iterator, _Element node):
 *     iterator._storeNext(node)             # <<<<<<<<<<<<<<
 * 
 * cdef public api void initTagMatch(_ElementTagMatcher matcher, tag):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *)__pyx_v_iterator->__pyx_base.__pyx_vtab)->_storeNext(__pyx_v_iterator, __pyx_v_node);

  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":150
 *     iterator._storeNext(node)
 * 
 * cdef public api void initTagMatch(_ElementTagMatcher matcher, tag):             # <<<<<<<<<<<<<<
 *     matcher._initTagMatch(tag)
 * 
 */

 DL_EXPORT(void) initTagMatch(struct LxmlElementTagMatcher *__pyx_v_matcher, PyObject *__pyx_v_tag) {
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("initTagMatch");

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":151
 * 
 * cdef public api void initTagMatch(_ElementTagMatcher matcher, tag):
 *     matcher._initTagMatch(tag)             # <<<<<<<<<<<<<<
 * 
 * cdef public api tree.xmlNs* findOrBuildNodeNsPrefix(
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *)__pyx_v_matcher->__pyx_vtab)->_initTagMatch(__pyx_v_matcher, __pyx_v_tag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("lxml.etree.initTagMatch");
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":153
 *     matcher._initTagMatch(tag)
 * 
 * cdef public api tree.xmlNs* findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
 *     _Document doc, xmlNode* c_node, char* href, char* prefix) except NULL:
 *     if doc is None:
 */

 DL_EXPORT(xmlNs) *findOrBuildNodeNsPrefix(struct LxmlDocument *__pyx_v_doc, xmlNode *__pyx_v_c_node, char *__pyx_v_href, char *__pyx_v_prefix) {
  xmlNs *__pyx_r;
  int __pyx_t_1;
  xmlNs *__pyx_t_2;
  __Pyx_RefNannySetupContext("findOrBuildNodeNsPrefix");
  __Pyx_INCREF((PyObject *)__pyx_v_doc);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":155
 * cdef public api tree.xmlNs* findOrBuildNodeNsPrefix(
 *     _Document doc, xmlNode* c_node, char* href, char* prefix) except NULL:
 *     if doc is None:             # <<<<<<<<<<<<<<
 *         raise TypeError
 *     return doc._findOrBuildNodeNs(c_node, href, prefix)
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_doc) == Py_None);
  if (__pyx_t_1) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":156
 *     _Document doc, xmlNode* c_node, char* href, char* prefix) except NULL:
 *     if doc is None:
 *         raise TypeError             # <<<<<<<<<<<<<<
 *     return doc._findOrBuildNodeNs(c_node, href, prefix)
 */
    __Pyx_Raise(__pyx_builtin_TypeError, 0, 0);
    {__pyx_filename = __pyx_f[24]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/public-api.pxi":157
 *     if doc is None:
 *         raise TypeError
 *     return doc._findOrBuildNodeNs(c_node, href, prefix)             # <<<<<<<<<<<<<<
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__Document *)__pyx_v_doc->__pyx_vtab)->_findOrBuildNodeNs(__pyx_v_doc, __pyx_v_c_node, __pyx_v_href, __pyx_v_prefix); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[24]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("lxml.etree.findOrBuildNodeNsPrefix");
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF((PyObject *)__pyx_v_doc);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_4lxml_5etree__TempStore __pyx_vtable_4lxml_5etree__TempStore;

static PyObject *__pyx_tp_new_4lxml_5etree__TempStore(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__TempStore *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__TempStore *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__TempStore;
  p->_storage = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__TempStore(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__TempStore *p = (struct __pyx_obj_4lxml_5etree__TempStore *)o;
  Py_XDECREF(((PyObject *)p->_storage));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__TempStore(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__TempStore *p = (struct __pyx_obj_4lxml_5etree__TempStore *)o;
  if (p->_storage) {
    e = (*v)(p->_storage, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__TempStore(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__TempStore *p = (struct __pyx_obj_4lxml_5etree__TempStore *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_storage);
  p->_storage = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__TempStore[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__TempStore = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__TempStore = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__TempStore = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__TempStore = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__TempStore = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._TempStore"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__TempStore), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__TempStore, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__TempStore, /*tp_as_number*/
  &__pyx_tp_as_sequence__TempStore, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__TempStore, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__TempStore, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__TempStore, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__TempStore, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__TempStore, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_10_TempStore___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__TempStore, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext __pyx_vtable_4lxml_5etree__ExceptionContext;

static PyObject *__pyx_tp_new_4lxml_5etree__ExceptionContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ExceptionContext *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ExceptionContext;
  p->_exc_info = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ExceptionContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ExceptionContext *p = (struct __pyx_obj_4lxml_5etree__ExceptionContext *)o;
  Py_XDECREF(p->_exc_info);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ExceptionContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ExceptionContext *p = (struct __pyx_obj_4lxml_5etree__ExceptionContext *)o;
  if (p->_exc_info) {
    e = (*v)(p->_exc_info, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ExceptionContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ExceptionContext *p = (struct __pyx_obj_4lxml_5etree__ExceptionContext *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_exc_info);
  p->_exc_info = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ExceptionContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ExceptionContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ExceptionContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ExceptionContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ExceptionContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ExceptionContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ExceptionContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ExceptionContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ExceptionContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ExceptionContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__ExceptionContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ExceptionContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ExceptionContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ExceptionContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ExceptionContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ExceptionContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ExceptionContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__Document __pyx_vtable_4lxml_5etree__Document;

static PyObject *__pyx_tp_new_4lxml_5etree__Document(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlDocument *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct LxmlDocument *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__Document;
  p->_prefix_tail = Py_None; Py_INCREF(Py_None);
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__Document(PyObject *o) {
  struct LxmlDocument *p = (struct LxmlDocument *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_9_Document___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(p->_prefix_tail);
  Py_XDECREF(((PyObject *)p->_parser));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__Document(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlDocument *p = (struct LxmlDocument *)o;
  if (p->_prefix_tail) {
    e = (*v)(p->_prefix_tail, a); if (e) return e;
  }
  if (p->_parser) {
    e = (*v)(((PyObject*)p->_parser), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__Document(PyObject *o) {
  struct LxmlDocument *p = (struct LxmlDocument *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_prefix_tail);
  p->_prefix_tail = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_parser);
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Document[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Document = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Document = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Document = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Document = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlDocumentType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Document"), /*tp_name*/
  sizeof(struct LxmlDocument), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Document, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__Document, /*tp_as_number*/
  &__pyx_tp_as_sequence__Document, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Document, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Document, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Internal base class to reference a libxml document.\n\n    When instances of this class are garbage collected, the libxml\n    document is cleaned up.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Document, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Document, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Document, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Document, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__Element(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlElement *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct LxmlElement *)o);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  p->_tag = Py_None; Py_INCREF(Py_None);
  p->_attrib = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__Element(PyObject *o) {
  struct LxmlElement *p = (struct LxmlElement *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_8_Element___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_doc));
  Py_XDECREF(p->_tag);
  Py_XDECREF(p->_attrib);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__Element(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlElement *p = (struct LxmlElement *)o;
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  if (p->_tag) {
    e = (*v)(p->_tag, a); if (e) return e;
  }
  if (p->_attrib) {
    e = (*v)(p->_attrib, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__Element(PyObject *o) {
  struct LxmlElement *p = (struct LxmlElement *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tag);
  p->_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_attrib);
  p->_attrib = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__Element(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_4lxml_5etree__Element(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element___setitem__(o, i, v);
  }
  else {
    return __pyx_pf_4lxml_5etree_8_Element___delitem__(o, i);
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_tag(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_3tag___get__(o);
}

static int __pyx_setprop_4lxml_5etree_8_Element_tag(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element_3tag___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_attrib(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_6attrib___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_text(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_4text___get__(o);
}

static int __pyx_setprop_4lxml_5etree_8_Element_text(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element_4text___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_tail(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_4tail___get__(o);
}

static int __pyx_setprop_4lxml_5etree_8_Element_tail(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element_4tail___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_prefix(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_6prefix___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_sourceline(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_10sourceline___get__(o);
}

static int __pyx_setprop_4lxml_5etree_8_Element_sourceline(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element_10sourceline___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_nsmap(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Element_base(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Element_4base___get__(o);
}

static int __pyx_setprop_4lxml_5etree_8_Element_base(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_8_Element_4base___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Element[] = {
  {__Pyx_NAMESTR("_init"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element__init, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element__init)},
  {__Pyx_NAMESTR("__deepcopy__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___deepcopy__, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___deepcopy__)},
  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___copy__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___copy__)},
  {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_set)},
  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_append, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_append)},
  {__Pyx_NAMESTR("addnext"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_addnext, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_addnext)},
  {__Pyx_NAMESTR("addprevious"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_addprevious, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_addprevious)},
  {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_extend, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_extend)},
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_clear, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_clear)},
  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_insert, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_insert)},
  {__Pyx_NAMESTR("remove"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_remove, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_remove)},
  {__Pyx_NAMESTR("replace"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_replace, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_replace)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___repr__)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___getitem__)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___iter__)},
  {__Pyx_NAMESTR("__reversed__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element___reversed__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element___reversed__)},
  {__Pyx_NAMESTR("index"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_index, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_index)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_get)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_keys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_keys)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_values, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_values)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_items, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_items)},
  {__Pyx_NAMESTR("getchildren"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getchildren, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getchildren)},
  {__Pyx_NAMESTR("getparent"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getparent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getparent)},
  {__Pyx_NAMESTR("getnext"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getnext, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getnext)},
  {__Pyx_NAMESTR("getprevious"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getprevious, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getprevious)},
  {__Pyx_NAMESTR("itersiblings"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_itersiblings, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_itersiblings)},
  {__Pyx_NAMESTR("iterancestors"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_iterancestors, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_iterancestors)},
  {__Pyx_NAMESTR("iterdescendants"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_iterdescendants, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_iterdescendants)},
  {__Pyx_NAMESTR("iterchildren"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_iterchildren, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_iterchildren)},
  {__Pyx_NAMESTR("getroottree"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getroottree, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getroottree)},
  {__Pyx_NAMESTR("getiterator"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_getiterator, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_getiterator)},
  {__Pyx_NAMESTR("iter"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_iter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_iter)},
  {__Pyx_NAMESTR("itertext"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_itertext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_itertext)},
  {__Pyx_NAMESTR("makeelement"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_makeelement, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_makeelement)},
  {__Pyx_NAMESTR("find"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_find, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_find)},
  {__Pyx_NAMESTR("findtext"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_findtext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_findtext)},
  {__Pyx_NAMESTR("findall"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_findall, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_findall)},
  {__Pyx_NAMESTR("iterfind"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_iterfind, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_iterfind)},
  {__Pyx_NAMESTR("xpath"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Element_xpath, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8_Element_xpath)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__Element[] = {
  {(char *)"tag", __pyx_getprop_4lxml_5etree_8_Element_tag, __pyx_setprop_4lxml_5etree_8_Element_tag, __Pyx_DOCSTR(__pyx_k_351), 0},
  {(char *)"attrib", __pyx_getprop_4lxml_5etree_8_Element_attrib, 0, __Pyx_DOCSTR(__pyx_k_352), 0},
  {(char *)"text", __pyx_getprop_4lxml_5etree_8_Element_text, __pyx_setprop_4lxml_5etree_8_Element_text, __Pyx_DOCSTR(__pyx_k_353), 0},
  {(char *)"tail", __pyx_getprop_4lxml_5etree_8_Element_tail, __pyx_setprop_4lxml_5etree_8_Element_tail, __Pyx_DOCSTR(__pyx_k_354), 0},
  {(char *)"prefix", __pyx_getprop_4lxml_5etree_8_Element_prefix, 0, __Pyx_DOCSTR(__pyx_k_355), 0},
  {(char *)"sourceline", __pyx_getprop_4lxml_5etree_8_Element_sourceline, __pyx_setprop_4lxml_5etree_8_Element_sourceline, __Pyx_DOCSTR(__pyx_k_356), 0},
  {(char *)"nsmap", __pyx_getprop_4lxml_5etree_8_Element_nsmap, 0, __Pyx_DOCSTR(__pyx_k_357), 0},
  {(char *)"base", __pyx_getprop_4lxml_5etree_8_Element_base, __pyx_setprop_4lxml_5etree_8_Element_base, __Pyx_DOCSTR(__pyx_k_358), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Element = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_4lxml_5etree_8_Element___nonzero__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Element = {
  __pyx_pf_4lxml_5etree_8_Element___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__Element, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pf_4lxml_5etree_8_Element___contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Element = {
  __pyx_pf_4lxml_5etree_8_Element___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_8_Element___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree__Element, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Element = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Element"), /*tp_name*/
  sizeof(struct LxmlElement), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_8_Element___repr__, /*tp_repr*/
  &__pyx_tp_as_number__Element, /*tp_as_number*/
  &__pyx_tp_as_sequence__Element, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Element, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Element, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Element class.\n\n    References a document object and a libxml node.\n\n    By pointing to a Document instance, a reference is kept to\n    _Document as long as there is some pointer to a node in it.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_8_Element___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Element, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__Element, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Element, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseParser __pyx_vtable_4lxml_5etree__BaseParser;

static PyObject *__pyx_tp_new_4lxml_5etree__BaseParser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__BaseParser *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__BaseParser *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__BaseParser;
  p->_class_lookup = ((struct LxmlElementClassLookup *)Py_None); Py_INCREF(Py_None);
  p->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); Py_INCREF(Py_None);
  p->_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); Py_INCREF(Py_None);
  p->_push_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); Py_INCREF(Py_None);
  p->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None); Py_INCREF(Py_None);
  p->_filename = Py_None; Py_INCREF(Py_None);
  p->_target = Py_None; Py_INCREF(Py_None);
  p->_default_encoding = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__BaseParser(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseParser *p = (struct __pyx_obj_4lxml_5etree__BaseParser *)o;
  Py_XDECREF(((PyObject *)p->_class_lookup));
  Py_XDECREF(((PyObject *)p->_resolvers));
  Py_XDECREF(((PyObject *)p->_parser_context));
  Py_XDECREF(((PyObject *)p->_push_parser_context));
  Py_XDECREF(((PyObject *)p->_schema));
  Py_XDECREF(p->_filename);
  Py_XDECREF(p->_target);
  Py_XDECREF(p->_default_encoding);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__BaseParser(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__BaseParser *p = (struct __pyx_obj_4lxml_5etree__BaseParser *)o;
  if (p->_class_lookup) {
    e = (*v)(((PyObject*)p->_class_lookup), a); if (e) return e;
  }
  if (p->_resolvers) {
    e = (*v)(((PyObject*)p->_resolvers), a); if (e) return e;
  }
  if (p->_parser_context) {
    e = (*v)(((PyObject*)p->_parser_context), a); if (e) return e;
  }
  if (p->_push_parser_context) {
    e = (*v)(((PyObject*)p->_push_parser_context), a); if (e) return e;
  }
  if (p->_schema) {
    e = (*v)(((PyObject*)p->_schema), a); if (e) return e;
  }
  if (p->_filename) {
    e = (*v)(p->_filename, a); if (e) return e;
  }
  if (p->_target) {
    e = (*v)(p->_target, a); if (e) return e;
  }
  if (p->_default_encoding) {
    e = (*v)(p->_default_encoding, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__BaseParser(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseParser *p = (struct __pyx_obj_4lxml_5etree__BaseParser *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_class_lookup);
  p->_class_lookup = ((struct LxmlElementClassLookup *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_resolvers);
  p->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_parser_context);
  p->_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_push_parser_context);
  p->_push_parser_context = ((struct __pyx_obj_4lxml_5etree__ParserContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_schema);
  p->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_filename);
  p->_filename = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target);
  p->_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_default_encoding);
  p->_default_encoding = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_11_BaseParser_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_11_BaseParser_resolvers(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_11_BaseParser_version(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__BaseParser[] = {
  {__Pyx_NAMESTR("setElementClassLookup"), (PyCFunction)__pyx_pf_4lxml_5etree_11_BaseParser_setElementClassLookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_BaseParser_setElementClassLookup)},
  {__Pyx_NAMESTR("set_element_class_lookup"), (PyCFunction)__pyx_pf_4lxml_5etree_11_BaseParser_set_element_class_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_BaseParser_set_element_class_lookup)},
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_11_BaseParser_copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_BaseParser_copy)},
  {__Pyx_NAMESTR("makeelement"), (PyCFunction)__pyx_pf_4lxml_5etree_11_BaseParser_makeelement, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_BaseParser_makeelement)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__BaseParser[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_11_BaseParser_error_log, 0, __Pyx_DOCSTR(__pyx_k_359), 0},
  {(char *)"resolvers", __pyx_getprop_4lxml_5etree_11_BaseParser_resolvers, 0, __Pyx_DOCSTR(__pyx_k_360), 0},
  {(char *)"version", __pyx_getprop_4lxml_5etree_11_BaseParser_version, 0, __Pyx_DOCSTR(__pyx_k_361), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__BaseParser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__BaseParser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__BaseParser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__BaseParser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__BaseParser = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._BaseParser"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__BaseParser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseParser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__BaseParser, /*tp_as_number*/
  &__pyx_tp_as_sequence__BaseParser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__BaseParser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__BaseParser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__BaseParser, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__BaseParser, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_11_BaseParser___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__BaseParser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_QName(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_QName *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_QName *)o);
  p->text = Py_None; Py_INCREF(Py_None);
  p->localname = Py_None; Py_INCREF(Py_None);
  p->namespace = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_QName(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_QName *p = (struct __pyx_obj_4lxml_5etree_QName *)o;
  Py_XDECREF(p->text);
  Py_XDECREF(p->localname);
  Py_XDECREF(p->namespace);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_QName(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_QName *p = (struct __pyx_obj_4lxml_5etree_QName *)o;
  if (p->text) {
    e = (*v)(p->text, a); if (e) return e;
  }
  if (p->localname) {
    e = (*v)(p->localname, a); if (e) return e;
  }
  if (p->namespace) {
    e = (*v)(p->namespace, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_QName(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_QName *p = (struct __pyx_obj_4lxml_5etree_QName *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->text);
  p->text = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->localname);
  p->localname = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->namespace);
  p->namespace = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_QName[] = {
  {__Pyx_NAMESTR("__str__"), (PyCFunction)__pyx_pf_4lxml_5etree_5QName___str__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_QName[] = {
  {(char *)"text", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_QName, text), READONLY, 0},
  {(char *)"localname", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_QName, localname), READONLY, 0},
  {(char *)"namespace", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_QName, namespace), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_QName = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_QName = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_QName = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_QName = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_QName = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.QName"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_QName), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_QName, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_QName, /*tp_as_number*/
  &__pyx_tp_as_sequence_QName, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_QName, /*tp_as_mapping*/
  __pyx_pf_4lxml_5etree_5QName___hash__, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pf_4lxml_5etree_5QName___str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_QName, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("QName(text_or_uri, tag=None)\n\n    QName wrapper for qualified XML names.\n\n    Pass a tag name by itself or a namespace URI and a tag name to\n    create a qualified name.\n\n    The ``text`` property holds the qualified name in\n    ``{namespace}tagname`` notation.  The ``namespace`` and\n    ``localname`` properties hold the respective parts of the tag\n    name.\n\n    You can pass QName objects wherever a tag name is expected.  Also,\n    setting Element text from a QName will resolve the namespace\n    prefix and set a qualified text value.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_QName, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_QName, /*tp_clear*/
  __pyx_pf_4lxml_5etree_5QName___richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_QName, /*tp_methods*/
  __pyx_members_4lxml_5etree_QName, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_5QName___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_QName, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__LogEntry __pyx_vtable_4lxml_5etree__LogEntry;

static PyObject *__pyx_tp_new_4lxml_5etree__LogEntry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__LogEntry *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__LogEntry *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__LogEntry;
  p->domain = Py_None; Py_INCREF(Py_None);
  p->type = Py_None; Py_INCREF(Py_None);
  p->level = Py_None; Py_INCREF(Py_None);
  p->line = Py_None; Py_INCREF(Py_None);
  p->column = Py_None; Py_INCREF(Py_None);
  p->message = Py_None; Py_INCREF(Py_None);
  p->filename = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__LogEntry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__LogEntry *p = (struct __pyx_obj_4lxml_5etree__LogEntry *)o;
  Py_XDECREF(p->domain);
  Py_XDECREF(p->type);
  Py_XDECREF(p->level);
  Py_XDECREF(p->line);
  Py_XDECREF(p->column);
  Py_XDECREF(p->message);
  Py_XDECREF(p->filename);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__LogEntry(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__LogEntry *p = (struct __pyx_obj_4lxml_5etree__LogEntry *)o;
  if (p->domain) {
    e = (*v)(p->domain, a); if (e) return e;
  }
  if (p->type) {
    e = (*v)(p->type, a); if (e) return e;
  }
  if (p->level) {
    e = (*v)(p->level, a); if (e) return e;
  }
  if (p->line) {
    e = (*v)(p->line, a); if (e) return e;
  }
  if (p->column) {
    e = (*v)(p->column, a); if (e) return e;
  }
  if (p->message) {
    e = (*v)(p->message, a); if (e) return e;
  }
  if (p->filename) {
    e = (*v)(p->filename, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__LogEntry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__LogEntry *p = (struct __pyx_obj_4lxml_5etree__LogEntry *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->domain);
  p->domain = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->type);
  p->type = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->level);
  p->level = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->line);
  p->line = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->column);
  p->column = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->message);
  p->message = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->filename);
  p->filename = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_9_LogEntry_domain_name(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_9_LogEntry_type_name(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_9_LogEntry_level_name(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__LogEntry[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_9_LogEntry___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree__LogEntry[] = {
  {(char *)"domain", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, domain), READONLY, 0},
  {(char *)"type", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, type), READONLY, 0},
  {(char *)"level", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, level), READONLY, 0},
  {(char *)"line", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, line), READONLY, 0},
  {(char *)"column", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, column), READONLY, 0},
  {(char *)"message", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, message), READONLY, 0},
  {(char *)"filename", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__LogEntry, filename), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__LogEntry[] = {
  {(char *)"domain_name", __pyx_getprop_4lxml_5etree_9_LogEntry_domain_name, 0, 0, 0},
  {(char *)"type_name", __pyx_getprop_4lxml_5etree_9_LogEntry_type_name, 0, 0, 0},
  {(char *)"level_name", __pyx_getprop_4lxml_5etree_9_LogEntry_level_name, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__LogEntry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__LogEntry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__LogEntry = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__LogEntry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__LogEntry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._LogEntry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__LogEntry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__LogEntry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_9_LogEntry___repr__, /*tp_repr*/
  &__pyx_tp_as_number__LogEntry, /*tp_as_number*/
  &__pyx_tp_as_sequence__LogEntry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__LogEntry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__LogEntry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__LogEntry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__LogEntry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__LogEntry, /*tp_methods*/
  __pyx_members_4lxml_5etree__LogEntry, /*tp_members*/
  __pyx_getsets_4lxml_5etree__LogEntry, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__LogEntry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog __pyx_vtable_4lxml_5etree__BaseErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree__BaseErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__BaseErrorLog;
  p->_first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); Py_INCREF(Py_None);
  p->last_error = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__BaseErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *p = (struct __pyx_obj_4lxml_5etree__BaseErrorLog *)o;
  Py_XDECREF(((PyObject *)p->_first_error));
  Py_XDECREF(p->last_error);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__BaseErrorLog(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *p = (struct __pyx_obj_4lxml_5etree__BaseErrorLog *)o;
  if (p->_first_error) {
    e = (*v)(((PyObject*)p->_first_error), a); if (e) return e;
  }
  if (p->last_error) {
    e = (*v)(p->last_error, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__BaseErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseErrorLog *p = (struct __pyx_obj_4lxml_5etree__BaseErrorLog *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_first_error);
  p->_first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->last_error);
  p->last_error = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__BaseErrorLog[] = {
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_13_BaseErrorLog_copy, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_13_BaseErrorLog___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree__BaseErrorLog[] = {
  {(char *)"last_error", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__BaseErrorLog, last_error), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__BaseErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__BaseErrorLog = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__BaseErrorLog = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__BaseErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__BaseErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._BaseErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__BaseErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_13_BaseErrorLog___repr__, /*tp_repr*/
  &__pyx_tp_as_number__BaseErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence__BaseErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__BaseErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__BaseErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__BaseErrorLog, /*tp_methods*/
  __pyx_members_4lxml_5etree__BaseErrorLog, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__BaseErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog __pyx_vtable_4lxml_5etree__ListErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree__ListErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ListErrorLog *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseErrorLog(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ListErrorLog *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog*)__pyx_vtabptr_4lxml_5etree__ListErrorLog;
  p->_entries = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ListErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ListErrorLog *p = (struct __pyx_obj_4lxml_5etree__ListErrorLog *)o;
  Py_XDECREF(((PyObject *)p->_entries));
  __pyx_tp_dealloc_4lxml_5etree__BaseErrorLog(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ListErrorLog(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ListErrorLog *p = (struct __pyx_obj_4lxml_5etree__ListErrorLog *)o;
  e = __pyx_tp_traverse_4lxml_5etree__BaseErrorLog(o, v, a); if (e) return e;
  if (p->_entries) {
    e = (*v)(p->_entries, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ListErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ListErrorLog *p = (struct __pyx_obj_4lxml_5etree__ListErrorLog *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__BaseErrorLog(o);
  tmp = ((PyObject*)p->_entries);
  p->_entries = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__ListErrorLog(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ListErrorLog[] = {
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_copy)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("filter_domains"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_domains, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_domains)},
  {__Pyx_NAMESTR("filter_types"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_types, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_types)},
  {__Pyx_NAMESTR("filter_levels"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_levels, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_levels)},
  {__Pyx_NAMESTR("filter_from_level"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_level, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_level)},
  {__Pyx_NAMESTR("filter_from_fatals"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_fatals, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_fatals)},
  {__Pyx_NAMESTR("filter_from_errors"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_errors, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_errors)},
  {__Pyx_NAMESTR("filter_from_warnings"), (PyCFunction)__pyx_pf_4lxml_5etree_13_ListErrorLog_filter_from_warnings, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13_ListErrorLog_filter_from_warnings)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ListErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___nonzero__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ListErrorLog = {
  __pyx_pf_4lxml_5etree_13_ListErrorLog___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__ListErrorLog, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ListErrorLog = {
  __pyx_pf_4lxml_5etree_13_ListErrorLog___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ListErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ListErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ListErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ListErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ListErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___repr__, /*tp_repr*/
  &__pyx_tp_as_number__ListErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence__ListErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ListErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ListErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Immutable base version of a list based error log."), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ListErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ListErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ListErrorLog, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_13_ListErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ListErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ErrorLog __pyx_vtable_4lxml_5etree__ErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree__ErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ErrorLog *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ListErrorLog(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog*)__pyx_vtabptr_4lxml_5etree__ErrorLog;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ErrorLog[] = {
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_4lxml_5etree_9_ErrorLog_clear, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_9_ErrorLog_copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_9_ErrorLog_copy)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_9_ErrorLog___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("receive"), (PyCFunction)__pyx_pf_4lxml_5etree_9_ErrorLog_receive, METH_O, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ErrorLog = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ErrorLog = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ListErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence__ErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ListErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ListErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_9_ErrorLog___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ErrorLog, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_9_ErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog __pyx_vtable_4lxml_5etree__DomainErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree__DomainErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__DomainErrorLog *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ListErrorLog(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__DomainErrorLog *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog*)__pyx_vtabptr_4lxml_5etree__DomainErrorLog;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__DomainErrorLog[] = {
  {__Pyx_NAMESTR("receive"), (PyCFunction)__pyx_pf_4lxml_5etree_15_DomainErrorLog_receive, METH_O, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__DomainErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__DomainErrorLog = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__DomainErrorLog = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__DomainErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__DomainErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._DomainErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__DomainErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ListErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__DomainErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence__DomainErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__DomainErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__DomainErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ListErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ListErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__DomainErrorLog, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__DomainErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog __pyx_vtable_4lxml_5etree__RotatingErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree__RotatingErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__RotatingErrorLog *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ListErrorLog(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__RotatingErrorLog *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog*)__pyx_vtabptr_4lxml_5etree__RotatingErrorLog;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__RotatingErrorLog[] = {
  {__Pyx_NAMESTR("receive"), (PyCFunction)__pyx_pf_4lxml_5etree_17_RotatingErrorLog_receive, METH_O, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__RotatingErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__RotatingErrorLog = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__RotatingErrorLog = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__RotatingErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__RotatingErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._RotatingErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__RotatingErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ListErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__RotatingErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence__RotatingErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__RotatingErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__RotatingErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ListErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ListErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__RotatingErrorLog, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__RotatingErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_PyErrorLog __pyx_vtable_4lxml_5etree_PyErrorLog;

static PyObject *__pyx_tp_new_4lxml_5etree_PyErrorLog(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_PyErrorLog *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseErrorLog(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog*)__pyx_vtabptr_4lxml_5etree_PyErrorLog;
  p->level_map = Py_None; Py_INCREF(Py_None);
  p->_map_level = Py_None; Py_INCREF(Py_None);
  p->_log = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_PyErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_PyErrorLog *p = (struct __pyx_obj_4lxml_5etree_PyErrorLog *)o;
  Py_XDECREF(p->level_map);
  Py_XDECREF(p->_map_level);
  Py_XDECREF(p->_log);
  __pyx_tp_dealloc_4lxml_5etree__BaseErrorLog(o);
}

static int __pyx_tp_traverse_4lxml_5etree_PyErrorLog(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_PyErrorLog *p = (struct __pyx_obj_4lxml_5etree_PyErrorLog *)o;
  e = __pyx_tp_traverse_4lxml_5etree__BaseErrorLog(o, v, a); if (e) return e;
  if (p->level_map) {
    e = (*v)(p->level_map, a); if (e) return e;
  }
  if (p->_map_level) {
    e = (*v)(p->_map_level, a); if (e) return e;
  }
  if (p->_log) {
    e = (*v)(p->_log, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_PyErrorLog(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_PyErrorLog *p = (struct __pyx_obj_4lxml_5etree_PyErrorLog *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__BaseErrorLog(o);
  tmp = ((PyObject*)p->level_map);
  p->level_map = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_map_level);
  p->_map_level = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_log);
  p->_log = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_PyErrorLog[] = {
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_10PyErrorLog_copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10PyErrorLog_copy)},
  {__Pyx_NAMESTR("log"), (PyCFunction)__pyx_pf_4lxml_5etree_10PyErrorLog_log, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10PyErrorLog_log)},
  {__Pyx_NAMESTR("receive"), (PyCFunction)__pyx_pf_4lxml_5etree_10PyErrorLog_receive, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10PyErrorLog_receive)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_PyErrorLog[] = {
  {(char *)"level_map", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_PyErrorLog, level_map), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_PyErrorLog = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_PyErrorLog = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_PyErrorLog = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_PyErrorLog = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_PyErrorLog = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.PyErrorLog"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_PyErrorLog), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_PyErrorLog, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_PyErrorLog, /*tp_as_number*/
  &__pyx_tp_as_sequence_PyErrorLog, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_PyErrorLog, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_PyErrorLog, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("PyErrorLog(self, logger_name=None)\n    A global error log that connects to the Python stdlib logging package.\n\n    The constructor accepts an optional logger name.\n\n    If you want to change the mapping between libxml2's ErrorLevels and Python\n    logging levels, you can modify the level_map dictionary from a subclass.\n\n    The default mapping is::\n\n            ErrorLevels.WARNING = logging.WARNING\n            ErrorLevels.ERROR   = logging.ERROR\n            ErrorLevels.FATAL   = logging.CRITICAL\n\n    You can also override the method ``receive()`` that takes a LogEntry\n    object and calls ``self.log(log_entry, format_string, arg1, arg2, ...)``\n    with appropriate data.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_PyErrorLog, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_PyErrorLog, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_PyErrorLog, /*tp_methods*/
  __pyx_members_4lxml_5etree_PyErrorLog, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_10PyErrorLog___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_PyErrorLog, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_DocInfo(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_DocInfo *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_DocInfo *)o);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_DocInfo(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_DocInfo *p = (struct __pyx_obj_4lxml_5etree_DocInfo *)o;
  Py_XDECREF(((PyObject *)p->_doc));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_DocInfo(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_DocInfo *p = (struct __pyx_obj_4lxml_5etree_DocInfo *)o;
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_DocInfo(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_DocInfo *p = (struct __pyx_obj_4lxml_5etree_DocInfo *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_root_name(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_public_id(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_9public_id___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_system_url(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_10system_url___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_xml_version(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_encoding(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_standalone(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_URL(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_3URL___get__(o);
}

static int __pyx_setprop_4lxml_5etree_7DocInfo_URL(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_7DocInfo_3URL___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_doctype(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_internalDTD(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7DocInfo_externalDTD(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_DocInfo[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree_DocInfo[] = {
  {(char *)"root_name", __pyx_getprop_4lxml_5etree_7DocInfo_root_name, 0, __Pyx_DOCSTR(__pyx_k_362), 0},
  {(char *)"public_id", __pyx_getprop_4lxml_5etree_7DocInfo_public_id, 0, __Pyx_DOCSTR(__pyx_k_363), 0},
  {(char *)"system_url", __pyx_getprop_4lxml_5etree_7DocInfo_system_url, 0, __Pyx_DOCSTR(__pyx_k_364), 0},
  {(char *)"xml_version", __pyx_getprop_4lxml_5etree_7DocInfo_xml_version, 0, __Pyx_DOCSTR(__pyx_k_365), 0},
  {(char *)"encoding", __pyx_getprop_4lxml_5etree_7DocInfo_encoding, 0, __Pyx_DOCSTR(__pyx_k_366), 0},
  {(char *)"standalone", __pyx_getprop_4lxml_5etree_7DocInfo_standalone, 0, __Pyx_DOCSTR(__pyx_k_367), 0},
  {(char *)"URL", __pyx_getprop_4lxml_5etree_7DocInfo_URL, __pyx_setprop_4lxml_5etree_7DocInfo_URL, __Pyx_DOCSTR(__pyx_k_368), 0},
  {(char *)"doctype", __pyx_getprop_4lxml_5etree_7DocInfo_doctype, 0, __Pyx_DOCSTR(__pyx_k_369), 0},
  {(char *)"internalDTD", __pyx_getprop_4lxml_5etree_7DocInfo_internalDTD, 0, __Pyx_DOCSTR(__pyx_k_370), 0},
  {(char *)"externalDTD", __pyx_getprop_4lxml_5etree_7DocInfo_externalDTD, 0, __Pyx_DOCSTR(__pyx_k_371), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_DocInfo = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_DocInfo = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_DocInfo = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_DocInfo = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_DocInfo = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.DocInfo"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_DocInfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_DocInfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_DocInfo, /*tp_as_number*/
  &__pyx_tp_as_sequence_DocInfo, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_DocInfo, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_DocInfo, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Document information provided by parser and DTD."), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_DocInfo, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_DocInfo, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_DocInfo, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree_DocInfo, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_7DocInfo___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_DocInfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement __pyx_vtable_4lxml_5etree___ContentOnlyElement;

static PyObject *__pyx_tp_new_4lxml_5etree___ContentOnlyElement(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree___ContentOnlyElement *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree___ContentOnlyElement *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
  return o;
}
static PyObject *__pyx_sq_item_4lxml_5etree___ContentOnlyElement(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_4lxml_5etree___ContentOnlyElement(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_4lxml_5etree_20__ContentOnlyElement___setitem__(o, i, v);
  }
  else {
    if (__pyx_ptype_4lxml_5etree__Element->tp_as_mapping && __pyx_ptype_4lxml_5etree__Element->tp_as_mapping->mp_ass_subscript)
      return __pyx_ptype_4lxml_5etree__Element->tp_as_mapping->mp_ass_subscript(o, i, v);
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_20__ContentOnlyElement_attrib(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_20__ContentOnlyElement_text(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(o);
}

static int __pyx_setprop_4lxml_5etree_20__ContentOnlyElement_text(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree___ContentOnlyElement[] = {
  {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_set)},
  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_append, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_append)},
  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_insert, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_insert)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement___getitem__)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_get)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_keys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_keys)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_items, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_items)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_4lxml_5etree_20__ContentOnlyElement_values, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_20__ContentOnlyElement_values)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree___ContentOnlyElement[] = {
  {(char *)"attrib", __pyx_getprop_4lxml_5etree_20__ContentOnlyElement_attrib, 0, 0, 0},
  {(char *)"text", __pyx_getprop_4lxml_5etree_20__ContentOnlyElement_text, __pyx_setprop_4lxml_5etree_20__ContentOnlyElement_text, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number___ContentOnlyElement = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence___ContentOnlyElement = {
  __pyx_pf_4lxml_5etree_20__ContentOnlyElement___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree___ContentOnlyElement, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping___ContentOnlyElement = {
  __pyx_pf_4lxml_5etree_20__ContentOnlyElement___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_20__ContentOnlyElement___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree___ContentOnlyElement, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer___ContentOnlyElement = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree___ContentOnlyElement = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.__ContentOnlyElement"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree___ContentOnlyElement), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number___ContentOnlyElement, /*tp_as_number*/
  &__pyx_tp_as_sequence___ContentOnlyElement, /*tp_as_sequence*/
  &__pyx_tp_as_mapping___ContentOnlyElement, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer___ContentOnlyElement, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree___ContentOnlyElement, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree___ContentOnlyElement, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree___ContentOnlyElement, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__Comment __pyx_vtable_4lxml_5etree__Comment;

static PyObject *__pyx_tp_new_4lxml_5etree__Comment(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__Comment *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__Comment *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree__Comment;
  return o;
}

static PyObject *__pyx_getprop_4lxml_5etree_8_Comment_tag(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8_Comment_3tag___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Comment[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_8_Comment___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__Comment[] = {
  {(char *)"tag", __pyx_getprop_4lxml_5etree_8_Comment_tag, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Comment = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Comment = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Comment = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Comment = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__Comment = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Comment"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__Comment), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_8_Comment___repr__, /*tp_repr*/
  &__pyx_tp_as_number__Comment, /*tp_as_number*/
  &__pyx_tp_as_sequence__Comment, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Comment, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Comment, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Comment, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__Comment, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Comment, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction __pyx_vtable_4lxml_5etree__ProcessingInstruction;

static PyObject *__pyx_tp_new_4lxml_5etree__ProcessingInstruction(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ProcessingInstruction *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ProcessingInstruction *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree__ProcessingInstruction;
  return o;
}

static PyObject *__pyx_getprop_4lxml_5etree_22_ProcessingInstruction_tag(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_22_ProcessingInstruction_target(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(o);
}

static int __pyx_setprop_4lxml_5etree_22_ProcessingInstruction_target(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ProcessingInstruction[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__ProcessingInstruction[] = {
  {(char *)"tag", __pyx_getprop_4lxml_5etree_22_ProcessingInstruction_tag, 0, 0, 0},
  {(char *)"target", __pyx_getprop_4lxml_5etree_22_ProcessingInstruction_target, __pyx_setprop_4lxml_5etree_22_ProcessingInstruction_target, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ProcessingInstruction = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ProcessingInstruction = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ProcessingInstruction = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ProcessingInstruction = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ProcessingInstruction = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ProcessingInstruction"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ProcessingInstruction), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__, /*tp_repr*/
  &__pyx_tp_as_number__ProcessingInstruction, /*tp_as_number*/
  &__pyx_tp_as_sequence__ProcessingInstruction, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ProcessingInstruction, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ProcessingInstruction, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ProcessingInstruction, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__ProcessingInstruction, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ProcessingInstruction, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__Entity __pyx_vtable_4lxml_5etree__Entity;

static PyObject *__pyx_tp_new_4lxml_5etree__Entity(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__Entity *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__Entity *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree__Entity;
  return o;
}

static PyObject *__pyx_getprop_4lxml_5etree_7_Entity_tag(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7_Entity_3tag___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_7_Entity_name(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7_Entity_4name___get__(o);
}

static int __pyx_setprop_4lxml_5etree_7_Entity_name(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_7_Entity_4name___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_4lxml_5etree_7_Entity_text(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_7_Entity_4text___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Entity[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Entity___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__Entity[] = {
  {(char *)"tag", __pyx_getprop_4lxml_5etree_7_Entity_tag, 0, 0, 0},
  {(char *)"name", __pyx_getprop_4lxml_5etree_7_Entity_name, __pyx_setprop_4lxml_5etree_7_Entity_name, 0, 0},
  {(char *)"text", __pyx_getprop_4lxml_5etree_7_Entity_text, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Entity = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Entity = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Entity = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Entity = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__Entity = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Entity"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__Entity), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_7_Entity___repr__, /*tp_repr*/
  &__pyx_tp_as_number__Entity, /*tp_as_number*/
  &__pyx_tp_as_sequence__Entity, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Entity, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Entity, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Entity, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__Entity, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Entity, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementTree __pyx_vtable_4lxml_5etree__ElementTree;

static PyObject *__pyx_tp_new_4lxml_5etree__ElementTree(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlElementTree *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct LxmlElementTree *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ElementTree;
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  p->_context_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ElementTree(PyObject *o) {
  struct LxmlElementTree *p = (struct LxmlElementTree *)o;
  Py_XDECREF(((PyObject *)p->_doc));
  Py_XDECREF(((PyObject *)p->_context_node));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ElementTree(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlElementTree *p = (struct LxmlElementTree *)o;
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  if (p->_context_node) {
    e = (*v)(((PyObject*)p->_context_node), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ElementTree(PyObject *o) {
  struct LxmlElementTree *p = (struct LxmlElementTree *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_context_node);
  p->_context_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_12_ElementTree_docinfo(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_12_ElementTree_parser(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ElementTree[] = {
  {__Pyx_NAMESTR("parse"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_parse, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_parse)},
  {__Pyx_NAMESTR("_setroot"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree__setroot, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree__setroot)},
  {__Pyx_NAMESTR("getroot"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_getroot, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_getroot)},
  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree___copy__, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__deepcopy__"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree___deepcopy__, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_write)},
  {__Pyx_NAMESTR("getpath"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_getpath, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_getpath)},
  {__Pyx_NAMESTR("getiterator"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_getiterator, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_getiterator)},
  {__Pyx_NAMESTR("iter"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_iter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_iter)},
  {__Pyx_NAMESTR("find"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_find, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_find)},
  {__Pyx_NAMESTR("findtext"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_findtext, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_findtext)},
  {__Pyx_NAMESTR("findall"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_findall, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_findall)},
  {__Pyx_NAMESTR("iterfind"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_iterfind, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_iterfind)},
  {__Pyx_NAMESTR("xpath"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_xpath, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_xpath)},
  {__Pyx_NAMESTR("xslt"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_xslt, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_xslt)},
  {__Pyx_NAMESTR("relaxng"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_relaxng, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_relaxng)},
  {__Pyx_NAMESTR("xmlschema"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_xmlschema, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_xmlschema)},
  {__Pyx_NAMESTR("xinclude"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_xinclude, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_xinclude)},
  {__Pyx_NAMESTR("write_c14n"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ElementTree_write_c14n, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_12_ElementTree_write_c14n)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__ElementTree[] = {
  {(char *)"docinfo", __pyx_getprop_4lxml_5etree_12_ElementTree_docinfo, 0, __Pyx_DOCSTR(__pyx_k_372), 0},
  {(char *)"parser", __pyx_getprop_4lxml_5etree_12_ElementTree_parser, 0, __Pyx_DOCSTR(__pyx_k_373), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ElementTree = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ElementTree = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ElementTree = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ElementTree = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementTreeType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ElementTree"), /*tp_name*/
  sizeof(struct LxmlElementTree), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementTree, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ElementTree, /*tp_as_number*/
  &__pyx_tp_as_sequence__ElementTree, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ElementTree, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ElementTree, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementTree, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementTree, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ElementTree, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__ElementTree, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ElementTree, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__Attrib(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__Attrib *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__Attrib *)o);
  p->_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__Attrib(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__Attrib *p = (struct __pyx_obj_4lxml_5etree__Attrib *)o;
  Py_XDECREF(((PyObject *)p->_element));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__Attrib(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__Attrib *p = (struct __pyx_obj_4lxml_5etree__Attrib *)o;
  if (p->_element) {
    e = (*v)(((PyObject*)p->_element), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__Attrib(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__Attrib *p = (struct __pyx_obj_4lxml_5etree__Attrib *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_element);
  p->_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__Attrib(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_4lxml_5etree__Attrib(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_4lxml_5etree_7_Attrib___setitem__(o, i, v);
  }
  else {
    return __pyx_pf_4lxml_5etree_7_Attrib___delitem__(o, i);
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Attrib[] = {
  {__Pyx_NAMESTR("update"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_update, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("pop"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_pop, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_clear, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_keys, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iterkeys"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_iterkeys, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_values, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("itervalues"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_itervalues, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_items, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iteritems"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_iteritems, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("has_key"), (PyCFunction)__pyx_pf_4lxml_5etree_7_Attrib_has_key, METH_O, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Attrib = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_4lxml_5etree_7_Attrib___nonzero__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Attrib = {
  __pyx_pf_4lxml_5etree_7_Attrib___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__Attrib, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pf_4lxml_5etree_7_Attrib___contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Attrib = {
  __pyx_pf_4lxml_5etree_7_Attrib___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_7_Attrib___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree__Attrib, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Attrib = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__Attrib = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Attrib"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__Attrib), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Attrib, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_7_Attrib___repr__, /*tp_repr*/
  &__pyx_tp_as_number__Attrib, /*tp_as_number*/
  &__pyx_tp_as_sequence__Attrib, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Attrib, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Attrib, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("A dict-like proxy for the ``Element.attrib`` property.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Attrib, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Attrib, /*tp_clear*/
  __pyx_pf_4lxml_5etree_7_Attrib___richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_7_Attrib___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Attrib, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_7_Attrib___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Attrib, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__AttribIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__AttribIterator *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)o);
  p->_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__AttribIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__AttribIterator *p = (struct __pyx_obj_4lxml_5etree__AttribIterator *)o;
  Py_XDECREF(((PyObject *)p->_node));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__AttribIterator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__AttribIterator *p = (struct __pyx_obj_4lxml_5etree__AttribIterator *)o;
  if (p->_node) {
    e = (*v)(((PyObject*)p->_node), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__AttribIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__AttribIterator *p = (struct __pyx_obj_4lxml_5etree__AttribIterator *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_node);
  p->_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__AttribIterator[] = {
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_15_AttribIterator___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_15_AttribIterator___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__AttribIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__AttribIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__AttribIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__AttribIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__AttribIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._AttribIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__AttribIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__AttribIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__AttribIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence__AttribIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__AttribIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__AttribIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Attribute iterator - for internal use only!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__AttribIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__AttribIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_15_AttribIterator___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_15_AttribIterator___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__AttribIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__AttribIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher __pyx_vtable_4lxml_5etree__ElementTagMatcher;

static PyObject *__pyx_tp_new_4lxml_5etree__ElementTagMatcher(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlElementTagMatcher *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct LxmlElementTagMatcher *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ElementTagMatcher;
  p->_pystrings = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ElementTagMatcher(PyObject *o) {
  struct LxmlElementTagMatcher *p = (struct LxmlElementTagMatcher *)o;
  Py_XDECREF(p->_pystrings);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ElementTagMatcher(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlElementTagMatcher *p = (struct LxmlElementTagMatcher *)o;
  if (p->_pystrings) {
    e = (*v)(p->_pystrings, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ElementTagMatcher(PyObject *o) {
  struct LxmlElementTagMatcher *p = (struct LxmlElementTagMatcher *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_pystrings);
  p->_pystrings = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ElementTagMatcher[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ElementTagMatcher = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ElementTagMatcher = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ElementTagMatcher = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ElementTagMatcher = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementTagMatcherType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ElementTagMatcher"), /*tp_name*/
  sizeof(struct LxmlElementTagMatcher), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementTagMatcher, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ElementTagMatcher, /*tp_as_number*/
  &__pyx_tp_as_sequence__ElementTagMatcher, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ElementTagMatcher, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ElementTagMatcher, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementTagMatcher, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementTagMatcher, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ElementTagMatcher, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ElementTagMatcher, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ElementIterator __pyx_vtable_4lxml_5etree__ElementIterator;

static PyObject *__pyx_tp_new_4lxml_5etree__ElementIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlElementIterator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementTagMatcher(t, a, k);
  if (!o) return 0;
  p = ((struct LxmlElementIterator *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher*)__pyx_vtabptr_4lxml_5etree__ElementIterator;
  p->_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ElementIterator(PyObject *o) {
  struct LxmlElementIterator *p = (struct LxmlElementIterator *)o;
  Py_XDECREF(((PyObject *)p->_node));
  __pyx_tp_dealloc_4lxml_5etree__ElementTagMatcher(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ElementIterator(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlElementIterator *p = (struct LxmlElementIterator *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ElementTagMatcher(o, v, a); if (e) return e;
  if (p->_node) {
    e = (*v)(((PyObject*)p->_node), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ElementIterator(PyObject *o) {
  struct LxmlElementIterator *p = (struct LxmlElementIterator *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ElementTagMatcher(o);
  tmp = ((PyObject*)p->_node);
  p->_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ElementIterator[] = {
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_16_ElementIterator___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_16_ElementIterator___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ElementIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ElementIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ElementIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ElementIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementIteratorType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ElementIterator"), /*tp_name*/
  sizeof(struct LxmlElementIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ElementIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence__ElementIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ElementIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ElementIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_16_ElementIterator___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_16_ElementIterator___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ElementIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ElementIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator __pyx_vtable_4lxml_5etree_ElementChildIterator;

static PyObject *__pyx_tp_new_4lxml_5etree_ElementChildIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ElementChildIterator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementIterator(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher*)__pyx_vtabptr_4lxml_5etree_ElementChildIterator;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementChildIterator[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementChildIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementChildIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementChildIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementChildIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ElementChildIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementChildIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ElementChildIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementChildIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementChildIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementChildIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementChildIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementChildIterator(self, node, tag=None, reversed=False)\n    Iterates over the children of an element.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementChildIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_20ElementChildIterator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementChildIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator __pyx_vtable_4lxml_5etree_SiblingsIterator;

static PyObject *__pyx_tp_new_4lxml_5etree_SiblingsIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_SiblingsIterator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementIterator(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher*)__pyx_vtabptr_4lxml_5etree_SiblingsIterator;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_SiblingsIterator[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_SiblingsIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_SiblingsIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_SiblingsIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_SiblingsIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_SiblingsIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.SiblingsIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_SiblingsIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_SiblingsIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence_SiblingsIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_SiblingsIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_SiblingsIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("SiblingsIterator(self, node, tag=None, preceding=False)\n    Iterates over the siblings of an element.\n\n    You can pass the boolean keyword ``preceding`` to specify the direction.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_SiblingsIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_16SiblingsIterator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_SiblingsIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator __pyx_vtable_4lxml_5etree_AncestorsIterator;

static PyObject *__pyx_tp_new_4lxml_5etree_AncestorsIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_AncestorsIterator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementIterator(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_AncestorsIterator *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher*)__pyx_vtabptr_4lxml_5etree_AncestorsIterator;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_AncestorsIterator[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AncestorsIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_AncestorsIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AncestorsIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AncestorsIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_AncestorsIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.AncestorsIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_AncestorsIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AncestorsIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence_AncestorsIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AncestorsIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AncestorsIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("AncestorsIterator(self, node, tag=None)\n    Iterates over the ancestors of an element (from parent to parent).\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_AncestorsIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17AncestorsIterator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_AncestorsIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator;

static PyObject *__pyx_tp_new_4lxml_5etree_ElementDepthFirstIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementTagMatcher(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher*)__pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator;
  p->_next_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  p->_top_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_ElementDepthFirstIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *p = (struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)o;
  Py_XDECREF(((PyObject *)p->_next_node));
  Py_XDECREF(((PyObject *)p->_top_node));
  __pyx_tp_dealloc_4lxml_5etree__ElementTagMatcher(o);
}

static int __pyx_tp_traverse_4lxml_5etree_ElementDepthFirstIterator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *p = (struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ElementTagMatcher(o, v, a); if (e) return e;
  if (p->_next_node) {
    e = (*v)(((PyObject*)p->_next_node), a); if (e) return e;
  }
  if (p->_top_node) {
    e = (*v)(((PyObject*)p->_top_node), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_ElementDepthFirstIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *p = (struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ElementTagMatcher(o);
  tmp = ((PyObject*)p->_next_node);
  p->_next_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_top_node);
  p->_top_node = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementDepthFirstIterator[] = {
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementDepthFirstIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementDepthFirstIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementDepthFirstIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementDepthFirstIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ElementDepthFirstIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementDepthFirstIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_ElementDepthFirstIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementDepthFirstIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementDepthFirstIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementDepthFirstIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementDepthFirstIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementDepthFirstIterator(self, node, tag=None, inclusive=True)\n    Iterates over an element and its sub-elements in document order (depth\n    first pre-order).\n\n    Note that this also includes comments, entities and processing\n    instructions.  To filter them out, check if the ``tag`` property\n    of the returned element is a string (i.e. not None and not a\n    factory function), or pass the ``Element`` factory for the ``tag``\n    keyword.\n\n    If the optional ``tag`` argument is not None, the iterator returns only\n    the elements that match the respective name and namespace.\n\n    The optional boolean argument 'inclusive' defaults to True and can be set\n    to False to exclude the start element itself.\n\n    Note that the behaviour of this iterator is completely undefined if the\n    tree it traverses is modified during iteration.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_ElementDepthFirstIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_ElementDepthFirstIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementDepthFirstIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementDepthFirstIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_ElementTextIterator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ElementTextIterator *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)o);
  p->_nextEvent = Py_None; Py_INCREF(Py_None);
  p->_start_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_ElementTextIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementTextIterator *p = (struct __pyx_obj_4lxml_5etree_ElementTextIterator *)o;
  Py_XDECREF(p->_nextEvent);
  Py_XDECREF(((PyObject *)p->_start_element));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_ElementTextIterator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_ElementTextIterator *p = (struct __pyx_obj_4lxml_5etree_ElementTextIterator *)o;
  if (p->_nextEvent) {
    e = (*v)(p->_nextEvent, a); if (e) return e;
  }
  if (p->_start_element) {
    e = (*v)(((PyObject*)p->_start_element), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_ElementTextIterator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementTextIterator *p = (struct __pyx_obj_4lxml_5etree_ElementTextIterator *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_nextEvent);
  p->_nextEvent = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_start_element);
  p->_start_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementTextIterator[] = {
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_19ElementTextIterator___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_19ElementTextIterator___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementTextIterator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementTextIterator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementTextIterator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementTextIterator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ElementTextIterator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementTextIterator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ElementTextIterator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_ElementTextIterator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementTextIterator, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementTextIterator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementTextIterator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementTextIterator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementTextIterator(self, element, tag=None, with_tail=True)\n    Iterates over the text content of a subtree.\n\n    You can pass the ``tag`` keyword argument to restrict text content to a\n    specific tag name.\n\n    You can set the ``with_tail`` keyword argument to ``False`` to skip over\n    tail text.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_ElementTextIterator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_ElementTextIterator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_19ElementTextIterator___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_19ElementTextIterator___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementTextIterator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_19ElementTextIterator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementTextIterator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_CDATA(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_CDATA *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_CDATA *)o);
  p->_utf8_data = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_CDATA(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_CDATA *p = (struct __pyx_obj_4lxml_5etree_CDATA *)o;
  Py_XDECREF(p->_utf8_data);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_CDATA(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_CDATA *p = (struct __pyx_obj_4lxml_5etree_CDATA *)o;
  if (p->_utf8_data) {
    e = (*v)(p->_utf8_data, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_CDATA(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_CDATA *p = (struct __pyx_obj_4lxml_5etree_CDATA *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_utf8_data);
  p->_utf8_data = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_CDATA[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_CDATA = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_CDATA = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_CDATA = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_CDATA = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_CDATA = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.CDATA"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_CDATA), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_CDATA, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_CDATA, /*tp_as_number*/
  &__pyx_tp_as_sequence_CDATA, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_CDATA, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_CDATA, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("CDATA(data)\n\n    CDATA factory.  This factory creates an opaque data object that\n    can be used to set Element text.  The usual way to use it is::\n\n        >>> from lxml import etree\n        >>> el = etree.Element('content')\n        >>> el.text = etree.CDATA('a string')\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_CDATA, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_CDATA, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_CDATA, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_5CDATA___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_CDATA, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy __pyx_vtable_4lxml_5etree__ReadOnlyElementProxy;

static PyObject *__pyx_tp_new_4lxml_5etree__ReadOnlyElementProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ReadOnlyElementProxy;
  p->_source_proxy = Py_None; Py_INCREF(Py_None);
  p->_dependent_proxies = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ReadOnlyElementProxy(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *p = (struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)o;
  Py_XDECREF(p->_source_proxy);
  Py_XDECREF(((PyObject *)p->_dependent_proxies));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ReadOnlyElementProxy(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *p = (struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)o;
  if (p->_source_proxy) {
    e = (*v)(p->_source_proxy, a); if (e) return e;
  }
  if (p->_dependent_proxies) {
    e = (*v)(p->_dependent_proxies, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ReadOnlyElementProxy(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *p = (struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_source_proxy);
  p->_source_proxy = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_dependent_proxies);
  p->_dependent_proxies = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__ReadOnlyElementProxy(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_tag(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_3tag___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_text(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4text___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_tail(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_4tail___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_attrib(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_prefix(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_sourceline(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_10sourceline___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ReadOnlyElementProxy[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___getitem__)},
  {__Pyx_NAMESTR("__deepcopy__"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___deepcopy__, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___deepcopy__)},
  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___copy__, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy___copy__)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iterchildren"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_iterchildren, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_iterchildren)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_get)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_keys, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_keys)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_values, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_values)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_items, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_items)},
  {__Pyx_NAMESTR("getchildren"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getchildren, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getchildren)},
  {__Pyx_NAMESTR("getparent"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getparent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getparent)},
  {__Pyx_NAMESTR("getnext"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getnext, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getnext)},
  {__Pyx_NAMESTR("getprevious"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_getprevious, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21_ReadOnlyElementProxy_getprevious)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__ReadOnlyElementProxy[] = {
  {(char *)"tag", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_tag, 0, __Pyx_DOCSTR(__pyx_k_351), 0},
  {(char *)"text", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_text, 0, __Pyx_DOCSTR(__pyx_k_353), 0},
  {(char *)"tail", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_tail, 0, __Pyx_DOCSTR(__pyx_k_354), 0},
  {(char *)"attrib", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_attrib, 0, 0, 0},
  {(char *)"prefix", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_prefix, 0, __Pyx_DOCSTR(__pyx_k_355), 0},
  {(char *)"sourceline", __pyx_getprop_4lxml_5etree_21_ReadOnlyElementProxy_sourceline, 0, __Pyx_DOCSTR(__pyx_k_356), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ReadOnlyElementProxy = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___nonzero__, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ReadOnlyElementProxy = {
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__ReadOnlyElementProxy, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ReadOnlyElementProxy = {
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ReadOnlyElementProxy = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ReadOnlyElementProxy = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ReadOnlyElementProxy"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ReadOnlyElementProxy, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___repr__, /*tp_repr*/
  &__pyx_tp_as_number__ReadOnlyElementProxy, /*tp_as_number*/
  &__pyx_tp_as_sequence__ReadOnlyElementProxy, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ReadOnlyElementProxy, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ReadOnlyElementProxy, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("The main read-only Element proxy class (for internal use only!)."), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ReadOnlyElementProxy, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ReadOnlyElementProxy, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ReadOnlyElementProxy, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__ReadOnlyElementProxy, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ReadOnlyElementProxy, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__AppendOnlyElementProxy __pyx_vtable_4lxml_5etree__AppendOnlyElementProxy;

static PyObject *__pyx_tp_new_4lxml_5etree__AppendOnlyElementProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ReadOnlyElementProxy(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyElementProxy*)__pyx_vtabptr_4lxml_5etree__AppendOnlyElementProxy;
  return o;
}

static PyObject *__pyx_getprop_4lxml_5etree_23_AppendOnlyElementProxy_text(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___get__(o);
}

static int __pyx_setprop_4lxml_5etree_23_AppendOnlyElementProxy_text(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_4text___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__AppendOnlyElementProxy[] = {
  {__Pyx_NAMESTR("append"), (PyCFunction)__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_append, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_23_AppendOnlyElementProxy_append)},
  {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pf_4lxml_5etree_23_AppendOnlyElementProxy_extend, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_23_AppendOnlyElementProxy_extend)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__AppendOnlyElementProxy[] = {
  {(char *)"text", __pyx_getprop_4lxml_5etree_23_AppendOnlyElementProxy_text, __pyx_setprop_4lxml_5etree_23_AppendOnlyElementProxy_text, __Pyx_DOCSTR(__pyx_k_374), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__AppendOnlyElementProxy = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__AppendOnlyElementProxy = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__AppendOnlyElementProxy = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__AppendOnlyElementProxy = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__AppendOnlyElementProxy = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._AppendOnlyElementProxy"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ReadOnlyElementProxy, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__AppendOnlyElementProxy, /*tp_as_number*/
  &__pyx_tp_as_sequence__AppendOnlyElementProxy, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__AppendOnlyElementProxy, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__AppendOnlyElementProxy, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("A read-only element that allows adding children and changing the\n    text content (i.e. everything that adds to the subtree).\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ReadOnlyElementProxy, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ReadOnlyElementProxy, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__AppendOnlyElementProxy, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__AppendOnlyElementProxy, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__AppendOnlyElementProxy, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_ElementBase(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementBase[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementBase = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementBase = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementBase = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementBase = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementBaseType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementBase"), /*tp_name*/
  sizeof(struct LxmlElementBase), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementBase, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementBase, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementBase, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementBase, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementBase(*children, attrib=None, nsmap=None, **_extra)\n\n    The public Element class.  All custom Element classes must inherit\n    from this one.  To create an Element, use the `Element()` factory.\n\n    BIG FAT WARNING: Subclasses *must not* override __init__ or\n    __new__ as it is absolutely undefined when these objects will be\n    created or destroyed.  All persistent state of Elements must be\n    stored in the underlying XML.  If you really need to initialize\n    the object after creation, you can implement an ``_init(self)``\n    method that will be called directly after object creation.\n\n    Subclasses of this class can be instantiated to create a new\n    Element.  By default, the tag name will be the class name and the\n    namespace will be empty.  You can modify this with the following\n    class attributes:\n\n    * TAG - the tag name, possibly containing a namespace in Clark\n      notation\n\n    * NAMESPACE - the default namespace URI, unless provided as part\n      of the TAG attribute.\n\n    * HTML - flag if the class is an HTML tag, as opposed to an XML\n      tag.  This only applies to un-namespaced tags and defaults to\n      false (i.e. XML).\n\n    * PARSER - the parser that provides the configuration for the\n      newly created document.  Providing an HTML parser here will\n      default to creating an HTML element.\n\n    In user code, the latter three are commonly inherited in class\n    hierarchies that implement a common namespace.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementBase, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_11ElementBase___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementBase, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_CommentBase __pyx_vtable_4lxml_5etree_CommentBase;

static PyObject *__pyx_tp_new_4lxml_5etree_CommentBase(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_CommentBase *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_CommentBase *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree_CommentBase;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_CommentBase[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_CommentBase = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_CommentBase = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_CommentBase = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_CommentBase = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_CommentBase = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.CommentBase"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_CommentBase), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_CommentBase, /*tp_as_number*/
  &__pyx_tp_as_sequence_CommentBase, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_CommentBase, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_CommentBase, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("All custom Comment classes must inherit from this one.\n\n    Note that you cannot (and must not) instantiate this class or its\n    subclasses.\n\n    Subclasses *must not* override __init__ or __new__ as it is\n    absolutely undefined when these objects will be created or\n    destroyed.  All persistent state of Comments must be stored in the\n    underlying XML.  If you really need to initialize the object after\n    creation, you can implement an ``_init(self)`` method that will be\n    called after object creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_CommentBase, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_CommentBase, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_PIBase __pyx_vtable_4lxml_5etree_PIBase;

static PyObject *__pyx_tp_new_4lxml_5etree_PIBase(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_PIBase *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_PIBase *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree_PIBase;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_PIBase[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_PIBase = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_PIBase = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_PIBase = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_PIBase = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_PIBase = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.PIBase"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_PIBase), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_PIBase, /*tp_as_number*/
  &__pyx_tp_as_sequence_PIBase, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_PIBase, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_PIBase, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("All custom Processing Instruction classes must inherit from this one.\n\n    Note that you cannot (and must not) instantiate this class or its\n    subclasses.\n\n    Subclasses *must not* override __init__ or __new__ as it is\n    absolutely undefined when these objects will be created or\n    destroyed.  All persistent state of PIs must be stored in the\n    underlying XML.  If you really need to initialize the object after\n    creation, you can implement an ``_init(self)`` method that will be\n    called after object creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_PIBase, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_PIBase, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_EntityBase __pyx_vtable_4lxml_5etree_EntityBase;

static PyObject *__pyx_tp_new_4lxml_5etree_EntityBase(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_EntityBase *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_EntityBase *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree_EntityBase;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_EntityBase[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_EntityBase = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_EntityBase = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_EntityBase = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_EntityBase = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_EntityBase = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.EntityBase"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_EntityBase), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_EntityBase, /*tp_as_number*/
  &__pyx_tp_as_sequence_EntityBase, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_EntityBase, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_EntityBase, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("All custom Entity classes must inherit from this one.\n\n    Note that you cannot (and must not) instantiate this class or its\n    subclasses.\n\n    Subclasses *must not* override __init__ or __new__ as it is\n    absolutely undefined when these objects will be created or\n    destroyed.  All persistent state of Entities must be stored in the\n    underlying XML.  If you really need to initialize the object after\n    creation, you can implement an ``_init(self)`` method that will be\n    called after object creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_EntityBase, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_EntityBase, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_ElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  if (__pyx_pf_4lxml_5etree_18ElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_ElementClassLookup(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementClassLookup[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlElementClassLookupType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementClassLookup"), /*tp_name*/
  sizeof(struct LxmlElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_ElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("ElementClassLookup(self)\n    Superclass of Element class lookups.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup __pyx_vtable_4lxml_5etree_FallbackElementClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct LxmlFallbackElementClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_ElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct LxmlFallbackElementClassLookup *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  p->fallback = ((struct LxmlElementClassLookup *)Py_None); Py_INCREF(Py_None);
  if (__pyx_pf_4lxml_5etree_26FallbackElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup(PyObject *o) {
  struct LxmlFallbackElementClassLookup *p = (struct LxmlFallbackElementClassLookup *)o;
  Py_XDECREF(((PyObject *)p->fallback));
  __pyx_tp_dealloc_4lxml_5etree_ElementClassLookup(o);
}

static int __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup(PyObject *o, visitproc v, void *a) {
  int e;
  struct LxmlFallbackElementClassLookup *p = (struct LxmlFallbackElementClassLookup *)o;
  if (__pyx_ptype_4lxml_5etree_ElementClassLookup->tp_traverse) {
    e = __pyx_ptype_4lxml_5etree_ElementClassLookup->tp_traverse(o, v, a); if (e) return e;
  }
  if (p->fallback) {
    e = (*v)(((PyObject*)p->fallback), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup(PyObject *o) {
  struct LxmlFallbackElementClassLookup *p = (struct LxmlFallbackElementClassLookup *)o;
  PyObject* tmp;
  if (__pyx_ptype_4lxml_5etree_ElementClassLookup->tp_clear) {
    __pyx_ptype_4lxml_5etree_ElementClassLookup->tp_clear(o);
  }
  tmp = ((PyObject*)p->fallback);
  p->fallback = ((struct LxmlElementClassLookup *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_FallbackElementClassLookup[] = {
  {__Pyx_NAMESTR("set_fallback"), (PyCFunction)__pyx_pf_4lxml_5etree_26FallbackElementClassLookup_set_fallback, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_26FallbackElementClassLookup_set_fallback)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_FallbackElementClassLookup[] = {
  {(char *)"fallback", T_OBJECT, offsetof(struct LxmlFallbackElementClassLookup, fallback), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_FallbackElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_FallbackElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_FallbackElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_FallbackElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

DL_EXPORT(PyTypeObject) LxmlFallbackElementClassLookupType = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.FallbackElementClassLookup"), /*tp_name*/
  sizeof(struct LxmlFallbackElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_FallbackElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_FallbackElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_FallbackElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_FallbackElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("FallbackElementClassLookup(self, fallback=None)\n\n    Superclass of Element class lookups with additional fallback.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_FallbackElementClassLookup, /*tp_methods*/
  __pyx_members_4lxml_5etree_FallbackElementClassLookup, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_26FallbackElementClassLookup___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_ElementDefaultClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_ElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)o);
  p->element_class = Py_None; Py_INCREF(Py_None);
  p->comment_class = Py_None; Py_INCREF(Py_None);
  p->pi_class = Py_None; Py_INCREF(Py_None);
  p->entity_class = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_ElementDefaultClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)o;
  Py_XDECREF(p->element_class);
  Py_XDECREF(p->comment_class);
  Py_XDECREF(p->pi_class);
  Py_XDECREF(p->entity_class);
  __pyx_tp_dealloc_4lxml_5etree_ElementClassLookup(o);
}

static int __pyx_tp_traverse_4lxml_5etree_ElementDefaultClassLookup(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)o;
  if (__pyx_ptype_4lxml_5etree_ElementClassLookup->tp_traverse) {
    e = __pyx_ptype_4lxml_5etree_ElementClassLookup->tp_traverse(o, v, a); if (e) return e;
  }
  if (p->element_class) {
    e = (*v)(p->element_class, a); if (e) return e;
  }
  if (p->comment_class) {
    e = (*v)(p->comment_class, a); if (e) return e;
  }
  if (p->pi_class) {
    e = (*v)(p->pi_class, a); if (e) return e;
  }
  if (p->entity_class) {
    e = (*v)(p->entity_class, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_ElementDefaultClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup *)o;
  PyObject* tmp;
  if (__pyx_ptype_4lxml_5etree_ElementClassLookup->tp_clear) {
    __pyx_ptype_4lxml_5etree_ElementClassLookup->tp_clear(o);
  }
  tmp = ((PyObject*)p->element_class);
  p->element_class = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->comment_class);
  p->comment_class = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->pi_class);
  p->pi_class = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->entity_class);
  p->entity_class = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementDefaultClassLookup[] = {
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_ElementDefaultClassLookup[] = {
  {(char *)"element_class", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup, element_class), READONLY, 0},
  {(char *)"comment_class", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup, comment_class), READONLY, 0},
  {(char *)"pi_class", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup, pi_class), READONLY, 0},
  {(char *)"entity_class", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup, entity_class), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementDefaultClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementDefaultClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementDefaultClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementDefaultClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ElementDefaultClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementDefaultClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ElementDefaultClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_ElementDefaultClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementDefaultClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementDefaultClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementDefaultClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementDefaultClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementDefaultClassLookup(self, element=None, comment=None, pi=None, entity=None)\n    Element class lookup scheme that always returns the default Element\n    class.\n\n    The keyword arguments ``element``, ``comment``, ``pi`` and ``entity``\n    accept the respective Element classes.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_ElementDefaultClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_ElementDefaultClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementDefaultClassLookup, /*tp_methods*/
  __pyx_members_4lxml_5etree_ElementDefaultClassLookup, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_25ElementDefaultClassLookup___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementDefaultClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_AttributeBasedElementClassLookup __pyx_vtable_4lxml_5etree_AttributeBasedElementClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_AttributeBasedElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup*)__pyx_vtabptr_4lxml_5etree_AttributeBasedElementClassLookup;
  p->_class_mapping = Py_None; Py_INCREF(Py_None);
  p->_pytag = Py_None; Py_INCREF(Py_None);
  if (__pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_AttributeBasedElementClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *p = (struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)o;
  Py_XDECREF(p->_class_mapping);
  Py_XDECREF(p->_pytag);
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup(o);
}

static int __pyx_tp_traverse_4lxml_5etree_AttributeBasedElementClassLookup(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *p = (struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)o;
  e = __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup(o, v, a); if (e) return e;
  if (p->_class_mapping) {
    e = (*v)(p->_class_mapping, a); if (e) return e;
  }
  if (p->_pytag) {
    e = (*v)(p->_pytag, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_AttributeBasedElementClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *p = (struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup(o);
  tmp = ((PyObject*)p->_class_mapping);
  p->_class_mapping = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pytag);
  p->_pytag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_AttributeBasedElementClassLookup[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AttributeBasedElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_AttributeBasedElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AttributeBasedElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AttributeBasedElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_AttributeBasedElementClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.AttributeBasedElementClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_AttributeBasedElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_AttributeBasedElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AttributeBasedElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_AttributeBasedElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AttributeBasedElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AttributeBasedElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("AttributeBasedElementClassLookup(self, attribute_name, class_mapping, fallback=None)\n    Checks an attribute of an Element and looks up the value in a\n    class dictionary.\n\n    Arguments:\n      - attribute name - '{ns}name' style string\n      - class mapping  - Python dict mapping attribute values to Element classes\n      - fallback       - optional fallback lookup mechanism\n\n    A None key in the class mapping will be checked if the attribute is\n    missing.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_AttributeBasedElementClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_AttributeBasedElementClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_AttributeBasedElementClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_32AttributeBasedElementClassLookup___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_AttributeBasedElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ParserBasedElementClassLookup __pyx_vtable_4lxml_5etree_ParserBasedElementClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_ParserBasedElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup*)__pyx_vtabptr_4lxml_5etree_ParserBasedElementClassLookup;
  if (__pyx_pf_4lxml_5etree_29ParserBasedElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ParserBasedElementClassLookup[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ParserBasedElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ParserBasedElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ParserBasedElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ParserBasedElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ParserBasedElementClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ParserBasedElementClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ParserBasedElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_ParserBasedElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ParserBasedElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ParserBasedElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ParserBasedElementClassLookup(self, fallback=None)\n    Element class lookup based on the XML parser.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ParserBasedElementClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ParserBasedElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_CustomElementClassLookup __pyx_vtable_4lxml_5etree_CustomElementClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_CustomElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_CustomElementClassLookup *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup*)__pyx_vtabptr_4lxml_5etree_CustomElementClassLookup;
  if (__pyx_pf_4lxml_5etree_24CustomElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_CustomElementClassLookup[] = {
  {__Pyx_NAMESTR("lookup"), (PyCFunction)__pyx_pf_4lxml_5etree_24CustomElementClassLookup_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_24CustomElementClassLookup_lookup)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_CustomElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_CustomElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_CustomElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_CustomElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_CustomElementClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.CustomElementClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_CustomElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_CustomElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_CustomElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_CustomElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_CustomElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("CustomElementClassLookup(self, fallback=None)\n    Element class lookup based on a subclass method.\n\n    You can inherit from this class and override the method::\n\n        lookup(self, type, doc, namespace, name)\n\n    to lookup the element class for a node. Arguments of the method:\n    * type:      one of 'element', 'comment', 'PI', 'entity'\n    * doc:       document that the node is in\n    * namespace: namespace URI of the node (or None for comments/PIs/entities)\n    * name:      name of the element/entity, None for comments, target for PIs\n\n    If you return None from this method, the fallback will be called.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_CustomElementClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_CustomElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_PythonElementClassLookup __pyx_vtable_4lxml_5etree_PythonElementClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_PythonElementClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_PythonElementClassLookup *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup*)__pyx_vtabptr_4lxml_5etree_PythonElementClassLookup;
  if (__pyx_pf_4lxml_5etree_24PythonElementClassLookup___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_PythonElementClassLookup[] = {
  {__Pyx_NAMESTR("lookup"), (PyCFunction)__pyx_pf_4lxml_5etree_24PythonElementClassLookup_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_24PythonElementClassLookup_lookup)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_PythonElementClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_PythonElementClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_PythonElementClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_PythonElementClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_PythonElementClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.PythonElementClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_PythonElementClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_PythonElementClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_PythonElementClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_PythonElementClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_PythonElementClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("PythonElementClassLookup(self, fallback=None)\n    Element class lookup based on a subclass method.\n\n    This class lookup scheme allows access to the entire XML tree in\n    read-only mode.  To use it, re-implement the ``lookup(self, doc,\n    root)`` method in a subclass::\n\n        >>> from lxml import etree, pyclasslookup\n        >>>\n        >>> class MyElementClass(etree.ElementBase):\n        ...     honkey = True\n        ...\n        >>> class MyLookup(pyclasslookup.PythonElementClassLookup):\n        ...     def lookup(self, doc, root):\n        ...         if root.tag == \"sometag\":\n        ...             return MyElementClass\n        ...         else:\n        ...             for child in root:\n        ...                 if child.tag == \"someothertag\":\n        ...                     return MyElementClass\n        ...         # delegate to default\n        ...         return None\n\n    If you return None from this method, the fallback will be called.\n\n    The first argument is the opaque document instance that contains\n    the Element.  The second argument is a lightweight Element proxy\n    implementation that is only valid during the lookup.  Do not try\n    to keep a reference to it.  Once the lookup is done, the proxy\n    will be invalid.\n\n    Also, you cannot wrap such a read-only Element in an ElementTree,\n    and you must take care not to keep a reference to them outside of\n    the `lookup()` method.\n\n    Note that the API of the Element objects is not complete.  It is\n    purely read-only and does not support all features of the normal\n    `lxml.etree` API (such as XPath, extended slicing or some\n    iteration methods).\n\n    See http://codespeak.net/lxml/element_classes.html\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_PythonElementClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_PythonElementClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry __pyx_vtable_4lxml_5etree__NamespaceRegistry;

static PyObject *__pyx_tp_new_4lxml_5etree__NamespaceRegistry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__NamespaceRegistry;
  p->_ns_uri = Py_None; Py_INCREF(Py_None);
  p->_ns_uri_utf = Py_None; Py_INCREF(Py_None);
  p->_entries = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__NamespaceRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)o;
  Py_XDECREF(p->_ns_uri);
  Py_XDECREF(p->_ns_uri_utf);
  Py_XDECREF(((PyObject *)p->_entries));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__NamespaceRegistry(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)o;
  if (p->_ns_uri) {
    e = (*v)(p->_ns_uri, a); if (e) return e;
  }
  if (p->_ns_uri_utf) {
    e = (*v)(p->_ns_uri_utf, a); if (e) return e;
  }
  if (p->_entries) {
    e = (*v)(p->_entries, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__NamespaceRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__NamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__NamespaceRegistry *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_ns_uri);
  p->_ns_uri = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ns_uri_utf);
  p->_ns_uri_utf = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_entries);
  p->_entries = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__NamespaceRegistry(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_4lxml_5etree__NamespaceRegistry(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript assignment not supported by %s", Py_TYPE(o)->tp_name);
    return -1;
  }
  else {
    return __pyx_pf_4lxml_5etree_18_NamespaceRegistry___delitem__(o, i);
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__NamespaceRegistry[] = {
  {__Pyx_NAMESTR("update"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry_update, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_18_NamespaceRegistry_update)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry_items, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iteritems"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry_iteritems, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("clear"), (PyCFunction)__pyx_pf_4lxml_5etree_18_NamespaceRegistry_clear, METH_NOARGS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__NamespaceRegistry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__NamespaceRegistry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__NamespaceRegistry, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__NamespaceRegistry = {
  0, /*mp_length*/
  __pyx_pf_4lxml_5etree_18_NamespaceRegistry___getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree__NamespaceRegistry, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__NamespaceRegistry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__NamespaceRegistry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._NamespaceRegistry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__NamespaceRegistry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__NamespaceRegistry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__NamespaceRegistry, /*tp_as_number*/
  &__pyx_tp_as_sequence__NamespaceRegistry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__NamespaceRegistry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__NamespaceRegistry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Dictionary-like namespace registry"), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__NamespaceRegistry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__NamespaceRegistry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_18_NamespaceRegistry___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__NamespaceRegistry, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_18_NamespaceRegistry___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__NamespaceRegistry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ClassNamespaceRegistry __pyx_vtable_4lxml_5etree__ClassNamespaceRegistry;

static PyObject *__pyx_tp_new_4lxml_5etree__ClassNamespaceRegistry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__NamespaceRegistry(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry*)__pyx_vtabptr_4lxml_5etree__ClassNamespaceRegistry;
  return o;
}

static int __pyx_mp_ass_subscript_4lxml_5etree__ClassNamespaceRegistry(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___setitem__(o, i, v);
  }
  else {
    if (__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping && __pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping->mp_ass_subscript)
      return __pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping->mp_ass_subscript(o, i, v);
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ClassNamespaceRegistry[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ClassNamespaceRegistry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ClassNamespaceRegistry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ClassNamespaceRegistry = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree__ClassNamespaceRegistry, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ClassNamespaceRegistry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ClassNamespaceRegistry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ClassNamespaceRegistry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ClassNamespaceRegistry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__NamespaceRegistry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_23_ClassNamespaceRegistry___repr__, /*tp_repr*/
  &__pyx_tp_as_number__ClassNamespaceRegistry, /*tp_as_number*/
  &__pyx_tp_as_sequence__ClassNamespaceRegistry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ClassNamespaceRegistry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ClassNamespaceRegistry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Dictionary-like registry for namespace implementation classes"), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__NamespaceRegistry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__NamespaceRegistry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ClassNamespaceRegistry, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ClassNamespaceRegistry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementNamespaceClassLookup __pyx_vtable_4lxml_5etree_ElementNamespaceClassLookup;

static PyObject *__pyx_tp_new_4lxml_5etree_ElementNamespaceClassLookup(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_FallbackElementClassLookup(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup*)__pyx_vtabptr_4lxml_5etree_ElementNamespaceClassLookup;
  p->_namespace_registries = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_ElementNamespaceClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)o;
  Py_XDECREF(p->_namespace_registries);
  __pyx_tp_dealloc_4lxml_5etree_FallbackElementClassLookup(o);
}

static int __pyx_tp_traverse_4lxml_5etree_ElementNamespaceClassLookup(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)o;
  e = __pyx_tp_traverse_4lxml_5etree_FallbackElementClassLookup(o, v, a); if (e) return e;
  if (p->_namespace_registries) {
    e = (*v)(p->_namespace_registries, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_ElementNamespaceClassLookup(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *p = (struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree_FallbackElementClassLookup(o);
  tmp = ((PyObject*)p->_namespace_registries);
  p->_namespace_registries = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ElementNamespaceClassLookup[] = {
  {__Pyx_NAMESTR("get_namespace"), (PyCFunction)__pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup_get_namespace, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_27ElementNamespaceClassLookup_get_namespace)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ElementNamespaceClassLookup = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ElementNamespaceClassLookup = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ElementNamespaceClassLookup = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ElementNamespaceClassLookup = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ElementNamespaceClassLookup = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ElementNamespaceClassLookup"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ElementNamespaceClassLookup), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_ElementNamespaceClassLookup, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ElementNamespaceClassLookup, /*tp_as_number*/
  &__pyx_tp_as_sequence_ElementNamespaceClassLookup, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ElementNamespaceClassLookup, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ElementNamespaceClassLookup, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ElementNamespaceClassLookup(self, fallback=None)\n\n    Element class lookup scheme that searches the Element class in the\n    Namespace registry.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_ElementNamespaceClassLookup, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_ElementNamespaceClassLookup, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ElementNamespaceClassLookup, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_27ElementNamespaceClassLookup___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ElementNamespaceClassLookup, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__FunctionNamespaceRegistry __pyx_vtable_4lxml_5etree__FunctionNamespaceRegistry;

static PyObject *__pyx_tp_new_4lxml_5etree__FunctionNamespaceRegistry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__NamespaceRegistry(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry*)__pyx_vtabptr_4lxml_5etree__FunctionNamespaceRegistry;
  return o;
}

static int __pyx_mp_ass_subscript_4lxml_5etree__FunctionNamespaceRegistry(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___setitem__(o, i, v);
  }
  else {
    if (__pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping && __pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping->mp_ass_subscript)
      return __pyx_ptype_4lxml_5etree__NamespaceRegistry->tp_as_mapping->mp_ass_subscript(o, i, v);
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by %s", Py_TYPE(o)->tp_name);
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__FunctionNamespaceRegistry[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__FunctionNamespaceRegistry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__FunctionNamespaceRegistry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__FunctionNamespaceRegistry = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  __pyx_mp_ass_subscript_4lxml_5etree__FunctionNamespaceRegistry, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__FunctionNamespaceRegistry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__FunctionNamespaceRegistry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._FunctionNamespaceRegistry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__FunctionNamespaceRegistry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__NamespaceRegistry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_26_FunctionNamespaceRegistry___repr__, /*tp_repr*/
  &__pyx_tp_as_number__FunctionNamespaceRegistry, /*tp_as_number*/
  &__pyx_tp_as_sequence__FunctionNamespaceRegistry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__FunctionNamespaceRegistry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__FunctionNamespaceRegistry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__NamespaceRegistry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__NamespaceRegistry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__FunctionNamespaceRegistry, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__FunctionNamespaceRegistry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathFunctionNamespaceRegistry __pyx_vtable_4lxml_5etree__XPathFunctionNamespaceRegistry;

static PyObject *__pyx_tp_new_4lxml_5etree__XPathFunctionNamespaceRegistry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__NamespaceRegistry(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__NamespaceRegistry*)__pyx_vtabptr_4lxml_5etree__XPathFunctionNamespaceRegistry;
  p->_prefix = Py_None; Py_INCREF(Py_None);
  p->_prefix_utf = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XPathFunctionNamespaceRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)o;
  Py_XDECREF(p->_prefix);
  Py_XDECREF(p->_prefix_utf);
  __pyx_tp_dealloc_4lxml_5etree__NamespaceRegistry(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XPathFunctionNamespaceRegistry(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)o;
  e = __pyx_tp_traverse_4lxml_5etree__NamespaceRegistry(o, v, a); if (e) return e;
  if (p->_prefix) {
    e = (*v)(p->_prefix, a); if (e) return e;
  }
  if (p->_prefix_utf) {
    e = (*v)(p->_prefix_utf, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XPathFunctionNamespaceRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *p = (struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__NamespaceRegistry(o);
  tmp = ((PyObject*)p->_prefix);
  p->_prefix = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_prefix_utf);
  p->_prefix_utf = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_31_XPathFunctionNamespaceRegistry_prefix(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___get__(o);
}

static int __pyx_setprop_4lxml_5etree_31_XPathFunctionNamespaceRegistry_prefix(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___set__(o, v);
  }
  else {
    return __pyx_pf_4lxml_5etree_31_XPathFunctionNamespaceRegistry_6prefix___del__(o);
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XPathFunctionNamespaceRegistry[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__XPathFunctionNamespaceRegistry[] = {
  {(char *)"prefix", __pyx_getprop_4lxml_5etree_31_XPathFunctionNamespaceRegistry_prefix, __pyx_setprop_4lxml_5etree_31_XPathFunctionNamespaceRegistry_prefix, __Pyx_DOCSTR(__pyx_k_375), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XPathFunctionNamespaceRegistry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XPathFunctionNamespaceRegistry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XPathFunctionNamespaceRegistry = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XPathFunctionNamespaceRegistry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XPathFunctionNamespaceRegistry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XPathFunctionNamespaceRegistry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XPathFunctionNamespaceRegistry, /*tp_as_number*/
  &__pyx_tp_as_sequence__XPathFunctionNamespaceRegistry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XPathFunctionNamespaceRegistry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XPathFunctionNamespaceRegistry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XPathFunctionNamespaceRegistry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__InputDocument(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__InputDocument *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__InputDocument *)o);
  p->_data_bytes = Py_None; Py_INCREF(Py_None);
  p->_filename = Py_None; Py_INCREF(Py_None);
  p->_file = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__InputDocument(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__InputDocument *p = (struct __pyx_obj_4lxml_5etree__InputDocument *)o;
  Py_XDECREF(p->_data_bytes);
  Py_XDECREF(p->_filename);
  Py_XDECREF(p->_file);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__InputDocument(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__InputDocument *p = (struct __pyx_obj_4lxml_5etree__InputDocument *)o;
  if (p->_data_bytes) {
    e = (*v)(p->_data_bytes, a); if (e) return e;
  }
  if (p->_filename) {
    e = (*v)(p->_filename, a); if (e) return e;
  }
  if (p->_file) {
    e = (*v)(p->_file, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__InputDocument(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__InputDocument *p = (struct __pyx_obj_4lxml_5etree__InputDocument *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_data_bytes);
  p->_data_bytes = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_filename);
  p->_filename = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_file);
  p->_file = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__InputDocument[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__InputDocument = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__InputDocument = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__InputDocument = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__InputDocument = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__InputDocument = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._InputDocument"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__InputDocument), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__InputDocument, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__InputDocument, /*tp_as_number*/
  &__pyx_tp_as_sequence__InputDocument, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__InputDocument, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__InputDocument, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__InputDocument, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__InputDocument, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__InputDocument, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__InputDocument, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_Resolver(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_Resolver(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_Resolver[] = {
  {__Pyx_NAMESTR("resolve"), (PyCFunction)__pyx_pf_4lxml_5etree_8Resolver_resolve, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8Resolver_resolve)},
  {__Pyx_NAMESTR("resolve_empty"), (PyCFunction)__pyx_pf_4lxml_5etree_8Resolver_resolve_empty, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8Resolver_resolve_empty)},
  {__Pyx_NAMESTR("resolve_string"), (PyCFunction)__pyx_pf_4lxml_5etree_8Resolver_resolve_string, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8Resolver_resolve_string)},
  {__Pyx_NAMESTR("resolve_filename"), (PyCFunction)__pyx_pf_4lxml_5etree_8Resolver_resolve_filename, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8Resolver_resolve_filename)},
  {__Pyx_NAMESTR("resolve_file"), (PyCFunction)__pyx_pf_4lxml_5etree_8Resolver_resolve_file, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8Resolver_resolve_file)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Resolver = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Resolver = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Resolver = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Resolver = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_Resolver = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.Resolver"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_Resolver), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_Resolver, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_Resolver, /*tp_as_number*/
  &__pyx_tp_as_sequence_Resolver, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Resolver, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Resolver, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("This is the base class of all resolvers."), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_Resolver, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_Resolver, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ResolverRegistry __pyx_vtable_4lxml_5etree__ResolverRegistry;

static PyObject *__pyx_tp_new_4lxml_5etree__ResolverRegistry(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ResolverRegistry;
  p->_resolvers = Py_None; Py_INCREF(Py_None);
  p->_default_resolver = ((struct __pyx_obj_4lxml_5etree_Resolver *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ResolverRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *p = (struct __pyx_obj_4lxml_5etree__ResolverRegistry *)o;
  Py_XDECREF(p->_resolvers);
  Py_XDECREF(((PyObject *)p->_default_resolver));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ResolverRegistry(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *p = (struct __pyx_obj_4lxml_5etree__ResolverRegistry *)o;
  if (p->_resolvers) {
    e = (*v)(p->_resolvers, a); if (e) return e;
  }
  if (p->_default_resolver) {
    e = (*v)(((PyObject*)p->_default_resolver), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ResolverRegistry(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ResolverRegistry *p = (struct __pyx_obj_4lxml_5etree__ResolverRegistry *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_resolvers);
  p->_resolvers = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_default_resolver);
  p->_default_resolver = ((struct __pyx_obj_4lxml_5etree_Resolver *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ResolverRegistry[] = {
  {__Pyx_NAMESTR("add"), (PyCFunction)__pyx_pf_4lxml_5etree_17_ResolverRegistry_add, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_17_ResolverRegistry_add)},
  {__Pyx_NAMESTR("remove"), (PyCFunction)__pyx_pf_4lxml_5etree_17_ResolverRegistry_remove, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_17_ResolverRegistry_remove)},
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_17_ResolverRegistry_copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_17_ResolverRegistry_copy)},
  {__Pyx_NAMESTR("resolve"), (PyCFunction)__pyx_pf_4lxml_5etree_17_ResolverRegistry_resolve, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_17_ResolverRegistry_resolve)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_17_ResolverRegistry___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ResolverRegistry = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ResolverRegistry = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ResolverRegistry = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ResolverRegistry = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ResolverRegistry = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ResolverRegistry"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ResolverRegistry), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ResolverRegistry, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_17_ResolverRegistry___repr__, /*tp_repr*/
  &__pyx_tp_as_number__ResolverRegistry, /*tp_as_number*/
  &__pyx_tp_as_sequence__ResolverRegistry, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ResolverRegistry, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ResolverRegistry, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ResolverRegistry, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ResolverRegistry, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ResolverRegistry, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17_ResolverRegistry___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ResolverRegistry, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ResolverContext __pyx_vtable_4lxml_5etree__ResolverContext;

static PyObject *__pyx_tp_new_4lxml_5etree__ResolverContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ResolverContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ExceptionContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ResolverContext *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__ResolverContext;
  p->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); Py_INCREF(Py_None);
  p->_storage = ((struct __pyx_obj_4lxml_5etree__TempStore *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ResolverContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ResolverContext *p = (struct __pyx_obj_4lxml_5etree__ResolverContext *)o;
  Py_XDECREF(((PyObject *)p->_resolvers));
  Py_XDECREF(((PyObject *)p->_storage));
  __pyx_tp_dealloc_4lxml_5etree__ExceptionContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ResolverContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ResolverContext *p = (struct __pyx_obj_4lxml_5etree__ResolverContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ExceptionContext(o, v, a); if (e) return e;
  if (p->_resolvers) {
    e = (*v)(((PyObject*)p->_resolvers), a); if (e) return e;
  }
  if (p->_storage) {
    e = (*v)(((PyObject*)p->_storage), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ResolverContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ResolverContext *p = (struct __pyx_obj_4lxml_5etree__ResolverContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ExceptionContext(o);
  tmp = ((PyObject*)p->_resolvers);
  p->_resolvers = ((struct __pyx_obj_4lxml_5etree__ResolverRegistry *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_storage);
  p->_storage = ((struct __pyx_obj_4lxml_5etree__TempStore *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ResolverContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ResolverContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ResolverContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ResolverContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ResolverContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ResolverContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ResolverContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ResolverContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ResolverContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ResolverContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__ResolverContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ResolverContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ResolverContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ResolverContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ResolverContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ResolverContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ResolverContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserContext __pyx_vtable_4lxml_5etree__ParserContext;

static PyObject *__pyx_tp_new_4lxml_5etree__ParserContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ParserContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ResolverContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ParserContext *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__ParserContext;
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  p->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserContext *p = (struct __pyx_obj_4lxml_5etree__ParserContext *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_14_ParserContext___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_error_log));
  Py_XDECREF(((PyObject *)p->_validator));
  __pyx_tp_dealloc_4lxml_5etree__ResolverContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ParserContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ParserContext *p = (struct __pyx_obj_4lxml_5etree__ParserContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ResolverContext(o, v, a); if (e) return e;
  if (p->_error_log) {
    e = (*v)(((PyObject*)p->_error_log), a); if (e) return e;
  }
  if (p->_validator) {
    e = (*v)(((PyObject*)p->_validator), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserContext *p = (struct __pyx_obj_4lxml_5etree__ParserContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ResolverContext(o);
  tmp = ((PyObject*)p->_error_log);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_validator);
  p->_validator = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ParserContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ParserContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ParserContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ParserContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ParserContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ParserContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ParserContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ParserContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ParserContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ParserContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__ParserContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ParserContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ParserContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ParserContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ParserContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ParserContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ParserContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__SaxParserContext __pyx_vtable_4lxml_5etree__SaxParserContext;

static PyObject *__pyx_tp_new_4lxml_5etree__SaxParserContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ParserContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__SaxParserContext;
  p->_target = ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__SaxParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *p = (struct __pyx_obj_4lxml_5etree__SaxParserContext *)o;
  Py_XDECREF(((PyObject *)p->_target));
  __pyx_tp_dealloc_4lxml_5etree__ParserContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__SaxParserContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__SaxParserContext *p = (struct __pyx_obj_4lxml_5etree__SaxParserContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ParserContext(o, v, a); if (e) return e;
  if (p->_target) {
    e = (*v)(((PyObject*)p->_target), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__SaxParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__SaxParserContext *p = (struct __pyx_obj_4lxml_5etree__SaxParserContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ParserContext(o);
  tmp = ((PyObject*)p->_target);
  p->_target = ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__SaxParserContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__SaxParserContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__SaxParserContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__SaxParserContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__SaxParserContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__SaxParserContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._SaxParserContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__SaxParserContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__SaxParserContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__SaxParserContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__SaxParserContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__SaxParserContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__SaxParserContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("This class maps SAX2 events to method calls.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__SaxParserContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__SaxParserContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__SaxParserContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__SaxParserContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__TargetParserContext __pyx_vtable_4lxml_5etree__TargetParserContext;

static PyObject *__pyx_tp_new_4lxml_5etree__TargetParserContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__TargetParserContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__SaxParserContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__TargetParserContext *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__TargetParserContext;
  p->_python_target = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__TargetParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__TargetParserContext *p = (struct __pyx_obj_4lxml_5etree__TargetParserContext *)o;
  Py_XDECREF(p->_python_target);
  __pyx_tp_dealloc_4lxml_5etree__SaxParserContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__TargetParserContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__TargetParserContext *p = (struct __pyx_obj_4lxml_5etree__TargetParserContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__SaxParserContext(o, v, a); if (e) return e;
  if (p->_python_target) {
    e = (*v)(p->_python_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__TargetParserContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__TargetParserContext *p = (struct __pyx_obj_4lxml_5etree__TargetParserContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__SaxParserContext(o);
  tmp = ((PyObject*)p->_python_target);
  p->_python_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__TargetParserContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__TargetParserContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__TargetParserContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__TargetParserContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__TargetParserContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__TargetParserContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._TargetParserContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__TargetParserContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__TargetParserContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__TargetParserContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__TargetParserContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__TargetParserContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__TargetParserContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("This class maps SAX2 events to the ET parser target interface.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__TargetParserContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__TargetParserContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__TargetParserContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__TargetParserContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserSchemaValidationContext __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext;

static PyObject *__pyx_tp_new_4lxml_5etree__ParserSchemaValidationContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ParserSchemaValidationContext;
  p->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ParserSchemaValidationContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *p = (struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_30_ParserSchemaValidationContext___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_schema));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ParserSchemaValidationContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *p = (struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)o;
  if (p->_schema) {
    e = (*v)(((PyObject*)p->_schema), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ParserSchemaValidationContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *p = (struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_schema);
  p->_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ParserSchemaValidationContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ParserSchemaValidationContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ParserSchemaValidationContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ParserSchemaValidationContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ParserSchemaValidationContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ParserSchemaValidationContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ParserSchemaValidationContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ParserSchemaValidationContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ParserSchemaValidationContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__ParserSchemaValidationContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ParserSchemaValidationContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ParserSchemaValidationContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ParserSchemaValidationContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ParserSchemaValidationContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ParserSchemaValidationContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ParserSchemaValidationContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__Validator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__Validator *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__Validator *)o);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__Validator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__Validator *p = (struct __pyx_obj_4lxml_5etree__Validator *)o;
  Py_XDECREF(((PyObject *)p->_error_log));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__Validator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__Validator *p = (struct __pyx_obj_4lxml_5etree__Validator *)o;
  if (p->_error_log) {
    e = (*v)(((PyObject*)p->_error_log), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__Validator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__Validator *p = (struct __pyx_obj_4lxml_5etree__Validator *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_error_log);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_10_Validator_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__Validator[] = {
  {__Pyx_NAMESTR("validate"), (PyCFunction)__pyx_pf_4lxml_5etree_10_Validator_validate, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10_Validator_validate)},
  {__Pyx_NAMESTR("assertValid"), (PyCFunction)__pyx_pf_4lxml_5etree_10_Validator_assertValid, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10_Validator_assertValid)},
  {__Pyx_NAMESTR("assert_"), (PyCFunction)__pyx_pf_4lxml_5etree_10_Validator_assert_, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10_Validator_assert_)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__Validator[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_10_Validator_error_log, 0, __Pyx_DOCSTR(__pyx_k_376), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__Validator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__Validator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__Validator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__Validator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__Validator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._Validator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__Validator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Validator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__Validator, /*tp_as_number*/
  &__pyx_tp_as_sequence__Validator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__Validator, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__Validator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Base class for XML validators."), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Validator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Validator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__Validator, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__Validator, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_10_Validator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__Validator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XMLSchema __pyx_vtable_4lxml_5etree_XMLSchema;

static PyObject *__pyx_tp_new_4lxml_5etree_XMLSchema(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XMLSchema *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Validator(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree_XMLSchema;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XMLSchema(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_9XMLSchema___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  __pyx_tp_dealloc_4lxml_5etree__Validator(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XMLSchema[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_9XMLSchema___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_9XMLSchema___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XMLSchema = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XMLSchema = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XMLSchema = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XMLSchema = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XMLSchema = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XMLSchema"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XMLSchema), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XMLSchema, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XMLSchema, /*tp_as_number*/
  &__pyx_tp_as_sequence_XMLSchema, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XMLSchema, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_9XMLSchema___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XMLSchema, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XMLSchema(self, etree=None, file=None)\n    Turn a document into an XML Schema validator.\n\n    Either pass a schema as Element or ElementTree, or pass a file or\n    filename through the ``file`` keyword argument.\n\n    Passing the ``attribute_defaults`` boolean option will make the\n    schema insert default/fixed attributes into validated documents.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Validator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Validator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XMLSchema, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_9XMLSchema___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XMLSchema, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext __pyx_vtable_4lxml_5etree__ParserDictionaryContext;

static PyObject *__pyx_tp_new_4lxml_5etree__ParserDictionaryContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ParserDictionaryContext;
  p->_default_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  p->_implied_parser_contexts = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ParserDictionaryContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *p = (struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_default_parser));
  Py_XDECREF(((PyObject *)p->_implied_parser_contexts));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ParserDictionaryContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *p = (struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)o;
  if (p->_default_parser) {
    e = (*v)(((PyObject*)p->_default_parser), a); if (e) return e;
  }
  if (p->_implied_parser_contexts) {
    e = (*v)(p->_implied_parser_contexts, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ParserDictionaryContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *p = (struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_default_parser);
  p->_default_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_implied_parser_contexts);
  p->_implied_parser_contexts = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ParserDictionaryContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ParserDictionaryContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ParserDictionaryContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ParserDictionaryContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ParserDictionaryContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ParserDictionaryContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ParserDictionaryContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ParserDictionaryContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ParserDictionaryContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__ParserDictionaryContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ParserDictionaryContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ParserDictionaryContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ParserDictionaryContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ParserDictionaryContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ParserDictionaryContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_24_ParserDictionaryContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ParserDictionaryContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__FileReaderContext __pyx_vtable_4lxml_5etree__FileReaderContext;

static PyObject *__pyx_tp_new_4lxml_5etree__FileReaderContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__FileReaderContext *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__FileReaderContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__FileReaderContext;
  p->_filelike = Py_None; Py_INCREF(Py_None);
  p->_encoding = Py_None; Py_INCREF(Py_None);
  p->_url = Py_None; Py_INCREF(Py_None);
  p->_bytes = Py_None; Py_INCREF(Py_None);
  p->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__FileReaderContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__FileReaderContext *p = (struct __pyx_obj_4lxml_5etree__FileReaderContext *)o;
  Py_XDECREF(p->_filelike);
  Py_XDECREF(p->_encoding);
  Py_XDECREF(p->_url);
  Py_XDECREF(p->_bytes);
  Py_XDECREF(((PyObject *)p->_exc_context));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__FileReaderContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__FileReaderContext *p = (struct __pyx_obj_4lxml_5etree__FileReaderContext *)o;
  if (p->_filelike) {
    e = (*v)(p->_filelike, a); if (e) return e;
  }
  if (p->_encoding) {
    e = (*v)(p->_encoding, a); if (e) return e;
  }
  if (p->_url) {
    e = (*v)(p->_url, a); if (e) return e;
  }
  if (p->_bytes) {
    e = (*v)(p->_bytes, a); if (e) return e;
  }
  if (p->_exc_context) {
    e = (*v)(((PyObject*)p->_exc_context), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__FileReaderContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__FileReaderContext *p = (struct __pyx_obj_4lxml_5etree__FileReaderContext *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_filelike);
  p->_filelike = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_encoding);
  p->_encoding = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_url);
  p->_url = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_bytes);
  p->_bytes = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exc_context);
  p->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__FileReaderContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__FileReaderContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__FileReaderContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__FileReaderContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__FileReaderContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__FileReaderContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._FileReaderContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__FileReaderContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__FileReaderContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__FileReaderContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__FileReaderContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__FileReaderContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__FileReaderContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__FileReaderContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__FileReaderContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__FileReaderContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_18_FileReaderContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__FileReaderContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__FeedParser __pyx_vtable_4lxml_5etree__FeedParser;

static PyObject *__pyx_tp_new_4lxml_5etree__FeedParser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__FeedParser *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseParser(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__FeedParser *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseParser*)__pyx_vtabptr_4lxml_5etree__FeedParser;
  return o;
}

static PyObject *__pyx_getprop_4lxml_5etree_11_FeedParser_feed_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__FeedParser[] = {
  {__Pyx_NAMESTR("feed"), (PyCFunction)__pyx_pf_4lxml_5etree_11_FeedParser_feed, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_FeedParser_feed)},
  {__Pyx_NAMESTR("close"), (PyCFunction)__pyx_pf_4lxml_5etree_11_FeedParser_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11_FeedParser_close)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__FeedParser[] = {
  {(char *)"feed_error_log", __pyx_getprop_4lxml_5etree_11_FeedParser_feed_error_log, 0, __Pyx_DOCSTR(__pyx_k_377), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__FeedParser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__FeedParser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__FeedParser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__FeedParser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__FeedParser = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._FeedParser"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__FeedParser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseParser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__FeedParser, /*tp_as_number*/
  &__pyx_tp_as_sequence__FeedParser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__FeedParser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__FeedParser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__FeedParser, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__FeedParser, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__FeedParser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XMLParser __pyx_vtable_4lxml_5etree_XMLParser;

static PyObject *__pyx_tp_new_4lxml_5etree_XMLParser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XMLParser *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseParser(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XMLParser *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseParser*)__pyx_vtabptr_4lxml_5etree_XMLParser;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XMLParser[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XMLParser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XMLParser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XMLParser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XMLParser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XMLParser = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XMLParser"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XMLParser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseParser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XMLParser, /*tp_as_number*/
  &__pyx_tp_as_sequence_XMLParser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XMLParser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XMLParser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, XMLSchema schema=None, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - safe memory for short text content (default: True)\n    - resolve_entities   - replace entities by their text value (default: True)\n    - huge_tree          - disable security restrictions and support very deep trees\n                           and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XMLParser, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_9XMLParser___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XMLParser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ETCompatXMLParser __pyx_vtable_4lxml_5etree_ETCompatXMLParser;

static PyObject *__pyx_tp_new_4lxml_5etree_ETCompatXMLParser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ETCompatXMLParser *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseParser(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ETCompatXMLParser *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseParser*)__pyx_vtabptr_4lxml_5etree_ETCompatXMLParser;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ETCompatXMLParser[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ETCompatXMLParser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ETCompatXMLParser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ETCompatXMLParser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ETCompatXMLParser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ETCompatXMLParser = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ETCompatXMLParser"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ETCompatXMLParser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseParser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ETCompatXMLParser, /*tp_as_number*/
  &__pyx_tp_as_sequence_ETCompatXMLParser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ETCompatXMLParser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ETCompatXMLParser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  remove_blank_text=False, resolve_entities=True,                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)\n\n    An XML parser with an ElementTree compatible default setup.\n\n    See the XMLParser class for details.\n\n    This parser has ``remove_comments`` and ``remove_pis`` enabled by default\n    and thus ignores comments and processing instructions.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ETCompatXMLParser, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17ETCompatXMLParser___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ETCompatXMLParser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_HTMLParser __pyx_vtable_4lxml_5etree_HTMLParser;

static PyObject *__pyx_tp_new_4lxml_5etree_HTMLParser(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_HTMLParser *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseParser(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_HTMLParser *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseParser*)__pyx_vtabptr_4lxml_5etree_HTMLParser;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_HTMLParser[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_HTMLParser = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_HTMLParser = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_HTMLParser = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_HTMLParser = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_HTMLParser = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.HTMLParser"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_HTMLParser), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseParser, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_HTMLParser, /*tp_as_number*/
  &__pyx_tp_as_sequence_HTMLParser, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_HTMLParser, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_HTMLParser, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("HTMLParser(self, encoding=None, remove_blank_text=False,                    remove_comments=False, remove_pis=False, strip_cdata=True,                    no_network=True, target=None, XMLSchema schema=None,                    recover=True, compact=True)\n\n    The HTML parser.\n\n    This parser allows reading HTML into a normal XML tree.  By\n    default, it can read broken (non well-formed) HTML, depending on\n    the capabilities of libxml2.  Use the 'recover' option to switch\n    this off.\n\n    Available boolean keyword arguments:\n\n    - recover            - try hard to parse through broken HTML (default: True)\n    - no_network         - prevent network access for related files (default: True)\n    - remove_blank_text  - discard empty text nodes\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - safe memory for short text content (default: True)\n\n    Other keyword arguments:\n\n    - encoding - override the document encoding\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads for performance\n    reasons.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_HTMLParser, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_10HTMLParser___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_HTMLParser, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget __pyx_vtable_4lxml_5etree__SaxParserTarget;

static PyObject *__pyx_tp_new_4lxml_5etree__SaxParserTarget(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__SaxParserTarget *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__SaxParserTarget;
  if (__pyx_pf_4lxml_5etree_16_SaxParserTarget___cinit__(o, __pyx_empty_tuple, NULL) < 0) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__SaxParserTarget(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__SaxParserTarget[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__SaxParserTarget = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__SaxParserTarget = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__SaxParserTarget = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__SaxParserTarget = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__SaxParserTarget = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._SaxParserTarget"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__SaxParserTarget), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__SaxParserTarget, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__SaxParserTarget, /*tp_as_number*/
  &__pyx_tp_as_sequence__SaxParserTarget, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__SaxParserTarget, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__SaxParserTarget, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__SaxParserTarget, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__SaxParserTarget, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_TreeBuilder __pyx_vtable_4lxml_5etree_TreeBuilder;

static PyObject *__pyx_tp_new_4lxml_5etree_TreeBuilder(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_TreeBuilder *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__SaxParserTarget(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_TreeBuilder *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget*)__pyx_vtabptr_4lxml_5etree_TreeBuilder;
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  p->_factory = Py_None; Py_INCREF(Py_None);
  p->_data = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_element_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_element_stack_pop = Py_None; Py_INCREF(Py_None);
  p->_last = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_TreeBuilder(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_TreeBuilder *p = (struct __pyx_obj_4lxml_5etree_TreeBuilder *)o;
  Py_XDECREF(((PyObject *)p->_parser));
  Py_XDECREF(p->_factory);
  Py_XDECREF(((PyObject *)p->_data));
  Py_XDECREF(((PyObject *)p->_element_stack));
  Py_XDECREF(p->_element_stack_pop);
  Py_XDECREF(((PyObject *)p->_last));
  __pyx_tp_dealloc_4lxml_5etree__SaxParserTarget(o);
}

static int __pyx_tp_traverse_4lxml_5etree_TreeBuilder(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_TreeBuilder *p = (struct __pyx_obj_4lxml_5etree_TreeBuilder *)o;
  if (__pyx_ptype_4lxml_5etree__SaxParserTarget->tp_traverse) {
    e = __pyx_ptype_4lxml_5etree__SaxParserTarget->tp_traverse(o, v, a); if (e) return e;
  }
  if (p->_parser) {
    e = (*v)(((PyObject*)p->_parser), a); if (e) return e;
  }
  if (p->_factory) {
    e = (*v)(p->_factory, a); if (e) return e;
  }
  if (p->_data) {
    e = (*v)(p->_data, a); if (e) return e;
  }
  if (p->_element_stack) {
    e = (*v)(p->_element_stack, a); if (e) return e;
  }
  if (p->_element_stack_pop) {
    e = (*v)(p->_element_stack_pop, a); if (e) return e;
  }
  if (p->_last) {
    e = (*v)(((PyObject*)p->_last), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_TreeBuilder(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_TreeBuilder *p = (struct __pyx_obj_4lxml_5etree_TreeBuilder *)o;
  PyObject* tmp;
  if (__pyx_ptype_4lxml_5etree__SaxParserTarget->tp_clear) {
    __pyx_ptype_4lxml_5etree__SaxParserTarget->tp_clear(o);
  }
  tmp = ((PyObject*)p->_parser);
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_factory);
  p->_factory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_data);
  p->_data = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_element_stack);
  p->_element_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_element_stack_pop);
  p->_element_stack_pop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_last);
  p->_last = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_TreeBuilder[] = {
  {__Pyx_NAMESTR("close"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_close)},
  {__Pyx_NAMESTR("data"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_data, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_data)},
  {__Pyx_NAMESTR("start"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_start, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_start)},
  {__Pyx_NAMESTR("end"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_end, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_end)},
  {__Pyx_NAMESTR("pi"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_pi, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_pi)},
  {__Pyx_NAMESTR("comment"), (PyCFunction)__pyx_pf_4lxml_5etree_11TreeBuilder_comment, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_11TreeBuilder_comment)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_TreeBuilder = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_TreeBuilder = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_TreeBuilder = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_TreeBuilder = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_TreeBuilder = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.TreeBuilder"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_TreeBuilder), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_TreeBuilder, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_TreeBuilder, /*tp_as_number*/
  &__pyx_tp_as_sequence_TreeBuilder, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_TreeBuilder, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_TreeBuilder, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("TreeBuilder(self, element_factory=None, parser=None)\n    Parser target that builds a tree.\n\n    The final tree is returned by the ``close()`` method.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_TreeBuilder, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_TreeBuilder, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_TreeBuilder, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_11TreeBuilder___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_TreeBuilder, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__PythonSaxParserTarget __pyx_vtable_4lxml_5etree__PythonSaxParserTarget;

static PyObject *__pyx_tp_new_4lxml_5etree__PythonSaxParserTarget(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__SaxParserTarget(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__SaxParserTarget*)__pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget;
  p->_target_start = Py_None; Py_INCREF(Py_None);
  p->_target_end = Py_None; Py_INCREF(Py_None);
  p->_target_data = Py_None; Py_INCREF(Py_None);
  p->_target_doctype = Py_None; Py_INCREF(Py_None);
  p->_target_pi = Py_None; Py_INCREF(Py_None);
  p->_target_comment = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__PythonSaxParserTarget(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *p = (struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)o;
  Py_XDECREF(p->_target_start);
  Py_XDECREF(p->_target_end);
  Py_XDECREF(p->_target_data);
  Py_XDECREF(p->_target_doctype);
  Py_XDECREF(p->_target_pi);
  Py_XDECREF(p->_target_comment);
  __pyx_tp_dealloc_4lxml_5etree__SaxParserTarget(o);
}

static int __pyx_tp_traverse_4lxml_5etree__PythonSaxParserTarget(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *p = (struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)o;
  if (__pyx_ptype_4lxml_5etree__SaxParserTarget->tp_traverse) {
    e = __pyx_ptype_4lxml_5etree__SaxParserTarget->tp_traverse(o, v, a); if (e) return e;
  }
  if (p->_target_start) {
    e = (*v)(p->_target_start, a); if (e) return e;
  }
  if (p->_target_end) {
    e = (*v)(p->_target_end, a); if (e) return e;
  }
  if (p->_target_data) {
    e = (*v)(p->_target_data, a); if (e) return e;
  }
  if (p->_target_doctype) {
    e = (*v)(p->_target_doctype, a); if (e) return e;
  }
  if (p->_target_pi) {
    e = (*v)(p->_target_pi, a); if (e) return e;
  }
  if (p->_target_comment) {
    e = (*v)(p->_target_comment, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__PythonSaxParserTarget(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *p = (struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget *)o;
  PyObject* tmp;
  if (__pyx_ptype_4lxml_5etree__SaxParserTarget->tp_clear) {
    __pyx_ptype_4lxml_5etree__SaxParserTarget->tp_clear(o);
  }
  tmp = ((PyObject*)p->_target_start);
  p->_target_start = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target_end);
  p->_target_end = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target_data);
  p->_target_data = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target_doctype);
  p->_target_doctype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target_pi);
  p->_target_pi = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target_comment);
  p->_target_comment = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__PythonSaxParserTarget[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__PythonSaxParserTarget = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__PythonSaxParserTarget = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__PythonSaxParserTarget = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__PythonSaxParserTarget = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__PythonSaxParserTarget = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._PythonSaxParserTarget"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__PythonSaxParserTarget), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__PythonSaxParserTarget, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__PythonSaxParserTarget, /*tp_as_number*/
  &__pyx_tp_as_sequence__PythonSaxParserTarget, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__PythonSaxParserTarget, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__PythonSaxParserTarget, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__PythonSaxParserTarget, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__PythonSaxParserTarget, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__PythonSaxParserTarget, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_22_PythonSaxParserTarget___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__PythonSaxParserTarget, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__FilelikeWriter __pyx_vtable_4lxml_5etree__FilelikeWriter;

static PyObject *__pyx_tp_new_4lxml_5etree__FilelikeWriter(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__FilelikeWriter;
  p->_filelike = Py_None; Py_INCREF(Py_None);
  p->_close_filelike = Py_None; Py_INCREF(Py_None);
  p->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  p->error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__FilelikeWriter(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *p = (struct __pyx_obj_4lxml_5etree__FilelikeWriter *)o;
  Py_XDECREF(p->_filelike);
  Py_XDECREF(p->_close_filelike);
  Py_XDECREF(((PyObject *)p->_exc_context));
  Py_XDECREF(((PyObject *)p->error_log));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__FilelikeWriter(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *p = (struct __pyx_obj_4lxml_5etree__FilelikeWriter *)o;
  if (p->_filelike) {
    e = (*v)(p->_filelike, a); if (e) return e;
  }
  if (p->_close_filelike) {
    e = (*v)(p->_close_filelike, a); if (e) return e;
  }
  if (p->_exc_context) {
    e = (*v)(((PyObject*)p->_exc_context), a); if (e) return e;
  }
  if (p->error_log) {
    e = (*v)(((PyObject*)p->error_log), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__FilelikeWriter(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__FilelikeWriter *p = (struct __pyx_obj_4lxml_5etree__FilelikeWriter *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_filelike);
  p->_filelike = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_close_filelike);
  p->_close_filelike = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exc_context);
  p->_exc_context = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->error_log);
  p->error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__FilelikeWriter[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__FilelikeWriter = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__FilelikeWriter = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__FilelikeWriter = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__FilelikeWriter = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__FilelikeWriter = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._FilelikeWriter"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__FilelikeWriter), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__FilelikeWriter, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__FilelikeWriter, /*tp_as_number*/
  &__pyx_tp_as_sequence__FilelikeWriter, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__FilelikeWriter, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__FilelikeWriter, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__FilelikeWriter, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__FilelikeWriter, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__FilelikeWriter, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_15_FilelikeWriter___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__FilelikeWriter, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__IterparseContext __pyx_vtable_4lxml_5etree__IterparseContext;

static PyObject *__pyx_tp_new_4lxml_5etree__IterparseContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__IterparseContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ParserContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__IterparseContext *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__IterparseContext;
  p->_root = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  p->_events = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_ns_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_pop_ns = Py_None; Py_INCREF(Py_None);
  p->_node_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_pop_node = Py_None; Py_INCREF(Py_None);
  p->_tag_tuple = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__IterparseContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__IterparseContext *p = (struct __pyx_obj_4lxml_5etree__IterparseContext *)o;
  Py_XDECREF(((PyObject *)p->_root));
  Py_XDECREF(((PyObject *)p->_doc));
  Py_XDECREF(((PyObject *)p->_events));
  Py_XDECREF(((PyObject *)p->_ns_stack));
  Py_XDECREF(p->_pop_ns);
  Py_XDECREF(((PyObject *)p->_node_stack));
  Py_XDECREF(p->_pop_node);
  Py_XDECREF(((PyObject *)p->_tag_tuple));
  __pyx_tp_dealloc_4lxml_5etree__ParserContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__IterparseContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__IterparseContext *p = (struct __pyx_obj_4lxml_5etree__IterparseContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ParserContext(o, v, a); if (e) return e;
  if (p->_root) {
    e = (*v)(((PyObject*)p->_root), a); if (e) return e;
  }
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  if (p->_events) {
    e = (*v)(p->_events, a); if (e) return e;
  }
  if (p->_ns_stack) {
    e = (*v)(p->_ns_stack, a); if (e) return e;
  }
  if (p->_pop_ns) {
    e = (*v)(p->_pop_ns, a); if (e) return e;
  }
  if (p->_node_stack) {
    e = (*v)(p->_node_stack, a); if (e) return e;
  }
  if (p->_pop_node) {
    e = (*v)(p->_pop_node, a); if (e) return e;
  }
  if (p->_tag_tuple) {
    e = (*v)(p->_tag_tuple, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__IterparseContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__IterparseContext *p = (struct __pyx_obj_4lxml_5etree__IterparseContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ParserContext(o);
  tmp = ((PyObject*)p->_root);
  p->_root = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_events);
  p->_events = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ns_stack);
  p->_ns_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pop_ns);
  p->_pop_ns = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_node_stack);
  p->_node_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pop_node);
  p->_pop_node = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tag_tuple);
  p->_tag_tuple = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__IterparseContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__IterparseContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__IterparseContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__IterparseContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__IterparseContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__IterparseContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._IterparseContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__IterparseContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__IterparseContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__IterparseContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__IterparseContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__IterparseContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__IterparseContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__IterparseContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__IterparseContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__IterparseContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17_IterparseContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__IterparseContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_iterparse __pyx_vtable_4lxml_5etree_iterparse;

static PyObject *__pyx_tp_new_4lxml_5etree_iterparse(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_iterparse *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseParser(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_iterparse *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseParser*)__pyx_vtabptr_4lxml_5etree_iterparse;
  p->_tag = Py_None; Py_INCREF(Py_None);
  p->_events = Py_None; Py_INCREF(Py_None);
  p->root = Py_None; Py_INCREF(Py_None);
  p->_source = Py_None; Py_INCREF(Py_None);
  p->_buffer = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_iterparse(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_iterparse *p = (struct __pyx_obj_4lxml_5etree_iterparse *)o;
  Py_XDECREF(p->_tag);
  Py_XDECREF(p->_events);
  Py_XDECREF(p->root);
  Py_XDECREF(p->_source);
  Py_XDECREF(p->_buffer);
  __pyx_tp_dealloc_4lxml_5etree__BaseParser(o);
}

static int __pyx_tp_traverse_4lxml_5etree_iterparse(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_iterparse *p = (struct __pyx_obj_4lxml_5etree_iterparse *)o;
  e = __pyx_tp_traverse_4lxml_5etree__BaseParser(o, v, a); if (e) return e;
  if (p->_tag) {
    e = (*v)(p->_tag, a); if (e) return e;
  }
  if (p->_events) {
    e = (*v)(p->_events, a); if (e) return e;
  }
  if (p->root) {
    e = (*v)(p->root, a); if (e) return e;
  }
  if (p->_source) {
    e = (*v)(p->_source, a); if (e) return e;
  }
  if (p->_buffer) {
    e = (*v)(p->_buffer, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_iterparse(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_iterparse *p = (struct __pyx_obj_4lxml_5etree_iterparse *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__BaseParser(o);
  tmp = ((PyObject*)p->_tag);
  p->_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_events);
  p->_events = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->root);
  p->root = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_source);
  p->_source = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_buffer);
  p->_buffer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_9iterparse_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_iterparse[] = {
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_9iterparse_copy, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_9iterparse___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_9iterparse___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_iterparse[] = {
  {(char *)"root", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_iterparse, root), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree_iterparse[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_9iterparse_error_log, 0, __Pyx_DOCSTR(__pyx_k_378), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_iterparse = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_iterparse = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_iterparse = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_iterparse = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_iterparse = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.iterparse"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_iterparse), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_iterparse, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_iterparse, /*tp_as_number*/
  &__pyx_tp_as_sequence_iterparse, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_iterparse, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_iterparse, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("iterparse(self, source, events=(\"end\",), tag=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, remove_blank_text=False, remove_comments=False, remove_pis=False, encoding=None, html=False, huge_tree=False, schema=None)\n\nIncremental parser.\n\nParses XML into a tree and generates tuples (event, element) in a\nSAX-like fashion. ``event`` is any of 'start', 'end', 'start-ns',\n'end-ns'.\n\nFor 'start' and 'end', ``element`` is the Element that the parser just\nfound opening or closing.  For 'start-ns', it is a tuple (prefix, URI) of\na new namespace declaration.  For 'end-ns', it is simply None.  Note that\nall start and end events are guaranteed to be properly nested.\n\nThe keyword argument ``events`` specifies a sequence of event type names\nthat should be generated.  By default, only 'end' events will be\ngenerated.\n\nThe additional ``tag`` argument restricts the 'start' and 'end' events to\nthose elements that match the given tag.  By default, events are generated\nfor all elements.  Note that the 'start-ns' and 'end-ns' events are not\nimpacted by this restriction.\n\nThe other keyword arguments in the constructor are mainly based on the\nlibxml2 parser configuration.  A DTD will also be loaded if validation or\nattribute default values are requested.\n\nAvailable boolean keyword arguments:\n - attribute_defaults: read default attributes from DTD\n - dtd_validation: validate (if DTD is available)\n - load_dtd: use DTD for parsing\n - no_network: prevent network access for related files\n - remove_blank_text: discard blank text nodes\n - remove_comments: discard comments\n - remove_pis: discard processing instructions\n - strip_cdata: replace CDATA sections by normal text content (default: True)\n - compact: safe memory for short text content (default: True)\n - resolve_entities: replace entities by their text value (default: True)\n - huge_tree: disable security restrictions and support very deep trees\n              and very long text content (only affects libxml2 2.7+)\n\nOther keyword arguments:\n - encoding: override the document encoding\n - schema: an XMLSchema to validate against\n"), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_iterparse, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_iterparse, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_9iterparse___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_9iterparse___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_iterparse, /*tp_methods*/
  __pyx_members_4lxml_5etree_iterparse, /*tp_members*/
  __pyx_getsets_4lxml_5etree_iterparse, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_9iterparse___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_iterparse, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_iterwalk __pyx_vtable_4lxml_5etree_iterwalk;

static PyObject *__pyx_tp_new_4lxml_5etree_iterwalk(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_iterwalk *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_iterwalk *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree_iterwalk;
  p->_node_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_pop_node = Py_None; Py_INCREF(Py_None);
  p->_events = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_pop_event = Py_None; Py_INCREF(Py_None);
  p->_tag_tuple = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_iterwalk(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_iterwalk *p = (struct __pyx_obj_4lxml_5etree_iterwalk *)o;
  Py_XDECREF(((PyObject *)p->_node_stack));
  Py_XDECREF(p->_pop_node);
  Py_XDECREF(((PyObject *)p->_events));
  Py_XDECREF(p->_pop_event);
  Py_XDECREF(((PyObject *)p->_tag_tuple));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_iterwalk(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_iterwalk *p = (struct __pyx_obj_4lxml_5etree_iterwalk *)o;
  if (p->_node_stack) {
    e = (*v)(p->_node_stack, a); if (e) return e;
  }
  if (p->_pop_node) {
    e = (*v)(p->_pop_node, a); if (e) return e;
  }
  if (p->_events) {
    e = (*v)(p->_events, a); if (e) return e;
  }
  if (p->_pop_event) {
    e = (*v)(p->_pop_event, a); if (e) return e;
  }
  if (p->_tag_tuple) {
    e = (*v)(p->_tag_tuple, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_iterwalk(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_iterwalk *p = (struct __pyx_obj_4lxml_5etree_iterwalk *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_node_stack);
  p->_node_stack = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pop_node);
  p->_pop_node = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_events);
  p->_events = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_pop_event);
  p->_pop_event = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tag_tuple);
  p->_tag_tuple = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_iterwalk[] = {
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_8iterwalk___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pf_4lxml_5etree_8iterwalk___next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_iterwalk = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_iterwalk = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_iterwalk = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_iterwalk = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_iterwalk = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.iterwalk"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_iterwalk), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_iterwalk, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_iterwalk, /*tp_as_number*/
  &__pyx_tp_as_sequence_iterwalk, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_iterwalk, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_iterwalk, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("iterwalk(self, element_or_tree, events=(\"end\",), tag=None)\n\n    A tree walker that generates events from an existing tree as if it\n    was parsing XML data with ``iterparse()``.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_iterwalk, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_iterwalk, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_8iterwalk___iter__, /*tp_iter*/
  __pyx_pf_4lxml_5etree_8iterwalk___next__, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_iterwalk, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_8iterwalk___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_iterwalk, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__IDDict __pyx_vtable_4lxml_5etree__IDDict;

static PyObject *__pyx_tp_new_4lxml_5etree__IDDict(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__IDDict *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__IDDict *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__IDDict;
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  p->_keys = Py_None; Py_INCREF(Py_None);
  p->_items = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__IDDict(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__IDDict *p = (struct __pyx_obj_4lxml_5etree__IDDict *)o;
  Py_XDECREF(((PyObject *)p->_doc));
  Py_XDECREF(p->_keys);
  Py_XDECREF(p->_items);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__IDDict(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__IDDict *p = (struct __pyx_obj_4lxml_5etree__IDDict *)o;
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  if (p->_keys) {
    e = (*v)(p->_keys, a); if (e) return e;
  }
  if (p->_items) {
    e = (*v)(p->_items, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__IDDict(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__IDDict *p = (struct __pyx_obj_4lxml_5etree__IDDict *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_keys);
  p->_keys = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_items);
  p->_items = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
static PyObject *__pyx_sq_item_4lxml_5etree__IDDict(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__IDDict[] = {
  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_copy, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__getitem__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict___getitem__, METH_O|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_get, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("has_key"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_has_key, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("keys"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_keys, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__iter__"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict___iter__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iterkeys"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_iterkeys, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("items"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_items, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("iteritems"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_iteritems, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("values"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_values, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("itervalues"), (PyCFunction)__pyx_pf_4lxml_5etree_7_IDDict_itervalues, METH_NOARGS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__IDDict = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__IDDict = {
  __pyx_pf_4lxml_5etree_7_IDDict___len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4lxml_5etree__IDDict, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pf_4lxml_5etree_7_IDDict___contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__IDDict = {
  __pyx_pf_4lxml_5etree_7_IDDict___len__, /*mp_length*/
  __pyx_pf_4lxml_5etree_7_IDDict___getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__IDDict = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__IDDict = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._IDDict"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__IDDict), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__IDDict, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_7_IDDict___repr__, /*tp_repr*/
  &__pyx_tp_as_number__IDDict, /*tp_as_number*/
  &__pyx_tp_as_sequence__IDDict, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__IDDict, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__IDDict, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("IDDict(self, etree)\n    A dictionary-like proxy class that mapps ID attributes to elements.\n\n    The dictionary must be instantiated with the root element of a parsed XML\n    document, otherwise the behaviour is undefined.  Elements and XML trees\n    that were created or modified 'by hand' are not supported.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__IDDict, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__IDDict, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pf_4lxml_5etree_7_IDDict___iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__IDDict, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_7_IDDict___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__IDDict, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_XInclude(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XInclude *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XInclude *)o);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XInclude(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XInclude *p = (struct __pyx_obj_4lxml_5etree_XInclude *)o;
  Py_XDECREF(((PyObject *)p->_error_log));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_XInclude(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_XInclude *p = (struct __pyx_obj_4lxml_5etree_XInclude *)o;
  if (p->_error_log) {
    e = (*v)(((PyObject*)p->_error_log), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_XInclude(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XInclude *p = (struct __pyx_obj_4lxml_5etree_XInclude *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_error_log);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_8XInclude_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XInclude[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_8XInclude___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_8XInclude___call__)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree_XInclude[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_8XInclude_error_log, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XInclude = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XInclude = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XInclude = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XInclude = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XInclude = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XInclude"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XInclude), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XInclude, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XInclude, /*tp_as_number*/
  &__pyx_tp_as_sequence_XInclude, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XInclude, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_8XInclude___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XInclude, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XInclude(self)\n    XInclude processor.\n\n    Create an instance and call it on an Element to run XInclude\n    processing.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XInclude, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XInclude, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XInclude, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree_XInclude, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_8XInclude___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XInclude, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__ExsltRegExp __pyx_vtable_4lxml_5etree__ExsltRegExp;

static PyObject *__pyx_tp_new_4lxml_5etree__ExsltRegExp(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ExsltRegExp *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ExsltRegExp *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__ExsltRegExp;
  p->_compile_map = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ExsltRegExp(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ExsltRegExp *p = (struct __pyx_obj_4lxml_5etree__ExsltRegExp *)o;
  Py_XDECREF(((PyObject *)p->_compile_map));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ExsltRegExp(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ExsltRegExp *p = (struct __pyx_obj_4lxml_5etree__ExsltRegExp *)o;
  if (p->_compile_map) {
    e = (*v)(p->_compile_map, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ExsltRegExp(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ExsltRegExp *p = (struct __pyx_obj_4lxml_5etree__ExsltRegExp *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_compile_map);
  p->_compile_map = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ExsltRegExp[] = {
  {__Pyx_NAMESTR("test"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ExsltRegExp_test, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("match"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ExsltRegExp_match, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("replace"), (PyCFunction)__pyx_pf_4lxml_5etree_12_ExsltRegExp_replace, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ExsltRegExp = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ExsltRegExp = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ExsltRegExp = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ExsltRegExp = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ExsltRegExp = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ExsltRegExp"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ExsltRegExp), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ExsltRegExp, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ExsltRegExp, /*tp_as_number*/
  &__pyx_tp_as_sequence__ExsltRegExp, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ExsltRegExp, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ExsltRegExp, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ExsltRegExp, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ExsltRegExp, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ExsltRegExp, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_12_ExsltRegExp___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ExsltRegExp, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__BaseContext __pyx_vtable_4lxml_5etree__BaseContext;

static PyObject *__pyx_tp_new_4lxml_5etree__BaseContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__BaseContext *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__BaseContext *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__BaseContext;
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  p->_extensions = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_namespaces = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_global_namespaces = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_utf_refs = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_function_cache = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_eval_context_dict = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_temp_refs = ((struct __pyx_obj_4lxml_5etree__TempStore *)Py_None); Py_INCREF(Py_None);
  p->_temp_documents = ((PyObject *)Py_None); Py_INCREF(Py_None);
  p->_exc = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__BaseContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseContext *p = (struct __pyx_obj_4lxml_5etree__BaseContext *)o;
  Py_XDECREF(((PyObject *)p->_doc));
  Py_XDECREF(((PyObject *)p->_extensions));
  Py_XDECREF(((PyObject *)p->_namespaces));
  Py_XDECREF(((PyObject *)p->_global_namespaces));
  Py_XDECREF(((PyObject *)p->_utf_refs));
  Py_XDECREF(((PyObject *)p->_function_cache));
  Py_XDECREF(((PyObject *)p->_eval_context_dict));
  Py_XDECREF(((PyObject *)p->_temp_refs));
  Py_XDECREF(((PyObject *)p->_temp_documents));
  Py_XDECREF(((PyObject *)p->_exc));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__BaseContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__BaseContext *p = (struct __pyx_obj_4lxml_5etree__BaseContext *)o;
  if (p->_doc) {
    e = (*v)(((PyObject*)p->_doc), a); if (e) return e;
  }
  if (p->_extensions) {
    e = (*v)(p->_extensions, a); if (e) return e;
  }
  if (p->_namespaces) {
    e = (*v)(p->_namespaces, a); if (e) return e;
  }
  if (p->_global_namespaces) {
    e = (*v)(p->_global_namespaces, a); if (e) return e;
  }
  if (p->_utf_refs) {
    e = (*v)(p->_utf_refs, a); if (e) return e;
  }
  if (p->_function_cache) {
    e = (*v)(p->_function_cache, a); if (e) return e;
  }
  if (p->_eval_context_dict) {
    e = (*v)(p->_eval_context_dict, a); if (e) return e;
  }
  if (p->_temp_refs) {
    e = (*v)(((PyObject*)p->_temp_refs), a); if (e) return e;
  }
  if (p->_temp_documents) {
    e = (*v)(p->_temp_documents, a); if (e) return e;
  }
  if (p->_exc) {
    e = (*v)(((PyObject*)p->_exc), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__BaseContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__BaseContext *p = (struct __pyx_obj_4lxml_5etree__BaseContext *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_doc);
  p->_doc = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_extensions);
  p->_extensions = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_namespaces);
  p->_namespaces = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_global_namespaces);
  p->_global_namespaces = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_utf_refs);
  p->_utf_refs = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_function_cache);
  p->_function_cache = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eval_context_dict);
  p->_eval_context_dict = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_temp_refs);
  p->_temp_refs = ((struct __pyx_obj_4lxml_5etree__TempStore *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_temp_documents);
  p->_temp_documents = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exc);
  p->_exc = ((struct __pyx_obj_4lxml_5etree__ExceptionContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_12_BaseContext_context_node(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_12_BaseContext_eval_context(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__BaseContext[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__BaseContext[] = {
  {(char *)"context_node", __pyx_getprop_4lxml_5etree_12_BaseContext_context_node, 0, 0, 0},
  {(char *)"eval_context", __pyx_getprop_4lxml_5etree_12_BaseContext_eval_context, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__BaseContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__BaseContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__BaseContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__BaseContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__BaseContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._BaseContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__BaseContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__BaseContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__BaseContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__BaseContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__BaseContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__BaseContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__BaseContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__BaseContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__BaseContext, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__BaseContext, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_12_BaseContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__BaseContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__ElementUnicodeResult(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *p;
  PyObject *o = __pyx_ptype_4lxml_6python_unicode->tp_new(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)o);
  p->_parent = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  p->is_tail = Py_None; Py_INCREF(Py_None);
  p->is_text = Py_None; Py_INCREF(Py_None);
  p->is_attribute = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__ElementUnicodeResult(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *p = (struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)o;
  Py_XDECREF(((PyObject *)p->_parent));
  Py_XDECREF(p->is_tail);
  Py_XDECREF(p->is_text);
  Py_XDECREF(p->is_attribute);
  __pyx_ptype_4lxml_6python_unicode->tp_dealloc(o);
}

static int __pyx_tp_traverse_4lxml_5etree__ElementUnicodeResult(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *p = (struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)o;
  if (__pyx_ptype_4lxml_6python_unicode->tp_traverse) {
    e = __pyx_ptype_4lxml_6python_unicode->tp_traverse(o, v, a); if (e) return e;
  }
  if (p->_parent) {
    e = (*v)(((PyObject*)p->_parent), a); if (e) return e;
  }
  if (p->is_tail) {
    e = (*v)(p->is_tail, a); if (e) return e;
  }
  if (p->is_text) {
    e = (*v)(p->is_text, a); if (e) return e;
  }
  if (p->is_attribute) {
    e = (*v)(p->is_attribute, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__ElementUnicodeResult(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *p = (struct __pyx_obj_4lxml_5etree__ElementUnicodeResult *)o;
  PyObject* tmp;
  if (__pyx_ptype_4lxml_6python_unicode->tp_clear) {
    __pyx_ptype_4lxml_6python_unicode->tp_clear(o);
  }
  tmp = ((PyObject*)p->_parent);
  p->_parent = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->is_tail);
  p->is_tail = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->is_text);
  p->is_text = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->is_attribute);
  p->is_attribute = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__ElementUnicodeResult[] = {
  {__Pyx_NAMESTR("getparent"), (PyCFunction)__pyx_pf_4lxml_5etree_21_ElementUnicodeResult_getparent, METH_NOARGS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree__ElementUnicodeResult[] = {
  {(char *)"is_tail", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult, is_tail), READONLY, 0},
  {(char *)"is_text", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult, is_text), READONLY, 0},
  {(char *)"is_attribute", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult, is_attribute), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__ElementUnicodeResult = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__ElementUnicodeResult = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__ElementUnicodeResult = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__ElementUnicodeResult = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__ElementUnicodeResult = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._ElementUnicodeResult"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__ElementUnicodeResult), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__ElementUnicodeResult, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__ElementUnicodeResult, /*tp_as_number*/
  &__pyx_tp_as_sequence__ElementUnicodeResult, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__ElementUnicodeResult, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__ElementUnicodeResult, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__ElementUnicodeResult, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__ElementUnicodeResult, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__ElementUnicodeResult, /*tp_methods*/
  __pyx_members_4lxml_5etree__ElementUnicodeResult, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__ElementUnicodeResult, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathContext __pyx_vtable_4lxml_5etree__XPathContext;

static PyObject *__pyx_tp_new_4lxml_5etree__XPathContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XPathContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XPathContext *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseContext*)__pyx_vtabptr_4lxml_5etree__XPathContext;
  p->_variables = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XPathContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathContext *p = (struct __pyx_obj_4lxml_5etree__XPathContext *)o;
  Py_XDECREF(p->_variables);
  __pyx_tp_dealloc_4lxml_5etree__BaseContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XPathContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XPathContext *p = (struct __pyx_obj_4lxml_5etree__XPathContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__BaseContext(o, v, a); if (e) return e;
  if (p->_variables) {
    e = (*v)(p->_variables, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XPathContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathContext *p = (struct __pyx_obj_4lxml_5etree__XPathContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__BaseContext(o);
  tmp = ((PyObject*)p->_variables);
  p->_variables = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XPathContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XPathContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XPathContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XPathContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XPathContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XPathContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XPathContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XPathContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XPathContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XPathContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__XPathContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XPathContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XPathContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XPathContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XPathContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XPathContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_13_XPathContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XPathContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase __pyx_vtable_4lxml_5etree__XPathEvaluatorBase;

static PyObject *__pyx_tp_new_4lxml_5etree__XPathEvaluatorBase(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase;
  p->_context = ((struct __pyx_obj_4lxml_5etree__XPathContext *)Py_None); Py_INCREF(Py_None);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XPathEvaluatorBase(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *p = (struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_context));
  Py_XDECREF(((PyObject *)p->_error_log));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XPathEvaluatorBase(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *p = (struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)o;
  if (p->_context) {
    e = (*v)(((PyObject*)p->_context), a); if (e) return e;
  }
  if (p->_error_log) {
    e = (*v)(((PyObject*)p->_error_log), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XPathEvaluatorBase(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *p = (struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_context);
  p->_context = ((struct __pyx_obj_4lxml_5etree__XPathContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_error_log);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_19_XPathEvaluatorBase_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XPathEvaluatorBase[] = {
  {__Pyx_NAMESTR("evaluate"), (PyCFunction)__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_evaluate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_19_XPathEvaluatorBase_evaluate)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__XPathEvaluatorBase[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_19_XPathEvaluatorBase_error_log, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XPathEvaluatorBase = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XPathEvaluatorBase = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XPathEvaluatorBase = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XPathEvaluatorBase = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XPathEvaluatorBase = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XPathEvaluatorBase"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XPathEvaluatorBase, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XPathEvaluatorBase, /*tp_as_number*/
  &__pyx_tp_as_sequence__XPathEvaluatorBase, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XPathEvaluatorBase, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XPathEvaluatorBase, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XPathEvaluatorBase, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XPathEvaluatorBase, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XPathEvaluatorBase, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__XPathEvaluatorBase, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XPathEvaluatorBase, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XPathElementEvaluator __pyx_vtable_4lxml_5etree_XPathElementEvaluator;

static PyObject *__pyx_tp_new_4lxml_5etree_XPathElementEvaluator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__XPathEvaluatorBase(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase*)__pyx_vtabptr_4lxml_5etree_XPathElementEvaluator;
  p->_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XPathElementEvaluator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *p = (struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)o;
  Py_XDECREF(((PyObject *)p->_element));
  __pyx_tp_dealloc_4lxml_5etree__XPathEvaluatorBase(o);
}

static int __pyx_tp_traverse_4lxml_5etree_XPathElementEvaluator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *p = (struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)o;
  e = __pyx_tp_traverse_4lxml_5etree__XPathEvaluatorBase(o, v, a); if (e) return e;
  if (p->_element) {
    e = (*v)(((PyObject*)p->_element), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_XPathElementEvaluator(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *p = (struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__XPathEvaluatorBase(o);
  tmp = ((PyObject*)p->_element);
  p->_element = ((struct LxmlElement *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XPathElementEvaluator[] = {
  {__Pyx_NAMESTR("register_namespace"), (PyCFunction)__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespace, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21XPathElementEvaluator_register_namespace)},
  {__Pyx_NAMESTR("register_namespaces"), (PyCFunction)__pyx_pf_4lxml_5etree_21XPathElementEvaluator_register_namespaces, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21XPathElementEvaluator_register_namespaces)},
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_21XPathElementEvaluator___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_21XPathElementEvaluator___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XPathElementEvaluator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XPathElementEvaluator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XPathElementEvaluator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XPathElementEvaluator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XPathElementEvaluator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XPathElementEvaluator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XPathElementEvaluator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XPathElementEvaluator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XPathElementEvaluator, /*tp_as_number*/
  &__pyx_tp_as_sequence_XPathElementEvaluator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XPathElementEvaluator, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_21XPathElementEvaluator___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XPathElementEvaluator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XPathElementEvaluator(self, element, namespaces=None, extensions=None, regexp=True, smart_strings=True)\n    Create an XPath evaluator for an element.\n\n    Absolute XPath expressions (starting with '/') will be evaluated against\n    the ElementTree as returned by getroottree().\n\n    Additional namespace declarations can be passed with the\n    'namespace' keyword argument.  EXSLT regular expression support\n    can be disabled with the 'regexp' boolean keyword (defaults to\n    True).  Smart strings will be returned for string results unless\n    you pass ``smart_strings=False``.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XPathElementEvaluator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XPathElementEvaluator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XPathElementEvaluator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_21XPathElementEvaluator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XPathElementEvaluator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XPathDocumentEvaluator __pyx_vtable_4lxml_5etree_XPathDocumentEvaluator;

static PyObject *__pyx_tp_new_4lxml_5etree_XPathDocumentEvaluator(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_XPathElementEvaluator(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase*)__pyx_vtabptr_4lxml_5etree_XPathDocumentEvaluator;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XPathDocumentEvaluator[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_22XPathDocumentEvaluator___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XPathDocumentEvaluator = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XPathDocumentEvaluator = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XPathDocumentEvaluator = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XPathDocumentEvaluator = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XPathDocumentEvaluator = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XPathDocumentEvaluator"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XPathElementEvaluator, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XPathDocumentEvaluator, /*tp_as_number*/
  &__pyx_tp_as_sequence_XPathDocumentEvaluator, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XPathDocumentEvaluator, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XPathDocumentEvaluator, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XPathDocumentEvaluator(self, etree, namespaces=None, extensions=None, regexp=True, smart_strings=True)\n    Create an XPath evaluator for an ElementTree.\n\n    Additional namespace declarations can be passed with the\n    'namespace' keyword argument.  EXSLT regular expression support\n    can be disabled with the 'regexp' boolean keyword (defaults to\n    True).  Smart strings will be returned for string results unless\n    you pass ``smart_strings=False``.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XPathElementEvaluator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XPathElementEvaluator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XPathDocumentEvaluator, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_22XPathDocumentEvaluator___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XPathDocumentEvaluator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XPath __pyx_vtable_4lxml_5etree_XPath;

static PyObject *__pyx_tp_new_4lxml_5etree_XPath(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XPath *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__XPathEvaluatorBase(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XPath *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase*)__pyx_vtabptr_4lxml_5etree_XPath;
  p->path = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XPath(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XPath *p = (struct __pyx_obj_4lxml_5etree_XPath *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_5XPath___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(p->path);
  __pyx_tp_dealloc_4lxml_5etree__XPathEvaluatorBase(o);
}

static int __pyx_tp_traverse_4lxml_5etree_XPath(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_XPath *p = (struct __pyx_obj_4lxml_5etree_XPath *)o;
  e = __pyx_tp_traverse_4lxml_5etree__XPathEvaluatorBase(o, v, a); if (e) return e;
  if (p->path) {
    e = (*v)(p->path, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_XPath(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XPath *p = (struct __pyx_obj_4lxml_5etree_XPath *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__XPathEvaluatorBase(o);
  tmp = ((PyObject*)p->path);
  p->path = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XPath[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_5XPath___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_5XPath___call__)},
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_5XPath___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyMemberDef __pyx_members_4lxml_5etree_XPath[] = {
  {(char *)"path", T_OBJECT, offsetof(struct __pyx_obj_4lxml_5etree_XPath, path), READONLY, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XPath = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XPath = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XPath = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XPath = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XPath = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XPath"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XPath), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XPath, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_5XPath___repr__, /*tp_repr*/
  &__pyx_tp_as_number_XPath, /*tp_as_number*/
  &__pyx_tp_as_sequence_XPath, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XPath, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_5XPath___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XPath, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XPath(self, path, namespaces=None, extensions=None, regexp=True, smart_strings=True)\n    A compiled XPath expression that can be called on Elements and ElementTrees.\n\n    Besides the XPath expression, you can pass prefix-namespace\n    mappings and extension functions to the constructor through the\n    keyword arguments ``namespaces`` and ``extensions``.  EXSLT\n    regular expression support can be disabled with the 'regexp'\n    boolean keyword (defaults to True).  Smart strings will be\n    returned for string results unless you pass\n    ``smart_strings=False``.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XPath, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XPath, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XPath, /*tp_methods*/
  __pyx_members_4lxml_5etree_XPath, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_5XPath___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XPath, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_ETXPath __pyx_vtable_4lxml_5etree_ETXPath;

static PyObject *__pyx_tp_new_4lxml_5etree_ETXPath(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_ETXPath *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree_XPath(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_ETXPath *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__XPathEvaluatorBase*)__pyx_vtabptr_4lxml_5etree_ETXPath;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_ETXPath[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_ETXPath = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_ETXPath = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ETXPath = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_ETXPath = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_ETXPath = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.ETXPath"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_ETXPath), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XPath, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_ETXPath, /*tp_as_number*/
  &__pyx_tp_as_sequence_ETXPath, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ETXPath, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_ETXPath, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("ETXPath(self, path, extensions=None, regexp=True)\n    Special XPath class that supports the ElementTree {uri} notation for namespaces.\n\n    Note that this class does not accept the ``namespace`` keyword\n    argument. All namespaces must be passed as part of the path\n    string.  Smart strings will be returned for string results unless\n    you pass ``smart_strings=False``.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XPath, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XPath, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_ETXPath, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_7ETXPath___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_ETXPath, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTResolverContext __pyx_vtable_4lxml_5etree__XSLTResolverContext;

static PyObject *__pyx_tp_new_4lxml_5etree__XSLTResolverContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ResolverContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext*)__pyx_vtabptr_4lxml_5etree__XSLTResolverContext;
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XSLTResolverContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *p = (struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)o;
  Py_XDECREF(((PyObject *)p->_parser));
  __pyx_tp_dealloc_4lxml_5etree__ResolverContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XSLTResolverContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *p = (struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ResolverContext(o, v, a); if (e) return e;
  if (p->_parser) {
    e = (*v)(((PyObject*)p->_parser), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XSLTResolverContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTResolverContext *p = (struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ResolverContext(o);
  tmp = ((PyObject*)p->_parser);
  p->_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XSLTResolverContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XSLTResolverContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XSLTResolverContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XSLTResolverContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XSLTResolverContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XSLTResolverContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XSLTResolverContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XSLTResolverContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XSLTResolverContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XSLTResolverContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__XSLTResolverContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XSLTResolverContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XSLTResolverContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XSLTResolverContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XSLTResolverContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XSLTResolverContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XSLTResolverContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XSLTAccessControl __pyx_vtable_4lxml_5etree_XSLTAccessControl;

static PyObject *__pyx_tp_new_4lxml_5etree_XSLTAccessControl(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XSLTAccessControl *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree_XSLTAccessControl;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XSLTAccessControl(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_17XSLTAccessControl___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_4lxml_5etree_17XSLTAccessControl_options(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XSLTAccessControl[] = {
  {__Pyx_NAMESTR("__repr__"), (PyCFunction)__pyx_pf_4lxml_5etree_17XSLTAccessControl___repr__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree_XSLTAccessControl[] = {
  {(char *)"options", __pyx_getprop_4lxml_5etree_17XSLTAccessControl_options, 0, __Pyx_DOCSTR(__pyx_k_379), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XSLTAccessControl = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XSLTAccessControl = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XSLTAccessControl = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XSLTAccessControl = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XSLTAccessControl = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XSLTAccessControl"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XSLTAccessControl), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XSLTAccessControl, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  __pyx_pf_4lxml_5etree_17XSLTAccessControl___repr__, /*tp_repr*/
  &__pyx_tp_as_number_XSLTAccessControl, /*tp_as_number*/
  &__pyx_tp_as_sequence_XSLTAccessControl, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XSLTAccessControl, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XSLTAccessControl, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("XSLTAccessControl(self, read_file=True, write_file=True, create_dir=True, read_network=True, write_network=True)\n\n    Access control for XSLT: reading/writing files, directories and\n    network I/O.  Access to a type of resource is granted or denied by\n    passing any of the following boolean keyword arguments.  All of\n    them default to True to allow access.\n\n    - read_file\n    - write_file\n    - create_dir\n    - read_network\n    - write_network\n\n    For convenience, there is also a class member `DENY_ALL` that\n    provides an XSLTAccessControl instance that is readily configured\n    to deny everything, and a `DENY_WRITE` member that denies all\n    write access but allows read access.\n\n    See `XSLT`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XSLTAccessControl, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree_XSLTAccessControl, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_17XSLTAccessControl___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XSLTAccessControl, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTContext __pyx_vtable_4lxml_5etree__XSLTContext;

static PyObject *__pyx_tp_new_4lxml_5etree__XSLTContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__BaseContext(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__BaseContext*)__pyx_vtabptr_4lxml_5etree__XSLTContext;
  p->_extension_element_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); Py_INCREF(Py_None);
  p->_extension_elements = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XSLTContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *p = (struct __pyx_obj_4lxml_5etree__XSLTContext *)o;
  Py_XDECREF(((PyObject *)p->_extension_element_proxy));
  Py_XDECREF(((PyObject *)p->_extension_elements));
  __pyx_tp_dealloc_4lxml_5etree__BaseContext(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XSLTContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XSLTContext *p = (struct __pyx_obj_4lxml_5etree__XSLTContext *)o;
  e = __pyx_tp_traverse_4lxml_5etree__BaseContext(o, v, a); if (e) return e;
  if (p->_extension_element_proxy) {
    e = (*v)(((PyObject*)p->_extension_element_proxy), a); if (e) return e;
  }
  if (p->_extension_elements) {
    e = (*v)(p->_extension_elements, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XSLTContext(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTContext *p = (struct __pyx_obj_4lxml_5etree__XSLTContext *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__BaseContext(o);
  tmp = ((PyObject*)p->_extension_element_proxy);
  p->_extension_element_proxy = ((struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_extension_elements);
  p->_extension_elements = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XSLTContext[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XSLTContext = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XSLTContext = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XSLTContext = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XSLTContext = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XSLTContext = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XSLTContext"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XSLTContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XSLTContext, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XSLTContext, /*tp_as_number*/
  &__pyx_tp_as_sequence__XSLTContext, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XSLTContext, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XSLTContext, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XSLTContext, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XSLTContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XSLTContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_12_XSLTContext___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XSLTContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree__XSLTQuotedStringParam(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)o);
  p->strval = ((PyObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XSLTQuotedStringParam(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *p = (struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)o;
  Py_XDECREF(((PyObject *)p->strval));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XSLTQuotedStringParam(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *p = (struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)o;
  if (p->strval) {
    e = (*v)(p->strval, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XSLTQuotedStringParam(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *p = (struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->strval);
  p->strval = ((PyObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XSLTQuotedStringParam[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XSLTQuotedStringParam = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XSLTQuotedStringParam = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XSLTQuotedStringParam = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XSLTQuotedStringParam = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XSLTQuotedStringParam = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XSLTQuotedStringParam"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XSLTQuotedStringParam), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XSLTQuotedStringParam, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XSLTQuotedStringParam, /*tp_as_number*/
  &__pyx_tp_as_sequence__XSLTQuotedStringParam, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XSLTQuotedStringParam, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XSLTQuotedStringParam, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("A wrapper class for literal XSLT string parameters that require\n    quote escaping.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XSLTQuotedStringParam, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XSLTQuotedStringParam, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XSLTQuotedStringParam, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_22_XSLTQuotedStringParam___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XSLTQuotedStringParam, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree_XSLT __pyx_vtable_4lxml_5etree_XSLT;

static PyObject *__pyx_tp_new_4lxml_5etree_XSLT(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree_XSLT *p;
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree_XSLT *)o);
  p->__pyx_vtab = __pyx_vtabptr_4lxml_5etree_XSLT;
  p->_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None); Py_INCREF(Py_None);
  p->_xslt_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); Py_INCREF(Py_None);
  p->_access_control = ((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)Py_None); Py_INCREF(Py_None);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XSLT(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XSLT *p = (struct __pyx_obj_4lxml_5etree_XSLT *)o;
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_4XSLT___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  Py_XDECREF(((PyObject *)p->_context));
  Py_XDECREF(((PyObject *)p->_xslt_resolver_context));
  Py_XDECREF(((PyObject *)p->_access_control));
  Py_XDECREF(((PyObject *)p->_error_log));
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4lxml_5etree_XSLT(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree_XSLT *p = (struct __pyx_obj_4lxml_5etree_XSLT *)o;
  if (p->_context) {
    e = (*v)(((PyObject*)p->_context), a); if (e) return e;
  }
  if (p->_xslt_resolver_context) {
    e = (*v)(((PyObject*)p->_xslt_resolver_context), a); if (e) return e;
  }
  if (p->_access_control) {
    e = (*v)(((PyObject*)p->_access_control), a); if (e) return e;
  }
  if (p->_error_log) {
    e = (*v)(((PyObject*)p->_error_log), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree_XSLT(PyObject *o) {
  struct __pyx_obj_4lxml_5etree_XSLT *p = (struct __pyx_obj_4lxml_5etree_XSLT *)o;
  PyObject* tmp;
  tmp = ((PyObject*)p->_context);
  p->_context = ((struct __pyx_obj_4lxml_5etree__XSLTContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_xslt_resolver_context);
  p->_xslt_resolver_context = ((struct __pyx_obj_4lxml_5etree__XSLTResolverContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_access_control);
  p->_access_control = ((struct __pyx_obj_4lxml_5etree_XSLTAccessControl *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_error_log);
  p->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_4XSLT_error_log(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XSLT[] = {
  {__Pyx_NAMESTR("strparam"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT_strparam, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_4XSLT_strparam)},
  {__Pyx_NAMESTR("apply"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT_apply, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_4XSLT_apply)},
  {__Pyx_NAMESTR("tostring"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT_tostring, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_4XSLT_tostring)},
  {__Pyx_NAMESTR("__deepcopy__"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT___deepcopy__, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT___copy__, METH_NOARGS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_4XSLT___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_4XSLT___call__)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree_XSLT[] = {
  {(char *)"error_log", __pyx_getprop_4lxml_5etree_4XSLT_error_log, 0, __Pyx_DOCSTR(__pyx_k_380), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XSLT = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XSLT = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XSLT = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XSLT = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XSLT = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XSLT"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XSLT), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XSLT, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XSLT, /*tp_as_number*/
  &__pyx_tp_as_sequence_XSLT, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XSLT, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_4XSLT___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XSLT, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("XSLT(self, xslt_input, extensions=None, regexp=True, access_control=None)\n\n    Turn an XSL document into an XSLT object.\n\n    Calling this object on a tree or Element will execute the XSLT::\n\n      >>> transform = etree.XSLT(xsl_tree)\n      >>> result = transform(xml_tree)\n\n    Keyword arguments of the constructor:\n\n    - extensions: a dict mapping ``(namespace, name)`` pairs to\n      extension functions or extension elements\n    - regexp: enable exslt regular expression support in XPath\n      (default: True)\n    - access_control: access restrictions for network or file\n      system (see `XSLTAccessControl`)\n\n    Keyword arguments of the XSLT call:\n\n    - profile_run: enable XSLT profiling (default: False)\n\n    Other keyword arguments of the call are passed to the stylesheet\n    as parameters.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree_XSLT, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree_XSLT, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XSLT, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree_XSLT, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_4XSLT___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XSLT, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTResultTree __pyx_vtable_4lxml_5etree__XSLTResultTree;

static PyObject *__pyx_tp_new_4lxml_5etree__XSLTResultTree(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XSLTResultTree *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__ElementTree(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XSLTResultTree *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree__ElementTree*)__pyx_vtabptr_4lxml_5etree__XSLTResultTree;
  p->_xslt = ((struct __pyx_obj_4lxml_5etree_XSLT *)Py_None); Py_INCREF(Py_None);
  p->_profile = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree__XSLTResultTree(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTResultTree *p = (struct __pyx_obj_4lxml_5etree__XSLTResultTree *)o;
  Py_XDECREF(((PyObject *)p->_xslt));
  Py_XDECREF(((PyObject *)p->_profile));
  __pyx_tp_dealloc_4lxml_5etree__ElementTree(o);
}

static int __pyx_tp_traverse_4lxml_5etree__XSLTResultTree(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4lxml_5etree__XSLTResultTree *p = (struct __pyx_obj_4lxml_5etree__XSLTResultTree *)o;
  e = __pyx_tp_traverse_4lxml_5etree__ElementTree(o, v, a); if (e) return e;
  if (p->_xslt) {
    e = (*v)(((PyObject*)p->_xslt), a); if (e) return e;
  }
  if (p->_profile) {
    e = (*v)(((PyObject*)p->_profile), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4lxml_5etree__XSLTResultTree(PyObject *o) {
  struct __pyx_obj_4lxml_5etree__XSLTResultTree *p = (struct __pyx_obj_4lxml_5etree__XSLTResultTree *)o;
  PyObject* tmp;
  __pyx_tp_clear_4lxml_5etree__ElementTree(o);
  tmp = ((PyObject*)p->_xslt);
  p->_xslt = ((struct __pyx_obj_4lxml_5etree_XSLT *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_profile);
  p->_profile = ((struct LxmlDocument *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4lxml_5etree_15_XSLTResultTree_xslt_profile(PyObject *o, void *x) {
  return __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(o);
}

static int __pyx_setprop_4lxml_5etree_15_XSLTResultTree_xslt_profile(PyObject *o, PyObject *v, void *x) {
  if (v) {
    PyErr_SetString(PyExc_NotImplementedError, "__set__");
    return -1;
  }
  else {
    return __pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___del__(o);
  }
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XSLTResultTree[] = {
  {__Pyx_NAMESTR("__str__"), (PyCFunction)__pyx_pf_4lxml_5etree_15_XSLTResultTree___str__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("__unicode__"), (PyCFunction)__pyx_pf_4lxml_5etree_15_XSLTResultTree___unicode__, METH_NOARGS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4lxml_5etree__XSLTResultTree[] = {
  {(char *)"xslt_profile", __pyx_getprop_4lxml_5etree_15_XSLTResultTree_xslt_profile, __pyx_setprop_4lxml_5etree_15_XSLTResultTree_xslt_profile, __Pyx_DOCSTR(__pyx_k_381), 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XSLTResultTree = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XSLTResultTree = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XSLTResultTree = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XSLTResultTree = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  __pyx_pf_4lxml_5etree_15_XSLTResultTree___getbuffer__, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  __pyx_pf_4lxml_5etree_15_XSLTResultTree___releasebuffer__, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XSLTResultTree = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XSLTResultTree"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XSLTResultTree), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__XSLTResultTree, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XSLTResultTree, /*tp_as_number*/
  &__pyx_tp_as_sequence__XSLTResultTree, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XSLTResultTree, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pf_4lxml_5etree_15_XSLTResultTree___str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XSLTResultTree, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__XSLTResultTree, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__XSLTResultTree, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XSLTResultTree, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4lxml_5etree__XSLTResultTree, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XSLTResultTree, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};
static struct __pyx_vtabstruct_4lxml_5etree__XSLTProcessingInstruction __pyx_vtable_4lxml_5etree__XSLTProcessingInstruction;

static PyObject *__pyx_tp_new_4lxml_5etree__XSLTProcessingInstruction(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *p;
  PyObject *o = __pyx_tp_new_4lxml_5etree__Element(t, a, k);
  if (!o) return 0;
  p = ((struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement*)__pyx_vtabptr_4lxml_5etree__XSLTProcessingInstruction;
  return o;
}

static struct PyMethodDef __pyx_methods_4lxml_5etree__XSLTProcessingInstruction[] = {
  {__Pyx_NAMESTR("parseXSL"), (PyCFunction)__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_26_XSLTProcessingInstruction_parseXSL)},
  {__Pyx_NAMESTR("set"), (PyCFunction)__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_set, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("get"), (PyCFunction)__pyx_pf_4lxml_5etree_26_XSLTProcessingInstruction_get, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__XSLTProcessingInstruction = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence__XSLTProcessingInstruction = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__XSLTProcessingInstruction = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__XSLTProcessingInstruction = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree__XSLTProcessingInstruction = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree._XSLTProcessingInstruction"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree__XSLTProcessingInstruction), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree__Element, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__XSLTProcessingInstruction, /*tp_as_number*/
  &__pyx_tp_as_sequence__XSLTProcessingInstruction, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__XSLTProcessingInstruction, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__XSLTProcessingInstruction, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Element, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Element, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree__XSLTProcessingInstruction, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree__XSLTProcessingInstruction, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_XSLTExtension(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_XSLTExtension(PyObject *o) {
  (*Py_TYPE(o)->tp_free)(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_XSLTExtension[] = {
  {__Pyx_NAMESTR("execute"), (PyCFunction)__pyx_pf_4lxml_5etree_13XSLTExtension_execute, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13XSLTExtension_execute)},
  {__Pyx_NAMESTR("apply_templates"), (PyCFunction)__pyx_pf_4lxml_5etree_13XSLTExtension_apply_templates, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_13XSLTExtension_apply_templates)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_XSLTExtension = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_XSLTExtension = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_XSLTExtension = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_XSLTExtension = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_XSLTExtension = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.XSLTExtension"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_XSLTExtension), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_XSLTExtension, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_XSLTExtension, /*tp_as_number*/
  &__pyx_tp_as_sequence_XSLTExtension, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_XSLTExtension, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_XSLTExtension, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  __Pyx_DOCSTR("Base class of an XSLT extension element.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_XSLTExtension, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_XSLTExtension, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_DTD(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_4lxml_5etree__Validator(t, a, k);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_DTD(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_3DTD___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  __pyx_tp_dealloc_4lxml_5etree__Validator(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_DTD[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_3DTD___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_3DTD___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_DTD = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_DTD = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_DTD = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_DTD = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_DTD = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.DTD"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_DTD), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_DTD, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_DTD, /*tp_as_number*/
  &__pyx_tp_as_sequence_DTD, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_DTD, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_3DTD___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_DTD, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("DTD(self, file=None, external_id=None)\n    A DTD validator.\n\n    Can load from filesystem directly given a filename or file-like object.\n    Alternatively, pass the keyword parameter ``external_id`` to load from a\n    catalog.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Validator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Validator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_DTD, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_3DTD___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_DTD, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_RelaxNG(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_4lxml_5etree__Validator(t, a, k);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_RelaxNG(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_7RelaxNG___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  __pyx_tp_dealloc_4lxml_5etree__Validator(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_RelaxNG[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_7RelaxNG___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_7RelaxNG___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_RelaxNG = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_RelaxNG = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_RelaxNG = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_RelaxNG = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_RelaxNG = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.RelaxNG"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_RelaxNG), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_RelaxNG, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_RelaxNG, /*tp_as_number*/
  &__pyx_tp_as_sequence_RelaxNG, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_RelaxNG, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_7RelaxNG___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_RelaxNG, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("RelaxNG(self, etree=None, file=None)\n    Turn a document into a Relax NG validator.\n\n    Either pass a schema as Element or ElementTree, or pass a file or\n    filename through the ``file`` keyword argument.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Validator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Validator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_RelaxNG, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_7RelaxNG___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_RelaxNG, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static PyObject *__pyx_tp_new_4lxml_5etree_Schematron(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_4lxml_5etree__Validator(t, a, k);
  if (!o) return 0;
  return o;
}

static void __pyx_tp_dealloc_4lxml_5etree_Schematron(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pf_4lxml_5etree_10Schematron___dealloc__(o);
    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  __pyx_tp_dealloc_4lxml_5etree__Validator(o);
}

static struct PyMethodDef __pyx_methods_4lxml_5etree_Schematron[] = {
  {__Pyx_NAMESTR("__call__"), (PyCFunction)__pyx_pf_4lxml_5etree_10Schematron___call__, METH_VARARGS|METH_KEYWORDS|METH_COEXIST, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_10Schematron___call__)},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Schematron = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION >= 3
  0, /*reserved*/
  #else
  0, /*nb_long*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  #if (PY_MAJOR_VERSION >= 3) || (Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX)
  0, /*nb_index*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Schematron = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Schematron = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Schematron = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_getbuffer*/
  #endif
  #if PY_VERSION_HEX >= 0x02060000
  0, /*bf_releasebuffer*/
  #endif
};

PyTypeObject __pyx_type_4lxml_5etree_Schematron = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("lxml.etree.Schematron"), /*tp_name*/
  sizeof(struct __pyx_obj_4lxml_5etree_Schematron), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4lxml_5etree_Schematron, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_Schematron, /*tp_as_number*/
  &__pyx_tp_as_sequence_Schematron, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Schematron, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pf_4lxml_5etree_10Schematron___call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Schematron, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("Schematron(self, etree=None, file=None)\n    A Schematron validator.\n\n    Pass a root Element or an ElementTree to turn it into a validator.\n    Alternatively, pass a filename as keyword argument 'file' to parse from\n    the file system.\n\n    Schematron is a less well known, but very powerful schema language.  The main\n    idea is to use the capabilities of XPath to put restrictions on the structure\n    and the content of XML documents.  Here is a simple example::\n\n      >>> schematron = etree.Schematron(etree.XML('''\n      ... <schema xmlns=\"http://www.ascc.net/xml/schematron\" >\n      ...   <pattern name=\"id is the only permited attribute name\">\n      ...     <rule context=\"*\">\n      ...       <report test=\"@*[not(name()='id')]\">Attribute\n      ...         <name path=\"@*[not(name()='id')]\"/> is forbidden<name/>\n      ...       </report>\n      ...     </rule>\n      ...   </pattern>\n      ... </schema>\n      ... '''))\n\n      >>> xml = etree.XML('''\n      ... <AAA name=\"aaa\">\n      ...   <BBB id=\"bbb\"/>\n      ...   <CCC color=\"ccc\"/>\n      ... </AAA>\n      ... ''')\n\n      >>> schematron.validate(xml)\n      0\n\n      >>> xml = etree.XML('''\n      ... <AAA id=\"aaa\">\n      ...   <BBB id=\"bbb\"/>\n      ...   <CCC/>\n      ... </AAA>\n      ... ''')\n\n      >>> schematron.validate(xml)\n      1\n\n    Schematron was added to libxml2 in version 2.6.21.  Before version 2.6.32,\n    however, Schematron lacked support for error reporting other than to stderr.\n    This version is therefore required to retrieve validation warnings and\n    errors in lxml.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4lxml_5etree__Validator, /*tp_traverse*/
  __pyx_tp_clear_4lxml_5etree__Validator, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4lxml_5etree_Schematron, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pf_4lxml_5etree_10Schematron___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4lxml_5etree_Schematron, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
};

static struct PyMethodDef __pyx_methods[] = {
  {__Pyx_NAMESTR("clear_error_log"), (PyCFunction)__pyx_pf_4lxml_5etree_clear_error_log, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_clear_error_log)},
  {__Pyx_NAMESTR("use_global_python_log"), (PyCFunction)__pyx_pf_4lxml_5etree_use_global_python_log, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_use_global_python_log)},
  {__Pyx_NAMESTR("Element"), (PyCFunction)__pyx_pf_4lxml_5etree_Element, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_Element)},
  {__Pyx_NAMESTR("Comment"), (PyCFunction)__pyx_pf_4lxml_5etree_Comment, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_Comment)},
  {__Pyx_NAMESTR("ProcessingInstruction"), (PyCFunction)__pyx_pf_4lxml_5etree_ProcessingInstruction, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_ProcessingInstruction)},
  {__Pyx_NAMESTR("Entity"), (PyCFunction)__pyx_pf_4lxml_5etree_Entity, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_Entity)},
  {__Pyx_NAMESTR("SubElement"), (PyCFunction)__pyx_pf_4lxml_5etree_SubElement, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_SubElement)},
  {__Pyx_NAMESTR("ElementTree"), (PyCFunction)__pyx_pf_4lxml_5etree_ElementTree, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_ElementTree)},
  {__Pyx_NAMESTR("HTML"), (PyCFunction)__pyx_pf_4lxml_5etree_HTML, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_HTML)},
  {__Pyx_NAMESTR("XML"), (PyCFunction)__pyx_pf_4lxml_5etree_XML, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_XML)},
  {__Pyx_NAMESTR("fromstring"), (PyCFunction)__pyx_pf_4lxml_5etree_fromstring, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_fromstring)},
  {__Pyx_NAMESTR("fromstringlist"), (PyCFunction)__pyx_pf_4lxml_5etree_fromstringlist, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_fromstringlist)},
  {__Pyx_NAMESTR("iselement"), (PyCFunction)__pyx_pf_4lxml_5etree_iselement, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_iselement)},
  {__Pyx_NAMESTR("dump"), (PyCFunction)__pyx_pf_4lxml_5etree_dump, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_dump)},
  {__Pyx_NAMESTR("tostring"), (PyCFunction)__pyx_pf_4lxml_5etree_tostring, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_tostring)},
  {__Pyx_NAMESTR("tostringlist"), (PyCFunction)__pyx_pf_4lxml_5etree_tostringlist, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_tostringlist)},
  {__Pyx_NAMESTR("tounicode"), (PyCFunction)__pyx_pf_4lxml_5etree_tounicode, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_tounicode)},
  {__Pyx_NAMESTR("parse"), (PyCFunction)__pyx_pf_4lxml_5etree_parse, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_parse)},
  {__Pyx_NAMESTR("set_element_class_lookup"), (PyCFunction)__pyx_pf_4lxml_5etree_set_element_class_lookup, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_set_element_class_lookup)},
  {__Pyx_NAMESTR("FunctionNamespace"), (PyCFunction)__pyx_pf_4lxml_5etree_FunctionNamespace, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_FunctionNamespace)},
  {__Pyx_NAMESTR("set_default_parser"), (PyCFunction)__pyx_pf_4lxml_5etree_set_default_parser, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_set_default_parser)},
  {__Pyx_NAMESTR("get_default_parser"), (PyCFunction)__pyx_pf_4lxml_5etree_get_default_parser, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_get_default_parser)},
  {__Pyx_NAMESTR("XMLID"), (PyCFunction)__pyx_pf_4lxml_5etree_XMLID, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_XMLID)},
  {__Pyx_NAMESTR("XMLDTDID"), (PyCFunction)__pyx_pf_4lxml_5etree_XMLDTDID, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_XMLDTDID)},
  {__Pyx_NAMESTR("parseid"), (PyCFunction)__pyx_pf_4lxml_5etree_parseid, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_parseid)},
  {__Pyx_NAMESTR("cleanup_namespaces"), (PyCFunction)__pyx_pf_4lxml_5etree_cleanup_namespaces, METH_O, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_cleanup_namespaces)},
  {__Pyx_NAMESTR("strip_attributes"), (PyCFunction)__pyx_pf_4lxml_5etree_strip_attributes, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_strip_attributes)},
  {__Pyx_NAMESTR("strip_elements"), (PyCFunction)__pyx_pf_4lxml_5etree_strip_elements, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_strip_elements)},
  {__Pyx_NAMESTR("strip_tags"), (PyCFunction)__pyx_pf_4lxml_5etree_strip_tags, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_strip_tags)},
  {__Pyx_NAMESTR("Extension"), (PyCFunction)__pyx_pf_4lxml_5etree_Extension, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_Extension)},
  {__Pyx_NAMESTR("XPathEvaluator"), (PyCFunction)__pyx_pf_4lxml_5etree_XPathEvaluator, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4lxml_5etree_XPathEvaluator)},
  {0, 0, 0, 0}
};

static void __pyx_init_filenames(void); /*proto*/

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    __Pyx_NAMESTR("etree"),
    __Pyx_DOCSTR(__pyx_k_382), /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_u_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 1, 0, 0},
  {&__pyx_kp_u_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 1, 0, 0},
  {&__pyx_kp_b_100, __pyx_k_100, sizeof(__pyx_k_100), 0, 0, 0, 0},
  {&__pyx_kp_s_100, __pyx_k_100, sizeof(__pyx_k_100), 0, 0, 1, 0},
  {&__pyx_kp_u_100, __pyx_k_100, sizeof(__pyx_k_100), 0, 1, 0, 0},
  {&__pyx_kp_u_101, __pyx_k_101, sizeof(__pyx_k_101), 0, 1, 0, 0},
  {&__pyx_kp_u_102, __pyx_k_102, sizeof(__pyx_k_102), 0, 1, 0, 0},
  {&__pyx_kp_s_103, __pyx_k_103, sizeof(__pyx_k_103), 0, 0, 1, 0},
  {&__pyx_kp_u_104, __pyx_k_104, sizeof(__pyx_k_104), 0, 1, 0, 0},
  {&__pyx_kp_u_105, __pyx_k_105, sizeof(__pyx_k_105), 0, 1, 0, 0},
  {&__pyx_kp_u_106, __pyx_k_106, sizeof(__pyx_k_106), 0, 1, 0, 0},
  {&__pyx_kp_u_107, __pyx_k_107, sizeof(__pyx_k_107), 0, 1, 0, 0},
  {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
  {&__pyx_kp_u_111, __pyx_k_111, sizeof(__pyx_k_111), 0, 1, 0, 0},
  {&__pyx_kp_u_112, __pyx_k_112, sizeof(__pyx_k_112), 0, 1, 0, 0},
  {&__pyx_n_s_113, __pyx_k_113, sizeof(__pyx_k_113), 0, 0, 1, 1},
  {&__pyx_kp_u_114, __pyx_k_114, sizeof(__pyx_k_114), 0, 1, 0, 0},
  {&__pyx_kp_u_115, __pyx_k_115, sizeof(__pyx_k_115), 0, 1, 0, 0},
  {&__pyx_n_s_116, __pyx_k_116, sizeof(__pyx_k_116), 0, 0, 1, 1},
  {&__pyx_kp_u_117, __pyx_k_117, sizeof(__pyx_k_117), 0, 1, 0, 0},
  {&__pyx_kp_u_118, __pyx_k_118, sizeof(__pyx_k_118), 0, 1, 0, 0},
  {&__pyx_kp_u_119, __pyx_k_119, sizeof(__pyx_k_119), 0, 1, 0, 0},
  {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
  {&__pyx_kp_s_120, __pyx_k_120, sizeof(__pyx_k_120), 0, 0, 1, 0},
  {&__pyx_kp_u_121, __pyx_k_121, sizeof(__pyx_k_121), 0, 1, 0, 0},
  {&__pyx_n_s_122, __pyx_k_122, sizeof(__pyx_k_122), 0, 0, 1, 1},
  {&__pyx_n_u_123, __pyx_k_123, sizeof(__pyx_k_123), 0, 1, 0, 1},
  {&__pyx_n_s_124, __pyx_k_124, sizeof(__pyx_k_124), 0, 0, 1, 1},
  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
  {&__pyx_n_s_130, __pyx_k_130, sizeof(__pyx_k_130), 0, 0, 1, 1},
  {&__pyx_kp_u_131, __pyx_k_131, sizeof(__pyx_k_131), 0, 1, 0, 0},
  {&__pyx_kp_u_132, __pyx_k_132, sizeof(__pyx_k_132), 0, 1, 0, 0},
  {&__pyx_kp_u_133, __pyx_k_133, sizeof(__pyx_k_133), 0, 1, 0, 0},
  {&__pyx_kp_u_134, __pyx_k_134, sizeof(__pyx_k_134), 0, 1, 0, 0},
  {&__pyx_n_s_135, __pyx_k_135, sizeof(__pyx_k_135), 0, 0, 1, 1},
  {&__pyx_kp_u_136, __pyx_k_136, sizeof(__pyx_k_136), 0, 1, 0, 0},
  {&__pyx_kp_u_137, __pyx_k_137, sizeof(__pyx_k_137), 0, 1, 0, 0},
  {&__pyx_n_s_138, __pyx_k_138, sizeof(__pyx_k_138), 0, 0, 1, 1},
  {&__pyx_n_s_139, __pyx_k_139, sizeof(__pyx_k_139), 0, 0, 1, 1},
  {&__pyx_kp_b_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 0, 0},
  {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
  {&__pyx_kp_u_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 1, 0, 0},
  {&__pyx_n_s_140, __pyx_k_140, sizeof(__pyx_k_140), 0, 0, 1, 1},
  {&__pyx_n_s_141, __pyx_k_141, sizeof(__pyx_k_141), 0, 0, 1, 1},
  {&__pyx_kp_u_142, __pyx_k_142, sizeof(__pyx_k_142), 0, 1, 0, 0},
  {&__pyx_kp_u_143, __pyx_k_143, sizeof(__pyx_k_143), 0, 1, 0, 0},
  {&__pyx_n_s_144, __pyx_k_144, sizeof(__pyx_k_144), 0, 0, 1, 1},
  {&__pyx_n_s_145, __pyx_k_145, sizeof(__pyx_k_145), 0, 0, 1, 1},
  {&__pyx_kp_u_146, __pyx_k_146, sizeof(__pyx_k_146), 0, 1, 0, 0},
  {&__pyx_n_s_147, __pyx_k_147, sizeof(__pyx_k_147), 0, 0, 1, 1},
  {&__pyx_n_s_148, __pyx_k_148, sizeof(__pyx_k_148), 0, 0, 1, 1},
  {&__pyx_kp_u_149, __pyx_k_149, sizeof(__pyx_k_149), 0, 1, 0, 0},
  {&__pyx_n_s_150, __pyx_k_150, sizeof(__pyx_k_150), 0, 0, 1, 1},
  {&__pyx_kp_u_151, __pyx_k_151, sizeof(__pyx_k_151), 0, 1, 0, 0},
  {&__pyx_kp_u_152, __pyx_k_152, sizeof(__pyx_k_152), 0, 1, 0, 0},
  {&__pyx_n_s_153, __pyx_k_153, sizeof(__pyx_k_153), 0, 0, 1, 1},
  {&__pyx_kp_u_154, __pyx_k_154, sizeof(__pyx_k_154), 0, 1, 0, 0},
  {&__pyx_kp_u_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 1, 0, 0},
  {&__pyx_kp_u_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 1, 0, 0},
  {&__pyx_kp_u_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 1, 0, 0},
  {&__pyx_n_s_188, __pyx_k_188, sizeof(__pyx_k_188), 0, 0, 1, 1},
  {&__pyx_kp_u_189, __pyx_k_189, sizeof(__pyx_k_189), 0, 1, 0, 0},
  {&__pyx_kp_u_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 1, 0, 0},
  {&__pyx_kp_u_190, __pyx_k_190, sizeof(__pyx_k_190), 0, 1, 0, 0},
  {&__pyx_kp_u_191, __pyx_k_191, sizeof(__pyx_k_191), 0, 1, 0, 0},
  {&__pyx_n_s_192, __pyx_k_192, sizeof(__pyx_k_192), 0, 0, 1, 1},
  {&__pyx_kp_u_193, __pyx_k_193, sizeof(__pyx_k_193), 0, 1, 0, 0},
  {&__pyx_kp_u_194, __pyx_k_194, sizeof(__pyx_k_194), 0, 1, 0, 0},
  {&__pyx_kp_u_195, __pyx_k_195, sizeof(__pyx_k_195), 0, 1, 0, 0},
  {&__pyx_kp_u_196, __pyx_k_196, sizeof(__pyx_k_196), 0, 1, 0, 0},
  {&__pyx_kp_u_197, __pyx_k_197, sizeof(__pyx_k_197), 0, 1, 0, 0},
  {&__pyx_n_s_198, __pyx_k_198, sizeof(__pyx_k_198), 0, 0, 1, 1},
  {&__pyx_kp_u_199, __pyx_k_199, sizeof(__pyx_k_199), 0, 1, 0, 0},
  {&__pyx_kp_b_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 0, 0},
  {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
  {&__pyx_kp_u_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 1, 0, 0},
  {&__pyx_kp_u_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 1, 0, 0},
  {&__pyx_kp_u_200, __pyx_k_200, sizeof(__pyx_k_200), 0, 1, 0, 0},
  {&__pyx_kp_u_201, __pyx_k_201, sizeof(__pyx_k_201), 0, 1, 0, 0},
  {&__pyx_kp_u_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 1, 0, 0},
  {&__pyx_kp_u_212, __pyx_k_212, sizeof(__pyx_k_212), 0, 1, 0, 0},
  {&__pyx_kp_u_216, __pyx_k_216, sizeof(__pyx_k_216), 0, 1, 0, 0},
  {&__pyx_kp_u_217, __pyx_k_217, sizeof(__pyx_k_217), 0, 1, 0, 0},
  {&__pyx_kp_u_218, __pyx_k_218, sizeof(__pyx_k_218), 0, 1, 0, 0},
  {&__pyx_kp_u_219, __pyx_k_219, sizeof(__pyx_k_219), 0, 1, 0, 0},
  {&__pyx_kp_u_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 1, 0, 0},
  {&__pyx_kp_u_220, __pyx_k_220, sizeof(__pyx_k_220), 0, 1, 0, 0},
  {&__pyx_kp_u_221, __pyx_k_221, sizeof(__pyx_k_221), 0, 1, 0, 0},
  {&__pyx_kp_u_222, __pyx_k_222, sizeof(__pyx_k_222), 0, 1, 0, 0},
  {&__pyx_kp_u_223, __pyx_k_223, sizeof(__pyx_k_223), 0, 1, 0, 0},
  {&__pyx_kp_u_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 1, 0, 0},
  {&__pyx_kp_u_237, __pyx_k_237, sizeof(__pyx_k_237), 0, 1, 0, 0},
  {&__pyx_kp_u_238, __pyx_k_238, sizeof(__pyx_k_238), 0, 1, 0, 0},
  {&__pyx_kp_u_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 1, 0, 0},
  {&__pyx_kp_u_240, __pyx_k_240, sizeof(__pyx_k_240), 0, 1, 0, 0},
  {&__pyx_kp_u_241, __pyx_k_241, sizeof(__pyx_k_241), 0, 1, 0, 0},
  {&__pyx_kp_u_242, __pyx_k_242, sizeof(__pyx_k_242), 0, 1, 0, 0},
  {&__pyx_kp_u_243, __pyx_k_243, sizeof(__pyx_k_243), 0, 1, 0, 0},
  {&__pyx_n_s_244, __pyx_k_244, sizeof(__pyx_k_244), 0, 0, 1, 1},
  {&__pyx_n_s_245, __pyx_k_245, sizeof(__pyx_k_245), 0, 0, 1, 1},
  {&__pyx_kp_u_246, __pyx_k_246, sizeof(__pyx_k_246), 0, 1, 0, 0},
  {&__pyx_kp_u_247, __pyx_k_247, sizeof(__pyx_k_247), 0, 1, 0, 0},
  {&__pyx_kp_u_248, __pyx_k_248, sizeof(__pyx_k_248), 0, 1, 0, 0},
  {&__pyx_n_s_249, __pyx_k_249, sizeof(__pyx_k_249), 0, 0, 1, 1},
  {&__pyx_kp_u_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 1, 0, 0},
  {&__pyx_n_s_250, __pyx_k_250, sizeof(__pyx_k_250), 0, 0, 1, 1},
  {&__pyx_kp_u_251, __pyx_k_251, sizeof(__pyx_k_251), 0, 1, 0, 0},
  {&__pyx_kp_u_252, __pyx_k_252, sizeof(__pyx_k_252), 0, 1, 0, 0},
  {&__pyx_kp_u_253, __pyx_k_253, sizeof(__pyx_k_253), 0, 1, 0, 0},
  {&__pyx_kp_u_254, __pyx_k_254, sizeof(__pyx_k_254), 0, 1, 0, 0},
  {&__pyx_kp_u_255, __pyx_k_255, sizeof(__pyx_k_255), 0, 1, 0, 0},
  {&__pyx_kp_b_256, __pyx_k_256, sizeof(__pyx_k_256), 0, 0, 0, 0},
  {&__pyx_n_s_257, __pyx_k_257, sizeof(__pyx_k_257), 0, 0, 1, 1},
  {&__pyx_kp_u_258, __pyx_k_258, sizeof(__pyx_k_258), 0, 1, 0, 0},
  {&__pyx_kp_u_259, __pyx_k_259, sizeof(__pyx_k_259), 0, 1, 0, 0},
  {&__pyx_kp_u_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 1, 0, 0},
  {&__pyx_kp_u_260, __pyx_k_260, sizeof(__pyx_k_260), 0, 1, 0, 0},
  {&__pyx_kp_u_261, __pyx_k_261, sizeof(__pyx_k_261), 0, 1, 0, 0},
  {&__pyx_kp_u_262, __pyx_k_262, sizeof(__pyx_k_262), 0, 1, 0, 0},
  {&__pyx_n_s_263, __pyx_k_263, sizeof(__pyx_k_263), 0, 0, 1, 1},
  {&__pyx_n_s_264, __pyx_k_264, sizeof(__pyx_k_264), 0, 0, 1, 1},
  {&__pyx_n_s_265, __pyx_k_265, sizeof(__pyx_k_265), 0, 0, 1, 1},
  {&__pyx_kp_u_266, __pyx_k_266, sizeof(__pyx_k_266), 0, 1, 0, 0},
  {&__pyx_n_s_267, __pyx_k_267, sizeof(__pyx_k_267), 0, 0, 1, 1},
  {&__pyx_n_s_268, __pyx_k_268, sizeof(__pyx_k_268), 0, 0, 1, 1},
  {&__pyx_n_s_269, __pyx_k_269, sizeof(__pyx_k_269), 0, 0, 1, 1},
  {&__pyx_kp_u_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 1, 0, 0},
  {&__pyx_n_s_270, __pyx_k_270, sizeof(__pyx_k_270), 0, 0, 1, 1},
  {&__pyx_n_s_271, __pyx_k_271, sizeof(__pyx_k_271), 0, 0, 1, 1},
  {&__pyx_n_s_272, __pyx_k_272, sizeof(__pyx_k_272), 0, 0, 1, 1},
  {&__pyx_kp_u_273, __pyx_k_273, sizeof(__pyx_k_273), 0, 1, 0, 0},
  {&__pyx_kp_u_274, __pyx_k_274, sizeof(__pyx_k_274), 0, 1, 0, 0},
  {&__pyx_kp_u_275, __pyx_k_275, sizeof(__pyx_k_275), 0, 1, 0, 0},
  {&__pyx_n_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 1},
  {&__pyx_kp_s_287, __pyx_k_287, sizeof(__pyx_k_287), 0, 0, 1, 0},
  {&__pyx_kp_u_289, __pyx_k_289, sizeof(__pyx_k_289), 0, 1, 0, 0},
  {&__pyx_kp_u_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 1, 0, 0},
  {&__pyx_kp_u_295, __pyx_k_295, sizeof(__pyx_k_295), 0, 1, 0, 0},
  {&__pyx_kp_u_296, __pyx_k_296, sizeof(__pyx_k_296), 0, 1, 0, 0},
  {&__pyx_kp_u_297, __pyx_k_297, sizeof(__pyx_k_297), 0, 1, 0, 0},
  {&__pyx_kp_u_298, __pyx_k_298, sizeof(__pyx_k_298), 0, 1, 0, 0},
  {&__pyx_kp_u_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 1, 0, 0},
  {&__pyx_kp_u_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 1, 0, 0},
  {&__pyx_kp_u_300, __pyx_k_300, sizeof(__pyx_k_300), 0, 1, 0, 0},
  {&__pyx_n_s_301, __pyx_k_301, sizeof(__pyx_k_301), 0, 0, 1, 1},
  {&__pyx_kp_u_302, __pyx_k_302, sizeof(__pyx_k_302), 0, 1, 0, 0},
  {&__pyx_kp_u_305, __pyx_k_305, sizeof(__pyx_k_305), 0, 1, 0, 0},
  {&__pyx_kp_u_306, __pyx_k_306, sizeof(__pyx_k_306), 0, 1, 0, 0},
  {&__pyx_n_s_307, __pyx_k_307, sizeof(__pyx_k_307), 0, 0, 1, 1},
  {&__pyx_kp_u_308, __pyx_k_308, sizeof(__pyx_k_308), 0, 1, 0, 0},
  {&__pyx_kp_s_309, __pyx_k_309, sizeof(__pyx_k_309), 0, 0, 1, 0},
  {&__pyx_kp_u_309, __pyx_k_309, sizeof(__pyx_k_309), 0, 1, 0, 0},
  {&__pyx_kp_u_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 1, 0, 0},
  {&__pyx_kp_u_310, __pyx_k_310, sizeof(__pyx_k_310), 0, 1, 0, 0},
  {&__pyx_kp_u_311, __pyx_k_311, sizeof(__pyx_k_311), 0, 1, 0, 0},
  {&__pyx_kp_u_312, __pyx_k_312, sizeof(__pyx_k_312), 0, 1, 0, 0},
  {&__pyx_kp_u_313, __pyx_k_313, sizeof(__pyx_k_313), 0, 1, 0, 0},
  {&__pyx_kp_u_314, __pyx_k_314, sizeof(__pyx_k_314), 0, 1, 0, 0},
  {&__pyx_kp_u_315, __pyx_k_315, sizeof(__pyx_k_315), 0, 1, 0, 0},
  {&__pyx_kp_u_316, __pyx_k_316, sizeof(__pyx_k_316), 0, 1, 0, 0},
  {&__pyx_kp_u_317, __pyx_k_317, sizeof(__pyx_k_317), 0, 1, 0, 0},
  {&__pyx_n_s_319, __pyx_k_319, sizeof(__pyx_k_319), 0, 0, 1, 1},
  {&__pyx_kp_u_32, __pyx_k_32, sizeof(__pyx_k_32), 0, 1, 0, 0},
  {&__pyx_kp_u_320, __pyx_k_320, sizeof(__pyx_k_320), 0, 1, 0, 0},
  {&__pyx_kp_u_321, __pyx_k_321, sizeof(__pyx_k_321), 0, 1, 0, 0},
  {&__pyx_kp_u_322, __pyx_k_322, sizeof(__pyx_k_322), 0, 1, 0, 0},
  {&__pyx_kp_u_325, __pyx_k_325, sizeof(__pyx_k_325), 0, 1, 0, 0},
  {&__pyx_kp_u_326, __pyx_k_326, sizeof(__pyx_k_326), 0, 1, 0, 0},
  {&__pyx_kp_u_327, __pyx_k_327, sizeof(__pyx_k_327), 0, 1, 0, 0},
  {&__pyx_kp_u_328, __pyx_k_328, sizeof(__pyx_k_328), 0, 1, 0, 0},
  {&__pyx_kp_u_329, __pyx_k_329, sizeof(__pyx_k_329), 0, 1, 0, 0},
  {&__pyx_kp_u_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 1, 0, 0},
  {&__pyx_kp_u_330, __pyx_k_330, sizeof(__pyx_k_330), 0, 1, 0, 0},
  {&__pyx_kp_u_332, __pyx_k_332, sizeof(__pyx_k_332), 0, 1, 0, 0},
  {&__pyx_kp_u_333, __pyx_k_333, sizeof(__pyx_k_333), 0, 1, 0, 0},
  {&__pyx_kp_u_334, __pyx_k_334, sizeof(__pyx_k_334), 0, 1, 0, 0},
  {&__pyx_kp_u_335, __pyx_k_335, sizeof(__pyx_k_335), 0, 1, 0, 0},
  {&__pyx_n_s_336, __pyx_k_336, sizeof(__pyx_k_336), 0, 0, 1, 1},
  {&__pyx_kp_u_337, __pyx_k_337, sizeof(__pyx_k_337), 0, 1, 0, 0},
  {&__pyx_n_s_339, __pyx_k_339, sizeof(__pyx_k_339), 0, 0, 1, 1},
  {&__pyx_kp_u_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 1, 0, 0},
  {&__pyx_n_s_340, __pyx_k_340, sizeof(__pyx_k_340), 0, 0, 1, 1},
  {&__pyx_kp_s_341, __pyx_k_341, sizeof(__pyx_k_341), 0, 0, 1, 0},
  {&__pyx_kp_u_341, __pyx_k_341, sizeof(__pyx_k_341), 0, 1, 0, 0},
  {&__pyx_kp_u_342, __pyx_k_342, sizeof(__pyx_k_342), 0, 1, 0, 0},
  {&__pyx_kp_u_343, __pyx_k_343, sizeof(__pyx_k_343), 0, 1, 0, 0},
  {&__pyx_n_s_344, __pyx_k_344, sizeof(__pyx_k_344), 0, 0, 1, 1},
  {&__pyx_kp_u_345, __pyx_k_345, sizeof(__pyx_k_345), 0, 1, 0, 0},
  {&__pyx_kp_u_346, __pyx_k_346, sizeof(__pyx_k_346), 0, 1, 0, 0},
  {&__pyx_n_s_347, __pyx_k_347, sizeof(__pyx_k_347), 0, 0, 1, 1},
  {&__pyx_kp_u_348, __pyx_k_348, sizeof(__pyx_k_348), 0, 1, 0, 0},
  {&__pyx_n_s_349, __pyx_k_349, sizeof(__pyx_k_349), 0, 0, 1, 1},
  {&__pyx_kp_u_350, __pyx_k_350, sizeof(__pyx_k_350), 0, 1, 0, 0},
  {&__pyx_kp_u_383, __pyx_k_383, sizeof(__pyx_k_383), 0, 1, 0, 0},
  {&__pyx_n_s_384, __pyx_k_384, sizeof(__pyx_k_384), 0, 0, 1, 1},
  {&__pyx_n_s_385, __pyx_k_385, sizeof(__pyx_k_385), 0, 0, 1, 1},
  {&__pyx_kp_s_386, __pyx_k_386, sizeof(__pyx_k_386), 0, 0, 1, 0},
  {&__pyx_kp_s_387, __pyx_k_387, sizeof(__pyx_k_387), 0, 0, 1, 0},
  {&__pyx_kp_s_388, __pyx_k_388, sizeof(__pyx_k_388), 0, 0, 1, 0},
  {&__pyx_kp_s_389, __pyx_k_389, sizeof(__pyx_k_389), 0, 0, 1, 0},
  {&__pyx_kp_s_390, __pyx_k_390, sizeof(__pyx_k_390), 0, 0, 1, 0},
  {&__pyx_kp_s_391, __pyx_k_391, sizeof(__pyx_k_391), 0, 0, 1, 0},
  {&__pyx_kp_s_392, __pyx_k_392, sizeof(__pyx_k_392), 0, 0, 1, 0},
  {&__pyx_kp_s_393, __pyx_k_393, sizeof(__pyx_k_393), 0, 0, 1, 0},
  {&__pyx_kp_s_394, __pyx_k_394, sizeof(__pyx_k_394), 0, 0, 1, 0},
  {&__pyx_kp_u_395, __pyx_k_395, sizeof(__pyx_k_395), 0, 1, 0, 0},
  {&__pyx_kp_u_396, __pyx_k_396, sizeof(__pyx_k_396), 0, 1, 0, 0},
  {&__pyx_n_s_397, __pyx_k_397, sizeof(__pyx_k_397), 0, 0, 1, 1},
  {&__pyx_kp_u_398, __pyx_k_398, sizeof(__pyx_k_398), 0, 1, 0, 0},
  {&__pyx_kp_s_399, __pyx_k_399, sizeof(__pyx_k_399), 0, 0, 1, 0},
  {&__pyx_kp_u_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 1, 0, 0},
  {&__pyx_kp_s_400, __pyx_k_400, sizeof(__pyx_k_400), 0, 0, 1, 0},
  {&__pyx_kp_s_401, __pyx_k_401, sizeof(__pyx_k_401), 0, 0, 1, 0},
  {&__pyx_kp_s_402, __pyx_k_402, sizeof(__pyx_k_402), 0, 0, 1, 0},
  {&__pyx_kp_u_403, __pyx_k_403, sizeof(__pyx_k_403), 0, 1, 0, 0},
  {&__pyx_kp_u_404, __pyx_k_404, sizeof(__pyx_k_404), 0, 1, 0, 0},
  {&__pyx_kp_u_405, __pyx_k_405, sizeof(__pyx_k_405), 0, 1, 0, 0},
  {&__pyx_kp_u_406, __pyx_k_406, sizeof(__pyx_k_406), 0, 1, 0, 0},
  {&__pyx_kp_u_407, __pyx_k_407, sizeof(__pyx_k_407), 0, 1, 0, 0},
  {&__pyx_kp_u_408, __pyx_k_408, sizeof(__pyx_k_408), 0, 1, 0, 0},
  {&__pyx_kp_u_409, __pyx_k_409, sizeof(__pyx_k_409), 0, 1, 0, 0},
  {&__pyx_kp_u_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 1, 0, 0},
  {&__pyx_kp_u_410, __pyx_k_410, sizeof(__pyx_k_410), 0, 1, 0, 0},
  {&__pyx_kp_u_411, __pyx_k_411, sizeof(__pyx_k_411), 0, 1, 0, 0},
  {&__pyx_kp_u_412, __pyx_k_412, sizeof(__pyx_k_412), 0, 1, 0, 0},
  {&__pyx_kp_u_413, __pyx_k_413, sizeof(__pyx_k_413), 0, 1, 0, 0},
  {&__pyx_kp_u_414, __pyx_k_414, sizeof(__pyx_k_414), 0, 1, 0, 0},
  {&__pyx_kp_u_415, __pyx_k_415, sizeof(__pyx_k_415), 0, 1, 0, 0},
  {&__pyx_kp_u_416, __pyx_k_416, sizeof(__pyx_k_416), 0, 1, 0, 0},
  {&__pyx_kp_s_417, __pyx_k_417, sizeof(__pyx_k_417), 0, 0, 1, 0},
  {&__pyx_kp_s_418, __pyx_k_418, sizeof(__pyx_k_418), 0, 0, 1, 0},
  {&__pyx_kp_s_419, __pyx_k_419, sizeof(__pyx_k_419), 0, 0, 1, 0},
  {&__pyx_kp_s_420, __pyx_k_420, sizeof(__pyx_k_420), 0, 0, 1, 0},
  {&__pyx_kp_s_421, __pyx_k_421, sizeof(__pyx_k_421), 0, 0, 1, 0},
  {&__pyx_n_s_422, __pyx_k_422, sizeof(__pyx_k_422), 0, 0, 1, 1},
  {&__pyx_kp_s_423, __pyx_k_423, sizeof(__pyx_k_423), 0, 0, 1, 0},
  {&__pyx_kp_s_424, __pyx_k_424, sizeof(__pyx_k_424), 0, 0, 1, 0},
  {&__pyx_kp_s_425, __pyx_k_425, sizeof(__pyx_k_425), 0, 0, 1, 0},
  {&__pyx_kp_s_426, __pyx_k_426, sizeof(__pyx_k_426), 0, 0, 1, 0},
  {&__pyx_kp_s_427, __pyx_k_427, sizeof(__pyx_k_427), 0, 0, 1, 0},
  {&__pyx_kp_s_428, __pyx_k_428, sizeof(__pyx_k_428), 0, 0, 1, 0},
  {&__pyx_kp_s_429, __pyx_k_429, sizeof(__pyx_k_429), 0, 0, 1, 0},
  {&__pyx_kp_u_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 1, 0, 0},
  {&__pyx_kp_s_430, __pyx_k_430, sizeof(__pyx_k_430), 0, 0, 1, 0},
  {&__pyx_kp_s_431, __pyx_k_431, sizeof(__pyx_k_431), 0, 0, 1, 0},
  {&__pyx_kp_s_432, __pyx_k_432, sizeof(__pyx_k_432), 0, 0, 1, 0},
  {&__pyx_kp_s_433, __pyx_k_433, sizeof(__pyx_k_433), 0, 0, 1, 0},
  {&__pyx_kp_s_434, __pyx_k_434, sizeof(__pyx_k_434), 0, 0, 1, 0},
  {&__pyx_kp_s_435, __pyx_k_435, sizeof(__pyx_k_435), 0, 0, 1, 0},
  {&__pyx_n_s_436, __pyx_k_436, sizeof(__pyx_k_436), 0, 0, 1, 1},
  {&__pyx_kp_u_437, __pyx_k_437, sizeof(__pyx_k_437), 0, 1, 0, 0},
  {&__pyx_kp_u_438, __pyx_k_438, sizeof(__pyx_k_438), 0, 1, 0, 0},
  {&__pyx_kp_s_439, __pyx_k_439, sizeof(__pyx_k_439), 0, 0, 1, 0},
  {&__pyx_kp_u_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 1, 0, 0},
  {&__pyx_kp_s_440, __pyx_k_440, sizeof(__pyx_k_440), 0, 0, 1, 0},
  {&__pyx_kp_s_441, __pyx_k_441, sizeof(__pyx_k_441), 0, 0, 1, 0},
  {&__pyx_kp_s_442, __pyx_k_442, sizeof(__pyx_k_442), 0, 0, 1, 0},
  {&__pyx_kp_s_443, __pyx_k_443, sizeof(__pyx_k_443), 0, 0, 1, 0},
  {&__pyx_kp_s_444, __pyx_k_444, sizeof(__pyx_k_444), 0, 0, 1, 0},
  {&__pyx_kp_s_445, __pyx_k_445, sizeof(__pyx_k_445), 0, 0, 1, 0},
  {&__pyx_kp_s_446, __pyx_k_446, sizeof(__pyx_k_446), 0, 0, 1, 0},
  {&__pyx_kp_s_447, __pyx_k_447, sizeof(__pyx_k_447), 0, 0, 1, 0},
  {&__pyx_kp_s_448, __pyx_k_448, sizeof(__pyx_k_448), 0, 0, 1, 0},
  {&__pyx_kp_u_449, __pyx_k_449, sizeof(__pyx_k_449), 0, 1, 0, 0},
  {&__pyx_kp_u_45, __pyx_k_45, sizeof(__pyx_k_45), 0, 1, 0, 0},
  {&__pyx_kp_s_450, __pyx_k_450, sizeof(__pyx_k_450), 0, 0, 1, 0},
  {&__pyx_kp_s_451, __pyx_k_451, sizeof(__pyx_k_451), 0, 0, 1, 0},
  {&__pyx_kp_s_452, __pyx_k_452, sizeof(__pyx_k_452), 0, 0, 1, 0},
  {&__pyx_kp_u_453, __pyx_k_453, sizeof(__pyx_k_453), 0, 1, 0, 0},
  {&__pyx_kp_u_454, __pyx_k_454, sizeof(__pyx_k_454), 0, 1, 0, 0},
  {&__pyx_kp_u_455, __pyx_k_455, sizeof(__pyx_k_455), 0, 1, 0, 0},
  {&__pyx_kp_u_456, __pyx_k_456, sizeof(__pyx_k_456), 0, 1, 0, 0},
  {&__pyx_kp_u_457, __pyx_k_457, sizeof(__pyx_k_457), 0, 1, 0, 0},
  {&__pyx_kp_u_458, __pyx_k_458, sizeof(__pyx_k_458), 0, 1, 0, 0},
  {&__pyx_kp_u_459, __pyx_k_459, sizeof(__pyx_k_459), 0, 1, 0, 0},
  {&__pyx_kp_u_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 1, 0, 0},
  {&__pyx_kp_u_460, __pyx_k_460, sizeof(__pyx_k_460), 0, 1, 0, 0},
  {&__pyx_kp_u_461, __pyx_k_461, sizeof(__pyx_k_461), 0, 1, 0, 0},
  {&__pyx_n_s_462, __pyx_k_462, sizeof(__pyx_k_462), 0, 0, 1, 1},
  {&__pyx_kp_u_463, __pyx_k_463, sizeof(__pyx_k_463), 0, 1, 0, 0},
  {&__pyx_kp_u_464, __pyx_k_464, sizeof(__pyx_k_464), 0, 1, 0, 0},
  {&__pyx_kp_u_465, __pyx_k_465, sizeof(__pyx_k_465), 0, 1, 0, 0},
  {&__pyx_kp_u_466, __pyx_k_466, sizeof(__pyx_k_466), 0, 1, 0, 0},
  {&__pyx_kp_u_467, __pyx_k_467, sizeof(__pyx_k_467), 0, 1, 0, 0},
  {&__pyx_n_s_468, __pyx_k_468, sizeof(__pyx_k_468), 0, 0, 1, 1},
  {&__pyx_kp_u_469, __pyx_k_469, sizeof(__pyx_k_469), 0, 1, 0, 0},
  {&__pyx_kp_u_47, __pyx_k_47, sizeof(__pyx_k_47), 0, 1, 0, 0},
  {&__pyx_kp_u_470, __pyx_k_470, sizeof(__pyx_k_470), 0, 1, 0, 0},
  {&__pyx_kp_u_471, __pyx_k_471, sizeof(__pyx_k_471), 0, 1, 0, 0},
  {&__pyx_kp_u_472, __pyx_k_472, sizeof(__pyx_k_472), 0, 1, 0, 0},
  {&__pyx_kp_u_473, __pyx_k_473, sizeof(__pyx_k_473), 0, 1, 0, 0},
  {&__pyx_kp_u_474, __pyx_k_474, sizeof(__pyx_k_474), 0, 1, 0, 0},
  {&__pyx_kp_u_475, __pyx_k_475, sizeof(__pyx_k_475), 0, 1, 0, 0},
  {&__pyx_kp_u_476, __pyx_k_476, sizeof(__pyx_k_476), 0, 1, 0, 0},
  {&__pyx_kp_u_477, __pyx_k_477, sizeof(__pyx_k_477), 0, 1, 0, 0},
  {&__pyx_kp_u_478, __pyx_k_478, sizeof(__pyx_k_478), 0, 1, 0, 0},
  {&__pyx_kp_u_479, __pyx_k_479, sizeof(__pyx_k_479), 0, 1, 0, 0},
  {&__pyx_kp_u_48, __pyx_k_48, sizeof(__pyx_k_48), 0, 1, 0, 0},
  {&__pyx_kp_u_480, __pyx_k_480, sizeof(__pyx_k_480), 0, 1, 0, 0},
  {&__pyx_kp_u_481, __pyx_k_481, sizeof(__pyx_k_481), 0, 1, 0, 0},
  {&__pyx_kp_u_482, __pyx_k_482, sizeof(__pyx_k_482), 0, 1, 0, 0},
  {&__pyx_kp_u_483, __pyx_k_483, sizeof(__pyx_k_483), 0, 1, 0, 0},
  {&__pyx_kp_u_484, __pyx_k_484, sizeof(__pyx_k_484), 0, 1, 0, 0},
  {&__pyx_kp_u_485, __pyx_k_485, sizeof(__pyx_k_485), 0, 1, 0, 0},
  {&__pyx_kp_u_486, __pyx_k_486, sizeof(__pyx_k_486), 0, 1, 0, 0},
  {&__pyx_kp_u_487, __pyx_k_487, sizeof(__pyx_k_487), 0, 1, 0, 0},
  {&__pyx_kp_u_488, __pyx_k_488, sizeof(__pyx_k_488), 0, 1, 0, 0},
  {&__pyx_kp_u_489, __pyx_k_489, sizeof(__pyx_k_489), 0, 1, 0, 0},
  {&__pyx_kp_u_49, __pyx_k_49, sizeof(__pyx_k_49), 0, 1, 0, 0},
  {&__pyx_kp_u_490, __pyx_k_490, sizeof(__pyx_k_490), 0, 1, 0, 0},
  {&__pyx_kp_u_491, __pyx_k_491, sizeof(__pyx_k_491), 0, 1, 0, 0},
  {&__pyx_kp_u_492, __pyx_k_492, sizeof(__pyx_k_492), 0, 1, 0, 0},
  {&__pyx_kp_u_493, __pyx_k_493, sizeof(__pyx_k_493), 0, 1, 0, 0},
  {&__pyx_kp_u_494, __pyx_k_494, sizeof(__pyx_k_494), 0, 1, 0, 0},
  {&__pyx_kp_u_495, __pyx_k_495, sizeof(__pyx_k_495), 0, 1, 0, 0},
  {&__pyx_kp_u_496, __pyx_k_496, sizeof(__pyx_k_496), 0, 1, 0, 0},
  {&__pyx_kp_u_497, __pyx_k_497, sizeof(__pyx_k_497), 0, 1, 0, 0},
  {&__pyx_kp_u_498, __pyx_k_498, sizeof(__pyx_k_498), 0, 1, 0, 0},
  {&__pyx_kp_u_499, __pyx_k_499, sizeof(__pyx_k_499), 0, 1, 0, 0},
  {&__pyx_kp_u_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 1, 0, 0},
  {&__pyx_kp_u_50, __pyx_k_50, sizeof(__pyx_k_50), 0, 1, 0, 0},
  {&__pyx_kp_u_500, __pyx_k_500, sizeof(__pyx_k_500), 0, 1, 0, 0},
  {&__pyx_kp_u_501, __pyx_k_501, sizeof(__pyx_k_501), 0, 1, 0, 0},
  {&__pyx_kp_u_502, __pyx_k_502, sizeof(__pyx_k_502), 0, 1, 0, 0},
  {&__pyx_kp_u_503, __pyx_k_503, sizeof(__pyx_k_503), 0, 1, 0, 0},
  {&__pyx_kp_u_504, __pyx_k_504, sizeof(__pyx_k_504), 0, 1, 0, 0},
  {&__pyx_kp_u_505, __pyx_k_505, sizeof(__pyx_k_505), 0, 1, 0, 0},
  {&__pyx_kp_u_506, __pyx_k_506, sizeof(__pyx_k_506), 0, 1, 0, 0},
  {&__pyx_kp_u_507, __pyx_k_507, sizeof(__pyx_k_507), 0, 1, 0, 0},
  {&__pyx_kp_u_508, __pyx_k_508, sizeof(__pyx_k_508), 0, 1, 0, 0},
  {&__pyx_kp_u_509, __pyx_k_509, sizeof(__pyx_k_509), 0, 1, 0, 0},
  {&__pyx_kp_u_51, __pyx_k_51, sizeof(__pyx_k_51), 0, 1, 0, 0},
  {&__pyx_kp_u_510, __pyx_k_510, sizeof(__pyx_k_510), 0, 1, 0, 0},
  {&__pyx_kp_u_511, __pyx_k_511, sizeof(__pyx_k_511), 0, 1, 0, 0},
  {&__pyx_kp_u_512, __pyx_k_512, sizeof(__pyx_k_512), 0, 1, 0, 0},
  {&__pyx_kp_u_513, __pyx_k_513, sizeof(__pyx_k_513), 0, 1, 0, 0},
  {&__pyx_n_s_514, __pyx_k_514, sizeof(__pyx_k_514), 0, 0, 1, 1},
  {&__pyx_kp_u_515, __pyx_k_515, sizeof(__pyx_k_515), 0, 1, 0, 0},
  {&__pyx_kp_u_516, __pyx_k_516, sizeof(__pyx_k_516), 0, 1, 0, 0},
  {&__pyx_kp_u_517, __pyx_k_517, sizeof(__pyx_k_517), 0, 1, 0, 0},
  {&__pyx_kp_u_518, __pyx_k_518, sizeof(__pyx_k_518), 0, 1, 0, 0},
  {&__pyx_kp_u_519, __pyx_k_519, sizeof(__pyx_k_519), 0, 1, 0, 0},
  {&__pyx_kp_u_52, __pyx_k_52, sizeof(__pyx_k_52), 0, 1, 0, 0},
  {&__pyx_kp_u_520, __pyx_k_520, sizeof(__pyx_k_520), 0, 1, 0, 0},
  {&__pyx_kp_u_521, __pyx_k_521, sizeof(__pyx_k_521), 0, 1, 0, 0},
  {&__pyx_kp_u_522, __pyx_k_522, sizeof(__pyx_k_522), 0, 1, 0, 0},
  {&__pyx_kp_u_523, __pyx_k_523, sizeof(__pyx_k_523), 0, 1, 0, 0},
  {&__pyx_kp_u_524, __pyx_k_524, sizeof(__pyx_k_524), 0, 1, 0, 0},
  {&__pyx_kp_u_525, __pyx_k_525, sizeof(__pyx_k_525), 0, 1, 0, 0},
  {&__pyx_kp_u_526, __pyx_k_526, sizeof(__pyx_k_526), 0, 1, 0, 0},
  {&__pyx_kp_u_527, __pyx_k_527, sizeof(__pyx_k_527), 0, 1, 0, 0},
  {&__pyx_kp_u_528, __pyx_k_528, sizeof(__pyx_k_528), 0, 1, 0, 0},
  {&__pyx_kp_u_529, __pyx_k_529, sizeof(__pyx_k_529), 0, 1, 0, 0},
  {&__pyx_kp_u_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 1, 0, 0},
  {&__pyx_kp_u_530, __pyx_k_530, sizeof(__pyx_k_530), 0, 1, 0, 0},
  {&__pyx_kp_u_531, __pyx_k_531, sizeof(__pyx_k_531), 0, 1, 0, 0},
  {&__pyx_kp_u_532, __pyx_k_532, sizeof(__pyx_k_532), 0, 1, 0, 0},
  {&__pyx_kp_u_533, __pyx_k_533, sizeof(__pyx_k_533), 0, 1, 0, 0},
  {&__pyx_kp_u_534, __pyx_k_534, sizeof(__pyx_k_534), 0, 1, 0, 0},
  {&__pyx_kp_u_535, __pyx_k_535, sizeof(__pyx_k_535), 0, 1, 0, 0},
  {&__pyx_kp_u_536, __pyx_k_536, sizeof(__pyx_k_536), 0, 1, 0, 0},
  {&__pyx_kp_u_537, __pyx_k_537, sizeof(__pyx_k_537), 0, 1, 0, 0},
  {&__pyx_kp_u_538, __pyx_k_538, sizeof(__pyx_k_538), 0, 1, 0, 0},
  {&__pyx_kp_u_539, __pyx_k_539, sizeof(__pyx_k_539), 0, 1, 0, 0},
  {&__pyx_kp_u_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 1, 0, 0},
  {&__pyx_kp_u_540, __pyx_k_540, sizeof(__pyx_k_540), 0, 1, 0, 0},
  {&__pyx_kp_u_541, __pyx_k_541, sizeof(__pyx_k_541), 0, 1, 0, 0},
  {&__pyx_kp_u_542, __pyx_k_542, sizeof(__pyx_k_542), 0, 1, 0, 0},
  {&__pyx_kp_u_543, __pyx_k_543, sizeof(__pyx_k_543), 0, 1, 0, 0},
  {&__pyx_kp_u_544, __pyx_k_544, sizeof(__pyx_k_544), 0, 1, 0, 0},
  {&__pyx_kp_u_545, __pyx_k_545, sizeof(__pyx_k_545), 0, 1, 0, 0},
  {&__pyx_kp_u_546, __pyx_k_546, sizeof(__pyx_k_546), 0, 1, 0, 0},
  {&__pyx_kp_u_547, __pyx_k_547, sizeof(__pyx_k_547), 0, 1, 0, 0},
  {&__pyx_kp_u_548, __pyx_k_548, sizeof(__pyx_k_548), 0, 1, 0, 0},
  {&__pyx_kp_u_549, __pyx_k_549, sizeof(__pyx_k_549), 0, 1, 0, 0},
  {&__pyx_kp_u_55, __pyx_k_55, sizeof(__pyx_k_55), 0, 1, 0, 0},
  {&__pyx_kp_u_550, __pyx_k_550, sizeof(__pyx_k_550), 0, 1, 0, 0},
  {&__pyx_kp_u_551, __pyx_k_551, sizeof(__pyx_k_551), 0, 1, 0, 0},
  {&__pyx_kp_u_552, __pyx_k_552, sizeof(__pyx_k_552), 0, 1, 0, 0},
  {&__pyx_kp_u_553, __pyx_k_553, sizeof(__pyx_k_553), 0, 1, 0, 0},
  {&__pyx_kp_u_554, __pyx_k_554, sizeof(__pyx_k_554), 0, 1, 0, 0},
  {&__pyx_kp_u_555, __pyx_k_555, sizeof(__pyx_k_555), 0, 1, 0, 0},
  {&__pyx_kp_u_556, __pyx_k_556, sizeof(__pyx_k_556), 0, 1, 0, 0},
  {&__pyx_kp_u_557, __pyx_k_557, sizeof(__pyx_k_557), 0, 1, 0, 0},
  {&__pyx_n_s_558, __pyx_k_558, sizeof(__pyx_k_558), 0, 0, 1, 1},
  {&__pyx_kp_u_559, __pyx_k_559, sizeof(__pyx_k_559), 0, 1, 0, 0},
  {&__pyx_kp_u_56, __pyx_k_56, sizeof(__pyx_k_56), 0, 1, 0, 0},
  {&__pyx_kp_u_560, __pyx_k_560, sizeof(__pyx_k_560), 0, 1, 0, 0},
  {&__pyx_kp_u_561, __pyx_k_561, sizeof(__pyx_k_561), 0, 1, 0, 0},
  {&__pyx_kp_u_562, __pyx_k_562, sizeof(__pyx_k_562), 0, 1, 0, 0},
  {&__pyx_kp_u_563, __pyx_k_563, sizeof(__pyx_k_563), 0, 1, 0, 0},
  {&__pyx_kp_u_564, __pyx_k_564, sizeof(__pyx_k_564), 0, 1, 0, 0},
  {&__pyx_kp_u_565, __pyx_k_565, sizeof(__pyx_k_565), 0, 1, 0, 0},
  {&__pyx_kp_u_566, __pyx_k_566, sizeof(__pyx_k_566), 0, 1, 0, 0},
  {&__pyx_kp_u_567, __pyx_k_567, sizeof(__pyx_k_567), 0, 1, 0, 0},
  {&__pyx_kp_u_568, __pyx_k_568, sizeof(__pyx_k_568), 0, 1, 0, 0},
  {&__pyx_kp_u_569, __pyx_k_569, sizeof(__pyx_k_569), 0, 1, 0, 0},
  {&__pyx_kp_u_57, __pyx_k_57, sizeof(__pyx_k_57), 0, 1, 0, 0},
  {&__pyx_kp_u_570, __pyx_k_570, sizeof(__pyx_k_570), 0, 1, 0, 0},
  {&__pyx_kp_u_571, __pyx_k_571, sizeof(__pyx_k_571), 0, 1, 0, 0},
  {&__pyx_n_s_572, __pyx_k_572, sizeof(__pyx_k_572), 0, 0, 1, 1},
  {&__pyx_kp_u_573, __pyx_k_573, sizeof(__pyx_k_573), 0, 1, 0, 0},
  {&__pyx_kp_u_574, __pyx_k_574, sizeof(__pyx_k_574), 0, 1, 0, 0},
  {&__pyx_kp_u_575, __pyx_k_575, sizeof(__pyx_k_575), 0, 1, 0, 0},
  {&__pyx_n_s_576, __pyx_k_576, sizeof(__pyx_k_576), 0, 0, 1, 1},
  {&__pyx_kp_u_577, __pyx_k_577, sizeof(__pyx_k_577), 0, 1, 0, 0},
  {&__pyx_n_s_578, __pyx_k_578, sizeof(__pyx_k_578), 0, 0, 1, 1},
  {&__pyx_kp_u_579, __pyx_k_579, sizeof(__pyx_k_579), 0, 1, 0, 0},
  {&__pyx_n_s_580, __pyx_k_580, sizeof(__pyx_k_580), 0, 0, 1, 1},
  {&__pyx_kp_u_581, __pyx_k_581, sizeof(__pyx_k_581), 0, 1, 0, 0},
  {&__pyx_kp_u_582, __pyx_k_582, sizeof(__pyx_k_582), 0, 1, 0, 0},
  {&__pyx_kp_u_583, __pyx_k_583, sizeof(__pyx_k_583), 0, 1, 0, 0},
  {&__pyx_n_s_584, __pyx_k_584, sizeof(__pyx_k_584), 0, 0, 1, 1},
  {&__pyx_kp_u_585, __pyx_k_585, sizeof(__pyx_k_585), 0, 1, 0, 0},
  {&__pyx_kp_u_586, __pyx_k_586, sizeof(__pyx_k_586), 0, 1, 0, 0},
  {&__pyx_kp_u_587, __pyx_k_587, sizeof(__pyx_k_587), 0, 1, 0, 0},
  {&__pyx_kp_u_588, __pyx_k_588, sizeof(__pyx_k_588), 0, 1, 0, 0},
  {&__pyx_kp_u_589, __pyx_k_589, sizeof(__pyx_k_589), 0, 1, 0, 0},
  {&__pyx_kp_u_590, __pyx_k_590, sizeof(__pyx_k_590), 0, 1, 0, 0},
  {&__pyx_kp_u_591, __pyx_k_591, sizeof(__pyx_k_591), 0, 1, 0, 0},
  {&__pyx_kp_u_592, __pyx_k_592, sizeof(__pyx_k_592), 0, 1, 0, 0},
  {&__pyx_kp_u_593, __pyx_k_593, sizeof(__pyx_k_593), 0, 1, 0, 0},
  {&__pyx_kp_u_594, __pyx_k_594, sizeof(__pyx_k_594), 0, 1, 0, 0},
  {&__pyx_kp_u_595, __pyx_k_595, sizeof(__pyx_k_595), 0, 1, 0, 0},
  {&__pyx_n_s_596, __pyx_k_596, sizeof(__pyx_k_596), 0, 0, 1, 1},
  {&__pyx_kp_u_597, __pyx_k_597, sizeof(__pyx_k_597), 0, 1, 0, 0},
  {&__pyx_kp_u_598, __pyx_k_598, sizeof(__pyx_k_598), 0, 1, 0, 0},
  {&__pyx_kp_u_599, __pyx_k_599, sizeof(__pyx_k_599), 0, 1, 0, 0},
  {&__pyx_kp_u_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 1, 0, 0},
  {&__pyx_kp_u_600, __pyx_k_600, sizeof(__pyx_k_600), 0, 1, 0, 0},
  {&__pyx_kp_u_601, __pyx_k_601, sizeof(__pyx_k_601), 0, 1, 0, 0},
  {&__pyx_kp_u_602, __pyx_k_602, sizeof(__pyx_k_602), 0, 1, 0, 0},
  {&__pyx_kp_u_603, __pyx_k_603, sizeof(__pyx_k_603), 0, 1, 0, 0},
  {&__pyx_kp_u_604, __pyx_k_604, sizeof(__pyx_k_604), 0, 1, 0, 0},
  {&__pyx_kp_u_605, __pyx_k_605, sizeof(__pyx_k_605), 0, 1, 0, 0},
  {&__pyx_kp_u_606, __pyx_k_606, sizeof(__pyx_k_606), 0, 1, 0, 0},
  {&__pyx_kp_u_607, __pyx_k_607, sizeof(__pyx_k_607), 0, 1, 0, 0},
  {&__pyx_kp_u_608, __pyx_k_608, sizeof(__pyx_k_608), 0, 1, 0, 0},
  {&__pyx_kp_u_609, __pyx_k_609, sizeof(__pyx_k_609), 0, 1, 0, 0},
  {&__pyx_kp_u_610, __pyx_k_610, sizeof(__pyx_k_610), 0, 1, 0, 0},
  {&__pyx_kp_u_611, __pyx_k_611, sizeof(__pyx_k_611), 0, 1, 0, 0},
  {&__pyx_kp_u_612, __pyx_k_612, sizeof(__pyx_k_612), 0, 1, 0, 0},
  {&__pyx_kp_u_613, __pyx_k_613, sizeof(__pyx_k_613), 0, 1, 0, 0},
  {&__pyx_kp_u_614, __pyx_k_614, sizeof(__pyx_k_614), 0, 1, 0, 0},
  {&__pyx_kp_u_615, __pyx_k_615, sizeof(__pyx_k_615), 0, 1, 0, 0},
  {&__pyx_kp_u_616, __pyx_k_616, sizeof(__pyx_k_616), 0, 1, 0, 0},
  {&__pyx_kp_u_617, __pyx_k_617, sizeof(__pyx_k_617), 0, 1, 0, 0},
  {&__pyx_kp_u_618, __pyx_k_618, sizeof(__pyx_k_618), 0, 1, 0, 0},
  {&__pyx_kp_u_619, __pyx_k_619, sizeof(__pyx_k_619), 0, 1, 0, 0},
  {&__pyx_kp_u_62, __pyx_k_62, sizeof(__pyx_k_62), 0, 1, 0, 0},
  {&__pyx_kp_u_620, __pyx_k_620, sizeof(__pyx_k_620), 0, 1, 0, 0},
  {&__pyx_n_s_621, __pyx_k_621, sizeof(__pyx_k_621), 0, 0, 1, 1},
  {&__pyx_kp_u_622, __pyx_k_622, sizeof(__pyx_k_622), 0, 1, 0, 0},
  {&__pyx_kp_u_623, __pyx_k_623, sizeof(__pyx_k_623), 0, 1, 0, 0},
  {&__pyx_kp_u_624, __pyx_k_624, sizeof(__pyx_k_624), 0, 1, 0, 0},
  {&__pyx_n_s_625, __pyx_k_625, sizeof(__pyx_k_625), 0, 0, 1, 1},
  {&__pyx_kp_u_626, __pyx_k_626, sizeof(__pyx_k_626), 0, 1, 0, 0},
  {&__pyx_kp_u_627, __pyx_k_627, sizeof(__pyx_k_627), 0, 1, 0, 0},
  {&__pyx_kp_u_628, __pyx_k_628, sizeof(__pyx_k_628), 0, 1, 0, 0},
  {&__pyx_kp_u_629, __pyx_k_629, sizeof(__pyx_k_629), 0, 1, 0, 0},
  {&__pyx_kp_u_63, __pyx_k_63, sizeof(__pyx_k_63), 0, 1, 0, 0},
  {&__pyx_kp_u_630, __pyx_k_630, sizeof(__pyx_k_630), 0, 1, 0, 0},
  {&__pyx_kp_u_631, __pyx_k_631, sizeof(__pyx_k_631), 0, 1, 0, 0},
  {&__pyx_kp_u_632, __pyx_k_632, sizeof(__pyx_k_632), 0, 1, 0, 0},
  {&__pyx_n_s_633, __pyx_k_633, sizeof(__pyx_k_633), 0, 0, 1, 1},
  {&__pyx_kp_u_634, __pyx_k_634, sizeof(__pyx_k_634), 0, 1, 0, 0},
  {&__pyx_kp_u_635, __pyx_k_635, sizeof(__pyx_k_635), 0, 1, 0, 0},
  {&__pyx_kp_u_636, __pyx_k_636, sizeof(__pyx_k_636), 0, 1, 0, 0},
  {&__pyx_kp_u_637, __pyx_k_637, sizeof(__pyx_k_637), 0, 1, 0, 0},
  {&__pyx_kp_u_638, __pyx_k_638, sizeof(__pyx_k_638), 0, 1, 0, 0},
  {&__pyx_kp_u_639, __pyx_k_639, sizeof(__pyx_k_639), 0, 1, 0, 0},
  {&__pyx_n_s_64, __pyx_k_64, sizeof(__pyx_k_64), 0, 0, 1, 1},
  {&__pyx_kp_u_640, __pyx_k_640, sizeof(__pyx_k_640), 0, 1, 0, 0},
  {&__pyx_kp_u_641, __pyx_k_641, sizeof(__pyx_k_641), 0, 1, 0, 0},
  {&__pyx_kp_u_642, __pyx_k_642, sizeof(__pyx_k_642), 0, 1, 0, 0},
  {&__pyx_kp_u_643, __pyx_k_643, sizeof(__pyx_k_643), 0, 1, 0, 0},
  {&__pyx_kp_u_65, __pyx_k_65, sizeof(__pyx_k_65), 0, 1, 0, 0},
  {&__pyx_kp_u_66, __pyx_k_66, sizeof(__pyx_k_66), 0, 1, 0, 0},
  {&__pyx_kp_u_67, __pyx_k_67, sizeof(__pyx_k_67), 0, 1, 0, 0},
  {&__pyx_kp_u_68, __pyx_k_68, sizeof(__pyx_k_68), 0, 1, 0, 0},
  {&__pyx_kp_u_69, __pyx_k_69, sizeof(__pyx_k_69), 0, 1, 0, 0},
  {&__pyx_kp_u_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 1, 0, 0},
  {&__pyx_kp_u_70, __pyx_k_70, sizeof(__pyx_k_70), 0, 1, 0, 0},
  {&__pyx_n_s_71, __pyx_k_71, sizeof(__pyx_k_71), 0, 0, 1, 1},
  {&__pyx_kp_s_72, __pyx_k_72, sizeof(__pyx_k_72), 0, 0, 1, 0},
  {&__pyx_kp_u_73, __pyx_k_73, sizeof(__pyx_k_73), 0, 1, 0, 0},
  {&__pyx_kp_u_74, __pyx_k_74, sizeof(__pyx_k_74), 0, 1, 0, 0},
  {&__pyx_kp_u_77, __pyx_k_77, sizeof(__pyx_k_77), 0, 1, 0, 0},
  {&__pyx_kp_u_78, __pyx_k_78, sizeof(__pyx_k_78), 0, 1, 0, 0},
  {&__pyx_kp_s_79, __pyx_k_79, sizeof(__pyx_k_79), 0, 0, 1, 0},
  {&__pyx_kp_u_79, __pyx_k_79, sizeof(__pyx_k_79), 0, 1, 0, 0},
  {&__pyx_kp_u_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 1, 0, 0},
  {&__pyx_kp_u_83, __pyx_k_83, sizeof(__pyx_k_83), 0, 1, 0, 0},
  {&__pyx_kp_u_88, __pyx_k_88, sizeof(__pyx_k_88), 0, 1, 0, 0},
  {&__pyx_kp_u_89, __pyx_k_89, sizeof(__pyx_k_89), 0, 1, 0, 0},
  {&__pyx_kp_u_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 1, 0, 0},
  {&__pyx_kp_u_94, __pyx_k_94, sizeof(__pyx_k_94), 0, 1, 0, 0},
  {&__pyx_kp_u_95, __pyx_k_95, sizeof(__pyx_k_95), 0, 1, 0, 0},
  {&__pyx_kp_u_98, __pyx_k_98, sizeof(__pyx_k_98), 0, 1, 0, 0},
  {&__pyx_n_s__A, __pyx_k__A, sizeof(__pyx_k__A), 0, 0, 1, 1},
  {&__pyx_n_u__ASCII, __pyx_k__ASCII, sizeof(__pyx_k__ASCII), 0, 1, 0, 1},
  {&__pyx_n_s__AssertionError, __pyx_k__AssertionError, sizeof(__pyx_k__AssertionError), 0, 0, 1, 1},
  {&__pyx_n_s__AttributeError, __pyx_k__AttributeError, sizeof(__pyx_k__AttributeError), 0, 0, 1, 1},
  {&__pyx_n_s__BytesIO, __pyx_k__BytesIO, sizeof(__pyx_k__BytesIO), 0, 0, 1, 1},
  {&__pyx_n_s__C14NError, __pyx_k__C14NError, sizeof(__pyx_k__C14NError), 0, 0, 1, 1},
  {&__pyx_n_s__CRITICAL, __pyx_k__CRITICAL, sizeof(__pyx_k__CRITICAL), 0, 0, 1, 1},
  {&__pyx_n_s__Comment, __pyx_k__Comment, sizeof(__pyx_k__Comment), 0, 0, 1, 1},
  {&__pyx_n_s__DEBUG, __pyx_k__DEBUG, sizeof(__pyx_k__DEBUG), 0, 0, 1, 1},
  {&__pyx_n_s__DENY_ALL, __pyx_k__DENY_ALL, sizeof(__pyx_k__DENY_ALL), 0, 0, 1, 1},
  {&__pyx_n_s__DENY_WRITE, __pyx_k__DENY_WRITE, sizeof(__pyx_k__DENY_WRITE), 0, 0, 1, 1},
  {&__pyx_n_s__DTD, __pyx_k__DTD, sizeof(__pyx_k__DTD), 0, 0, 1, 1},
  {&__pyx_n_s__DTDError, __pyx_k__DTDError, sizeof(__pyx_k__DTDError), 0, 0, 1, 1},
  {&__pyx_n_s__DTDParseError, __pyx_k__DTDParseError, sizeof(__pyx_k__DTDParseError), 0, 0, 1, 1},
  {&__pyx_n_s__DTDValidateError, __pyx_k__DTDValidateError, sizeof(__pyx_k__DTDValidateError), 0, 0, 1, 1},
  {&__pyx_n_s__DocInfo, __pyx_k__DocInfo, sizeof(__pyx_k__DocInfo), 0, 0, 1, 1},
  {&__pyx_n_s__DocumentInvalid, __pyx_k__DocumentInvalid, sizeof(__pyx_k__DocumentInvalid), 0, 0, 1, 1},
  {&__pyx_n_s__ERROR, __pyx_k__ERROR, sizeof(__pyx_k__ERROR), 0, 0, 1, 1},
  {&__pyx_n_s__Element, __pyx_k__Element, sizeof(__pyx_k__Element), 0, 0, 1, 1},
  {&__pyx_n_s__ElementBase, __pyx_k__ElementBase, sizeof(__pyx_k__ElementBase), 0, 0, 1, 1},
  {&__pyx_n_s__ElementTree, __pyx_k__ElementTree, sizeof(__pyx_k__ElementTree), 0, 0, 1, 1},
  {&__pyx_n_s__Entity, __pyx_k__Entity, sizeof(__pyx_k__Entity), 0, 0, 1, 1},
  {&__pyx_n_s__Error, __pyx_k__Error, sizeof(__pyx_k__Error), 0, 0, 1, 1},
  {&__pyx_n_s__ErrorDomains, __pyx_k__ErrorDomains, sizeof(__pyx_k__ErrorDomains), 0, 0, 1, 1},
  {&__pyx_n_s__ErrorLevels, __pyx_k__ErrorLevels, sizeof(__pyx_k__ErrorLevels), 0, 0, 1, 1},
  {&__pyx_n_s__ErrorTypes, __pyx_k__ErrorTypes, sizeof(__pyx_k__ErrorTypes), 0, 0, 1, 1},
  {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
  {&__pyx_n_s__Extension, __pyx_k__Extension, sizeof(__pyx_k__Extension), 0, 0, 1, 1},
  {&__pyx_n_s__ExternalID, __pyx_k__ExternalID, sizeof(__pyx_k__ExternalID), 0, 0, 1, 1},
  {&__pyx_n_s__FATAL, __pyx_k__FATAL, sizeof(__pyx_k__FATAL), 0, 0, 1, 1},
  {&__pyx_n_s__FunctionNamespace, __pyx_k__FunctionNamespace, sizeof(__pyx_k__FunctionNamespace), 0, 0, 1, 1},
  {&__pyx_n_s__FutureWarning, __pyx_k__FutureWarning, sizeof(__pyx_k__FutureWarning), 0, 0, 1, 1},
  {&__pyx_n_s__GzipFile, __pyx_k__GzipFile, sizeof(__pyx_k__GzipFile), 0, 0, 1, 1},
  {&__pyx_n_s__HTML, __pyx_k__HTML, sizeof(__pyx_k__HTML), 0, 0, 1, 1},
  {&__pyx_n_s__IGNORECASE, __pyx_k__IGNORECASE, sizeof(__pyx_k__IGNORECASE), 0, 0, 1, 1},
  {&__pyx_n_s__IOError, __pyx_k__IOError, sizeof(__pyx_k__IOError), 0, 0, 1, 1},
  {&__pyx_n_s__ImportError, __pyx_k__ImportError, sizeof(__pyx_k__ImportError), 0, 0, 1, 1},
  {&__pyx_n_s__IndexError, __pyx_k__IndexError, sizeof(__pyx_k__IndexError), 0, 0, 1, 1},
  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
  {&__pyx_n_s__LIBXML_VERSION, __pyx_k__LIBXML_VERSION, sizeof(__pyx_k__LIBXML_VERSION), 0, 0, 1, 1},
  {&__pyx_n_s__LIBXSLT_VERSION, __pyx_k__LIBXSLT_VERSION, sizeof(__pyx_k__LIBXSLT_VERSION), 0, 0, 1, 1},
  {&__pyx_n_s__LXML_VERSION, __pyx_k__LXML_VERSION, sizeof(__pyx_k__LXML_VERSION), 0, 0, 1, 1},
  {&__pyx_n_s__LookupError, __pyx_k__LookupError, sizeof(__pyx_k__LookupError), 0, 0, 1, 1},
  {&__pyx_n_s__LxmlError, __pyx_k__LxmlError, sizeof(__pyx_k__LxmlError), 0, 0, 1, 1},
  {&__pyx_n_s__LxmlRegistryError, __pyx_k__LxmlRegistryError, sizeof(__pyx_k__LxmlRegistryError), 0, 0, 1, 1},
  {&__pyx_n_s__LxmlSyntaxError, __pyx_k__LxmlSyntaxError, sizeof(__pyx_k__LxmlSyntaxError), 0, 0, 1, 1},
  {&__pyx_n_s__NAMESPACE, __pyx_k__NAMESPACE, sizeof(__pyx_k__NAMESPACE), 0, 0, 1, 1},
  {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1},
  {&__pyx_n_s__PARSER, __pyx_k__PARSER, sizeof(__pyx_k__PARSER), 0, 0, 1, 1},
  {&__pyx_n_s__PI, __pyx_k__PI, sizeof(__pyx_k__PI), 0, 0, 1, 1},
  {&__pyx_n_u__PI, __pyx_k__PI, sizeof(__pyx_k__PI), 0, 1, 0, 1},
  {&__pyx_n_s__ParseError, __pyx_k__ParseError, sizeof(__pyx_k__ParseError), 0, 0, 1, 1},
  {&__pyx_n_s__ParserError, __pyx_k__ParserError, sizeof(__pyx_k__ParserError), 0, 0, 1, 1},
  {&__pyx_n_s__PyErrorLog, __pyx_k__PyErrorLog, sizeof(__pyx_k__PyErrorLog), 0, 0, 1, 1},
  {&__pyx_n_s__RELAXNGV, __pyx_k__RELAXNGV, sizeof(__pyx_k__RELAXNGV), 0, 0, 1, 1},
  {&__pyx_n_s__RelaxNG, __pyx_k__RelaxNG, sizeof(__pyx_k__RelaxNG), 0, 0, 1, 1},
  {&__pyx_n_s__RelaxNGError, __pyx_k__RelaxNGError, sizeof(__pyx_k__RelaxNGError), 0, 0, 1, 1},
  {&__pyx_n_s__RelaxNGErrorTypes, __pyx_k__RelaxNGErrorTypes, sizeof(__pyx_k__RelaxNGErrorTypes), 0, 0, 1, 1},
  {&__pyx_n_s__RelaxNGParseError, __pyx_k__RelaxNGParseError, sizeof(__pyx_k__RelaxNGParseError), 0, 0, 1, 1},
  {&__pyx_n_s__Resolver, __pyx_k__Resolver, sizeof(__pyx_k__Resolver), 0, 0, 1, 1},
  {&__pyx_n_s__Schematron, __pyx_k__Schematron, sizeof(__pyx_k__Schematron), 0, 0, 1, 1},
  {&__pyx_n_s__SchematronError, __pyx_k__SchematronError, sizeof(__pyx_k__SchematronError), 0, 0, 1, 1},
  {&__pyx_n_s__SerialisationError, __pyx_k__SerialisationError, sizeof(__pyx_k__SerialisationError), 0, 0, 1, 1},
  {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},
  {&__pyx_n_s__StringIO, __pyx_k__StringIO, sizeof(__pyx_k__StringIO), 0, 0, 1, 1},
  {&__pyx_n_s__SubElement, __pyx_k__SubElement, sizeof(__pyx_k__SubElement), 0, 0, 1, 1},
  {&__pyx_n_s__SyntaxError, __pyx_k__SyntaxError, sizeof(__pyx_k__SyntaxError), 0, 0, 1, 1},
  {&__pyx_n_s__SystemID, __pyx_k__SystemID, sizeof(__pyx_k__SystemID), 0, 0, 1, 1},
  {&__pyx_n_s__TAG, __pyx_k__TAG, sizeof(__pyx_k__TAG), 0, 0, 1, 1},
  {&__pyx_n_s__TreeBuilder, __pyx_k__TreeBuilder, sizeof(__pyx_k__TreeBuilder), 0, 0, 1, 1},
  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
  {&__pyx_n_s__U, __pyx_k__U, sizeof(__pyx_k__U), 0, 0, 1, 1},
  {&__pyx_n_s__UNICODE, __pyx_k__UNICODE, sizeof(__pyx_k__UNICODE), 0, 0, 1, 1},
  {&__pyx_n_s__URL, __pyx_k__URL, sizeof(__pyx_k__URL), 0, 0, 1, 1},
  {&__pyx_n_u__UTF8, __pyx_k__UTF8, sizeof(__pyx_k__UTF8), 0, 1, 0, 1},
  {&__pyx_n_s__UnicodeDecodeError, __pyx_k__UnicodeDecodeError, sizeof(__pyx_k__UnicodeDecodeError), 0, 0, 1, 1},
  {&__pyx_n_s__UnicodeEncodeError, __pyx_k__UnicodeEncodeError, sizeof(__pyx_k__UnicodeEncodeError), 0, 0, 1, 1},
  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
  {&__pyx_n_s__WARNING, __pyx_k__WARNING, sizeof(__pyx_k__WARNING), 0, 0, 1, 1},
  {&__pyx_n_s__XInclude, __pyx_k__XInclude, sizeof(__pyx_k__XInclude), 0, 0, 1, 1},
  {&__pyx_n_s__XIncludeError, __pyx_k__XIncludeError, sizeof(__pyx_k__XIncludeError), 0, 0, 1, 1},
  {&__pyx_n_s__XML, __pyx_k__XML, sizeof(__pyx_k__XML), 0, 0, 1, 1},
  {&__pyx_n_s__XMLDTDID, __pyx_k__XMLDTDID, sizeof(__pyx_k__XMLDTDID), 0, 0, 1, 1},
  {&__pyx_n_s__XMLID, __pyx_k__XMLID, sizeof(__pyx_k__XMLID), 0, 0, 1, 1},
  {&__pyx_n_s__XMLSchema, __pyx_k__XMLSchema, sizeof(__pyx_k__XMLSchema), 0, 0, 1, 1},
  {&__pyx_n_s__XMLSchemaError, __pyx_k__XMLSchemaError, sizeof(__pyx_k__XMLSchemaError), 0, 0, 1, 1},
  {&__pyx_n_s__XMLSchemaParseError, __pyx_k__XMLSchemaParseError, sizeof(__pyx_k__XMLSchemaParseError), 0, 0, 1, 1},
  {&__pyx_n_s__XMLSyntaxError, __pyx_k__XMLSyntaxError, sizeof(__pyx_k__XMLSyntaxError), 0, 0, 1, 1},
  {&__pyx_n_u__XPATH_LOCATIONSET, __pyx_k__XPATH_LOCATIONSET, sizeof(__pyx_k__XPATH_LOCATIONSET), 0, 1, 0, 1},
  {&__pyx_n_u__XPATH_POINT, __pyx_k__XPATH_POINT, sizeof(__pyx_k__XPATH_POINT), 0, 1, 0, 1},
  {&__pyx_n_u__XPATH_RANGE, __pyx_k__XPATH_RANGE, sizeof(__pyx_k__XPATH_RANGE), 0, 1, 0, 1},
  {&__pyx_n_u__XPATH_USERS, __pyx_k__XPATH_USERS, sizeof(__pyx_k__XPATH_USERS), 0, 1, 0, 1},
  {&__pyx_n_s__XPath, __pyx_k__XPath, sizeof(__pyx_k__XPath), 0, 0, 1, 1},
  {&__pyx_n_s__XPathError, __pyx_k__XPathError, sizeof(__pyx_k__XPathError), 0, 0, 1, 1},
  {&__pyx_n_s__XPathEvalError, __pyx_k__XPathEvalError, sizeof(__pyx_k__XPathEvalError), 0, 0, 1, 1},
  {&__pyx_n_s__XPathEvaluator, __pyx_k__XPathEvaluator, sizeof(__pyx_k__XPathEvaluator), 0, 0, 1, 1},
  {&__pyx_n_s__XPathFunctionError, __pyx_k__XPathFunctionError, sizeof(__pyx_k__XPathFunctionError), 0, 0, 1, 1},
  {&__pyx_n_s__XPathResultError, __pyx_k__XPathResultError, sizeof(__pyx_k__XPathResultError), 0, 0, 1, 1},
  {&__pyx_n_s__XPathSyntaxError, __pyx_k__XPathSyntaxError, sizeof(__pyx_k__XPathSyntaxError), 0, 0, 1, 1},
  {&__pyx_n_s__XSLT, __pyx_k__XSLT, sizeof(__pyx_k__XSLT), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTApplyError, __pyx_k__XSLTApplyError, sizeof(__pyx_k__XSLTApplyError), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTError, __pyx_k__XSLTError, sizeof(__pyx_k__XSLTError), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTExtension, __pyx_k__XSLTExtension, sizeof(__pyx_k__XSLTExtension), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTExtensionError, __pyx_k__XSLTExtensionError, sizeof(__pyx_k__XSLTExtensionError), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTParseError, __pyx_k__XSLTParseError, sizeof(__pyx_k__XSLTParseError), 0, 0, 1, 1},
  {&__pyx_n_s__XSLTSaveError, __pyx_k__XSLTSaveError, sizeof(__pyx_k__XSLTSaveError), 0, 0, 1, 1},
  {&__pyx_n_u___, __pyx_k___, sizeof(__pyx_k___), 0, 1, 0, 1},
  {&__pyx_n_s___BaseParser, __pyx_k___BaseParser, sizeof(__pyx_k___BaseParser), 0, 0, 1, 1},
  {&__pyx_n_s___Element, __pyx_k___Element, sizeof(__pyx_k___Element), 0, 0, 1, 1},
  {&__pyx_n_s___ElementTree, __pyx_k___ElementTree, sizeof(__pyx_k___ElementTree), 0, 0, 1, 1},
  {&__pyx_n_s___ErrorLog, __pyx_k___ErrorLog, sizeof(__pyx_k___ErrorLog), 0, 0, 1, 1},
  {&__pyx_n_s___FeedParser, __pyx_k___FeedParser, sizeof(__pyx_k___FeedParser), 0, 0, 1, 1},
  {&__pyx_n_u___GlobalErrorLog, __pyx_k___GlobalErrorLog, sizeof(__pyx_k___GlobalErrorLog), 0, 1, 0, 1},
  {&__pyx_n_s___ListErrorLog, __pyx_k___ListErrorLog, sizeof(__pyx_k___ListErrorLog), 0, 0, 1, 1},
  {&__pyx_n_s___NamespaceRegistry, __pyx_k___NamespaceRegistry, sizeof(__pyx_k___NamespaceRegistry), 0, 0, 1, 1},
  {&__pyx_n_s___ResolverRegistry, __pyx_k___ResolverRegistry, sizeof(__pyx_k___ResolverRegistry), 0, 0, 1, 1},
  {&__pyx_n_s___TargetParserResult, __pyx_k___TargetParserResult, sizeof(__pyx_k___TargetParserResult), 0, 0, 1, 1},
  {&__pyx_n_s___Validator, __pyx_k___Validator, sizeof(__pyx_k___Validator), 0, 0, 1, 1},
  {&__pyx_n_s___XPathEvaluatorBase, __pyx_k___XPathEvaluatorBase, sizeof(__pyx_k___XPathEvaluatorBase), 0, 0, 1, 1},
  {&__pyx_n_s____builtin__, __pyx_k____builtin__, sizeof(__pyx_k____builtin__), 0, 0, 1, 1},
  {&__pyx_n_s____call__, __pyx_k____call__, sizeof(__pyx_k____call__), 0, 0, 1, 1},
  {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1},
  {&__pyx_n_s____contains__, __pyx_k____contains__, sizeof(__pyx_k____contains__), 0, 0, 1, 1},
  {&__pyx_n_s____copy__, __pyx_k____copy__, sizeof(__pyx_k____copy__), 0, 0, 1, 1},
  {&__pyx_n_s____deepcopy__, __pyx_k____deepcopy__, sizeof(__pyx_k____deepcopy__), 0, 0, 1, 1},
  {&__pyx_n_s____delitem__, __pyx_k____delitem__, sizeof(__pyx_k____delitem__), 0, 0, 1, 1},
  {&__pyx_n_u____dict__, __pyx_k____dict__, sizeof(__pyx_k____dict__), 0, 1, 0, 1},
  {&__pyx_n_s____docformat__, __pyx_k____docformat__, sizeof(__pyx_k____docformat__), 0, 0, 1, 1},
  {&__pyx_n_s____getattribute__, __pyx_k____getattribute__, sizeof(__pyx_k____getattribute__), 0, 0, 1, 1},
  {&__pyx_n_s____getitem__, __pyx_k____getitem__, sizeof(__pyx_k____getitem__), 0, 0, 1, 1},
  {&__pyx_n_s____hash__, __pyx_k____hash__, sizeof(__pyx_k____hash__), 0, 0, 1, 1},
  {&__pyx_n_s____init__, __pyx_k____init__, sizeof(__pyx_k____init__), 0, 0, 1, 1},
  {&__pyx_n_s____iter__, __pyx_k____iter__, sizeof(__pyx_k____iter__), 0, 0, 1, 1},
  {&__pyx_n_s____len__, __pyx_k____len__, sizeof(__pyx_k____len__), 0, 0, 1, 1},
  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
  {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1},
  {&__pyx_n_s____next__, __pyx_k____next__, sizeof(__pyx_k____next__), 0, 0, 1, 1},
  {&__pyx_n_s____repr__, __pyx_k____repr__, sizeof(__pyx_k____repr__), 0, 0, 1, 1},
  {&__pyx_n_s____reversed__, __pyx_k____reversed__, sizeof(__pyx_k____reversed__), 0, 0, 1, 1},
  {&__pyx_n_s____setitem__, __pyx_k____setitem__, sizeof(__pyx_k____setitem__), 0, 0, 1, 1},
  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
  {&__pyx_n_s____unicode__, __pyx_k____unicode__, sizeof(__pyx_k____unicode__), 0, 0, 1, 1},
  {&__pyx_n_s____version__, __pyx_k____version__, sizeof(__pyx_k____version__), 0, 0, 1, 1},
  {&__pyx_n_s___accepted_domains, __pyx_k___accepted_domains, sizeof(__pyx_k___accepted_domains), 0, 0, 1, 1},
  {&__pyx_n_s___access_control, __pyx_k___access_control, sizeof(__pyx_k___access_control), 0, 0, 1, 1},
  {&__pyx_n_s___assertHasRoot, __pyx_k___assertHasRoot, sizeof(__pyx_k___assertHasRoot), 0, 0, 1, 1},
  {&__pyx_n_s___assertNode, __pyx_k___assertNode, sizeof(__pyx_k___assertNode), 0, 0, 1, 1},
  {&__pyx_n_s___assureDocGetsFreed, __pyx_k___assureDocGetsFreed, sizeof(__pyx_k___assureDocGetsFreed), 0, 0, 1, 1},
  {&__pyx_n_s___attrib, __pyx_k___attrib, sizeof(__pyx_k___attrib), 0, 0, 1, 1},
  {&__pyx_n_s___buffer, __pyx_k___buffer, sizeof(__pyx_k___buffer), 0, 0, 1, 1},
  {&__pyx_n_s___buffer_len, __pyx_k___buffer_len, sizeof(__pyx_k___buffer_len), 0, 0, 1, 1},
  {&__pyx_n_s___buffer_refcnt, __pyx_k___buffer_refcnt, sizeof(__pyx_k___buffer_refcnt), 0, 0, 1, 1},
  {&__pyx_n_s___build_items, __pyx_k___build_items, sizeof(__pyx_k___build_items), 0, 0, 1, 1},
  {&__pyx_n_s___build_keys, __pyx_k___build_keys, sizeof(__pyx_k___build_keys), 0, 0, 1, 1},
  {&__pyx_n_s___bytes, __pyx_k___bytes, sizeof(__pyx_k___bytes), 0, 0, 1, 1},
  {&__pyx_n_s___bytes_read, __pyx_k___bytes_read, sizeof(__pyx_k___bytes_read), 0, 0, 1, 1},
  {&__pyx_n_s___c_attr, __pyx_k___c_attr, sizeof(__pyx_k___c_attr), 0, 0, 1, 1},
  {&__pyx_n_s___c_ctxt, __pyx_k___c_ctxt, sizeof(__pyx_k___c_ctxt), 0, 0, 1, 1},
  {&__pyx_n_s___c_dict, __pyx_k___c_dict, sizeof(__pyx_k___c_dict), 0, 0, 1, 1},
  {&__pyx_n_s___c_doc, __pyx_k___c_doc, sizeof(__pyx_k___c_doc), 0, 0, 1, 1},
  {&__pyx_n_s___c_dtd, __pyx_k___c_dtd, sizeof(__pyx_k___c_dtd), 0, 0, 1, 1},
  {&__pyx_n_s___c_name, __pyx_k___c_name, sizeof(__pyx_k___c_name), 0, 0, 1, 1},
  {&__pyx_n_s___c_node, __pyx_k___c_node, sizeof(__pyx_k___c_node), 0, 0, 1, 1},
  {&__pyx_n_s___c_ns, __pyx_k___c_ns, sizeof(__pyx_k___c_ns), 0, 0, 1, 1},
  {&__pyx_n_s___c_ns_uri_utf, __pyx_k___c_ns_uri_utf, sizeof(__pyx_k___c_ns_uri_utf), 0, 0, 1, 1},
  {&__pyx_n_s___c_schema, __pyx_k___c_schema, sizeof(__pyx_k___c_schema), 0, 0, 1, 1},
  {&__pyx_n_s___c_schema_doc, __pyx_k___c_schema_doc, sizeof(__pyx_k___c_schema_doc), 0, 0, 1, 1},
  {&__pyx_n_s___c_style, __pyx_k___c_style, sizeof(__pyx_k___c_style), 0, 0, 1, 1},
  {&__pyx_n_s___c_style_doc, __pyx_k___c_style_doc, sizeof(__pyx_k___c_style_doc), 0, 0, 1, 1},
  {&__pyx_n_s___c_url, __pyx_k___c_url, sizeof(__pyx_k___c_url), 0, 0, 1, 1},
  {&__pyx_n_s___class_lookup, __pyx_k___class_lookup, sizeof(__pyx_k___class_lookup), 0, 0, 1, 1},
  {&__pyx_n_s___class_mapping, __pyx_k___class_mapping, sizeof(__pyx_k___class_mapping), 0, 0, 1, 1},
  {&__pyx_n_s___cleanup_context, __pyx_k___cleanup_context, sizeof(__pyx_k___cleanup_context), 0, 0, 1, 1},
  {&__pyx_n_s___close_filelike, __pyx_k___close_filelike, sizeof(__pyx_k___close_filelike), 0, 0, 1, 1},
  {&__pyx_n_s___compile, __pyx_k___compile, sizeof(__pyx_k___compile), 0, 0, 1, 1},
  {&__pyx_n_s___compile_map, __pyx_k___compile_map, sizeof(__pyx_k___compile_map), 0, 0, 1, 1},
  {&__pyx_n_s___context, __pyx_k___context, sizeof(__pyx_k___context), 0, 0, 1, 1},
  {&__pyx_n_s___context_node, __pyx_k___context_node, sizeof(__pyx_k___context_node), 0, 0, 1, 1},
  {&__pyx_n_s___copy, __pyx_k___copy, sizeof(__pyx_k___copy), 0, 0, 1, 1},
  {&__pyx_n_s___createContext, __pyx_k___createContext, sizeof(__pyx_k___createContext), 0, 0, 1, 1},
  {&__pyx_n_s___createOutputBuffer, __pyx_k___createOutputBuffer, sizeof(__pyx_k___createOutputBuffer), 0, 0, 1, 1},
  {&__pyx_n_s___createParserInput, __pyx_k___createParserInput, sizeof(__pyx_k___createParserInput), 0, 0, 1, 1},
  {&__pyx_n_s___data, __pyx_k___data, sizeof(__pyx_k___data), 0, 0, 1, 1},
  {&__pyx_n_s___data_bytes, __pyx_k___data_bytes, sizeof(__pyx_k___data_bytes), 0, 0, 1, 1},
  {&__pyx_n_s___default_encoding, __pyx_k___default_encoding, sizeof(__pyx_k___default_encoding), 0, 0, 1, 1},
  {&__pyx_n_s___default_parser, __pyx_k___default_parser, sizeof(__pyx_k___default_parser), 0, 0, 1, 1},
  {&__pyx_n_s___default_resolver, __pyx_k___default_resolver, sizeof(__pyx_k___default_resolver), 0, 0, 1, 1},
  {&__pyx_n_s___dependent_proxies, __pyx_k___dependent_proxies, sizeof(__pyx_k___dependent_proxies), 0, 0, 1, 1},
  {&__pyx_n_s___doc, __pyx_k___doc, sizeof(__pyx_k___doc), 0, 0, 1, 1},
  {&__pyx_n_s___element, __pyx_k___element, sizeof(__pyx_k___element), 0, 0, 1, 1},
  {&__pyx_n_s___element_stack, __pyx_k___element_stack, sizeof(__pyx_k___element_stack), 0, 0, 1, 1},
  {&__pyx_n_s___element_stack_pop, __pyx_k___element_stack_pop, sizeof(__pyx_k___element_stack_pop), 0, 0, 1, 1},
  {&__pyx_n_s___elementpath, __pyx_k___elementpath, sizeof(__pyx_k___elementpath), 0, 0, 1, 1},
  {&__pyx_n_s___encoding, __pyx_k___encoding, sizeof(__pyx_k___encoding), 0, 0, 1, 1},
  {&__pyx_n_s___end_node, __pyx_k___end_node, sizeof(__pyx_k___end_node), 0, 0, 1, 1},
  {&__pyx_n_s___entries, __pyx_k___entries, sizeof(__pyx_k___entries), 0, 0, 1, 1},
  {&__pyx_n_s___error_log, __pyx_k___error_log, sizeof(__pyx_k___error_log), 0, 0, 1, 1},
  {&__pyx_n_s___etree_or_element, __pyx_k___etree_or_element, sizeof(__pyx_k___etree_or_element), 0, 0, 1, 1},
  {&__pyx_n_s___eval_arg, __pyx_k___eval_arg, sizeof(__pyx_k___eval_arg), 0, 0, 1, 1},
  {&__pyx_n_s___eval_context_dict, __pyx_k___eval_context_dict, sizeof(__pyx_k___eval_context_dict), 0, 0, 1, 1},
  {&__pyx_n_s___eval_lock, __pyx_k___eval_lock, sizeof(__pyx_k___eval_lock), 0, 0, 1, 1},
  {&__pyx_n_s___event_filter, __pyx_k___event_filter, sizeof(__pyx_k___event_filter), 0, 0, 1, 1},
  {&__pyx_n_s___event_index, __pyx_k___event_index, sizeof(__pyx_k___event_index), 0, 0, 1, 1},
  {&__pyx_n_s___events, __pyx_k___events, sizeof(__pyx_k___events), 0, 0, 1, 1},
  {&__pyx_n_s___exc, __pyx_k___exc, sizeof(__pyx_k___exc), 0, 0, 1, 1},
  {&__pyx_n_s___exc_context, __pyx_k___exc_context, sizeof(__pyx_k___exc_context), 0, 0, 1, 1},
  {&__pyx_n_s___exc_info, __pyx_k___exc_info, sizeof(__pyx_k___exc_info), 0, 0, 1, 1},
  {&__pyx_n_s___extension_elements, __pyx_k___extension_elements, sizeof(__pyx_k___extension_elements), 0, 0, 1, 1},
  {&__pyx_n_s___extensions, __pyx_k___extensions, sizeof(__pyx_k___extensions), 0, 0, 1, 1},
  {&__pyx_n_s___factory, __pyx_k___factory, sizeof(__pyx_k___factory), 0, 0, 1, 1},
  {&__pyx_n_s___fallback_function, __pyx_k___fallback_function, sizeof(__pyx_k___fallback_function), 0, 0, 1, 1},
  {&__pyx_n_s___file, __pyx_k___file, sizeof(__pyx_k___file), 0, 0, 1, 1},
  {&__pyx_n_s___filelike, __pyx_k___filelike, sizeof(__pyx_k___filelike), 0, 0, 1, 1},
  {&__pyx_n_s___filename, __pyx_k___filename, sizeof(__pyx_k___filename), 0, 0, 1, 1},
  {&__pyx_n_s___findOrBuildNodeNs, __pyx_k___findOrBuildNodeNs, sizeof(__pyx_k___findOrBuildNodeNs), 0, 0, 1, 1},
  {&__pyx_n_s___first_error, __pyx_k___first_error, sizeof(__pyx_k___first_error), 0, 0, 1, 1},
  {&__pyx_n_s___flush, __pyx_k___flush, sizeof(__pyx_k___flush), 0, 0, 1, 1},
  {&__pyx_n_s___for_html, __pyx_k___for_html, sizeof(__pyx_k___for_html), 0, 0, 1, 1},
  {&__pyx_n_s___free_after_use, __pyx_k___free_after_use, sizeof(__pyx_k___free_after_use), 0, 0, 1, 1},
  {&__pyx_n_s___function_cache, __pyx_k___function_cache, sizeof(__pyx_k___function_cache), 0, 0, 1, 1},
  {&__pyx_n_s___gc_doc, __pyx_k___gc_doc, sizeof(__pyx_k___gc_doc), 0, 0, 1, 1},
  {&__pyx_n_s___get, __pyx_k___get, sizeof(__pyx_k___get), 0, 0, 1, 1},
  {&__pyx_n_s___getName, __pyx_k___getName, sizeof(__pyx_k___getName), 0, 0, 1, 1},
  {&__pyx_n_s___getParserContext, __pyx_k___getParserContext, sizeof(__pyx_k___getParserContext), 0, 0, 1, 1},
  {&__pyx_n_s___getThreadDict, __pyx_k___getThreadDict, sizeof(__pyx_k___getThreadDict), 0, 0, 1, 1},
  {&__pyx_n_s___global_namespaces, __pyx_k___global_namespaces, sizeof(__pyx_k___global_namespaces), 0, 0, 1, 1},
  {&__pyx_n_s___handleParseResult, __pyx_k___handleParseResult, sizeof(__pyx_k___handleParseResult), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxComment, __pyx_k___handleSaxComment, sizeof(__pyx_k___handleSaxComment), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxData, __pyx_k___handleSaxData, sizeof(__pyx_k___handleSaxData), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxDoctype, __pyx_k___handleSaxDoctype, sizeof(__pyx_k___handleSaxDoctype), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxEnd, __pyx_k___handleSaxEnd, sizeof(__pyx_k___handleSaxEnd), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxException, __pyx_k___handleSaxException, sizeof(__pyx_k___handleSaxException), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxPi, __pyx_k___handleSaxPi, sizeof(__pyx_k___handleSaxPi), 0, 0, 1, 1},
  {&__pyx_n_s___handleSaxStart, __pyx_k___handleSaxStart, sizeof(__pyx_k___handleSaxStart), 0, 0, 1, 1},
  {&__pyx_n_s___handle_result, __pyx_k___handle_result, sizeof(__pyx_k___handle_result), 0, 0, 1, 1},
  {&__pyx_n_s___has_raised, __pyx_k___has_raised, sizeof(__pyx_k___has_raised), 0, 0, 1, 1},
  {&__pyx_n_s___hold, __pyx_k___hold, sizeof(__pyx_k___hold), 0, 0, 1, 1},
  {&__pyx_n_s___href, __pyx_k___href, sizeof(__pyx_k___href), 0, 0, 1, 1},
  {&__pyx_n_s___in_tail, __pyx_k___in_tail, sizeof(__pyx_k___in_tail), 0, 0, 1, 1},
  {&__pyx_n_s___index, __pyx_k___index, sizeof(__pyx_k___index), 0, 0, 1, 1},
  {&__pyx_n_s___init, __pyx_k___init, sizeof(__pyx_k___init), 0, 0, 1, 1},
  {&__pyx_n_s___initParserContext, __pyx_k___initParserContext, sizeof(__pyx_k___initParserContext), 0, 0, 1, 1},
  {&__pyx_n_s___initTagMatch, __pyx_k___initTagMatch, sizeof(__pyx_k___initTagMatch), 0, 0, 1, 1},
  {&__pyx_n_s___input, __pyx_k___input, sizeof(__pyx_k___input), 0, 0, 1, 1},
  {&__pyx_n_s___items, __pyx_k___items, sizeof(__pyx_k___items), 0, 0, 1, 1},
  {&__pyx_n_s___keys, __pyx_k___keys, sizeof(__pyx_k___keys), 0, 0, 1, 1},
  {&__pyx_n_s___keysvalues, __pyx_k___keysvalues, sizeof(__pyx_k___keysvalues), 0, 0, 1, 1},
  {&__pyx_n_s___last, __pyx_k___last, sizeof(__pyx_k___last), 0, 0, 1, 1},
  {&__pyx_n_s___lock, __pyx_k___lock, sizeof(__pyx_k___lock), 0, 0, 1, 1},
  {&__pyx_n_s___log, __pyx_k___log, sizeof(__pyx_k___log), 0, 0, 1, 1},
  {&__pyx_n_s___lookup_function, __pyx_k___lookup_function, sizeof(__pyx_k___lookup_function), 0, 0, 1, 1},
  {&__pyx_n_s___make_string, __pyx_k___make_string, sizeof(__pyx_k___make_string), 0, 0, 1, 1},
  {&__pyx_n_s___map_level, __pyx_k___map_level, sizeof(__pyx_k___map_level), 0, 0, 1, 1},
  {&__pyx_n_s___max_len, __pyx_k___max_len, sizeof(__pyx_k___max_len), 0, 0, 1, 1},
  {&__pyx_n_s___name, __pyx_k___name, sizeof(__pyx_k___name), 0, 0, 1, 1},
  {&__pyx_n_s___names, __pyx_k___names, sizeof(__pyx_k___names), 0, 0, 1, 1},
  {&__pyx_n_s___namespaces, __pyx_k___namespaces, sizeof(__pyx_k___namespaces), 0, 0, 1, 1},
  {&__pyx_n_s___newParserCtxt, __pyx_k___newParserCtxt, sizeof(__pyx_k___newParserCtxt), 0, 0, 1, 1},
  {&__pyx_n_s___newPushParserCtxt, __pyx_k___newPushParserCtxt, sizeof(__pyx_k___newPushParserCtxt), 0, 0, 1, 1},
  {&__pyx_n_s___newSaxValidator, __pyx_k___newSaxValidator, sizeof(__pyx_k___newSaxValidator), 0, 0, 1, 1},
  {&__pyx_n_s___nextEvent, __pyx_k___nextEvent, sizeof(__pyx_k___nextEvent), 0, 0, 1, 1},
  {&__pyx_n_s___nextNodeAnyTag, __pyx_k___nextNodeAnyTag, sizeof(__pyx_k___nextNodeAnyTag), 0, 0, 1, 1},
  {&__pyx_n_s___nextNodeMatchTag, __pyx_k___nextNodeMatchTag, sizeof(__pyx_k___nextNodeMatchTag), 0, 0, 1, 1},
  {&__pyx_n_s___next_element, __pyx_k___next_element, sizeof(__pyx_k___next_element), 0, 0, 1, 1},
  {&__pyx_n_s___next_node, __pyx_k___next_node, sizeof(__pyx_k___next_node), 0, 0, 1, 1},
  {&__pyx_n_s___node, __pyx_k___node, sizeof(__pyx_k___node), 0, 0, 1, 1},
  {&__pyx_n_s___node_stack, __pyx_k___node_stack, sizeof(__pyx_k___node_stack), 0, 0, 1, 1},
  {&__pyx_n_s___node_type, __pyx_k___node_type, sizeof(__pyx_k___node_type), 0, 0, 1, 1},
  {&__pyx_n_s___ns_counter, __pyx_k___ns_counter, sizeof(__pyx_k___ns_counter), 0, 0, 1, 1},
  {&__pyx_n_s___ns_stack, __pyx_k___ns_stack, sizeof(__pyx_k___ns_stack), 0, 0, 1, 1},
  {&__pyx_n_s___ns_uri, __pyx_k___ns_uri, sizeof(__pyx_k___ns_uri), 0, 0, 1, 1},
  {&__pyx_n_s___ns_uri_utf, __pyx_k___ns_uri_utf, sizeof(__pyx_k___ns_uri_utf), 0, 0, 1, 1},
  {&__pyx_n_s___nsextract_path, __pyx_k___nsextract_path, sizeof(__pyx_k___nsextract_path), 0, 0, 1, 1},
  {&__pyx_n_s___optval, __pyx_k___optval, sizeof(__pyx_k___optval), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxCData, __pyx_k___origSaxCData, sizeof(__pyx_k___origSaxCData), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxComment, __pyx_k___origSaxComment, sizeof(__pyx_k___origSaxComment), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxData, __pyx_k___origSaxData, sizeof(__pyx_k___origSaxData), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxDoctype, __pyx_k___origSaxDoctype, sizeof(__pyx_k___origSaxDoctype), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxEnd, __pyx_k___origSaxEnd, sizeof(__pyx_k___origSaxEnd), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxEndNoNs, __pyx_k___origSaxEndNoNs, sizeof(__pyx_k___origSaxEndNoNs), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxPI, __pyx_k___origSaxPI, sizeof(__pyx_k___origSaxPI), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxPi, __pyx_k___origSaxPi, sizeof(__pyx_k___origSaxPi), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxStart, __pyx_k___origSaxStart, sizeof(__pyx_k___origSaxStart), 0, 0, 1, 1},
  {&__pyx_n_s___origSaxStartNoNs, __pyx_k___origSaxStartNoNs, sizeof(__pyx_k___origSaxStartNoNs), 0, 0, 1, 1},
  {&__pyx_n_s___parent, __pyx_k___parent, sizeof(__pyx_k___parent), 0, 0, 1, 1},
  {&__pyx_n_s___parseDoc, __pyx_k___parseDoc, sizeof(__pyx_k___parseDoc), 0, 0, 1, 1},
  {&__pyx_n_s___parseDocFromFile, __pyx_k___parseDocFromFile, sizeof(__pyx_k___parseDocFromFile), 0, 0, 1, 1},
  {&__pyx_n_s___parseUnicodeDoc, __pyx_k___parseUnicodeDoc, sizeof(__pyx_k___parseUnicodeDoc), 0, 0, 1, 1},
  {&__pyx_n_s___parse_chunk, __pyx_k___parse_chunk, sizeof(__pyx_k___parse_chunk), 0, 0, 1, 1},
  {&__pyx_n_s___parse_options, __pyx_k___parse_options, sizeof(__pyx_k___parse_options), 0, 0, 1, 1},
  {&__pyx_n_s___parser, __pyx_k___parser, sizeof(__pyx_k___parser), 0, 0, 1, 1},
  {&__pyx_n_s___parser_context, __pyx_k___parser_context, sizeof(__pyx_k___parser_context), 0, 0, 1, 1},
  {&__pyx_n_s___path, __pyx_k___path, sizeof(__pyx_k___path), 0, 0, 1, 1},
  {&__pyx_n_s___pop_event, __pyx_k___pop_event, sizeof(__pyx_k___pop_event), 0, 0, 1, 1},
  {&__pyx_n_s___pop_node, __pyx_k___pop_node, sizeof(__pyx_k___pop_node), 0, 0, 1, 1},
  {&__pyx_n_s___pop_ns, __pyx_k___pop_ns, sizeof(__pyx_k___pop_ns), 0, 0, 1, 1},
  {&__pyx_n_s___prefix, __pyx_k___prefix, sizeof(__pyx_k___prefix), 0, 0, 1, 1},
  {&__pyx_n_s___prefix_tail, __pyx_k___prefix_tail, sizeof(__pyx_k___prefix_tail), 0, 0, 1, 1},
  {&__pyx_n_s___prefix_utf, __pyx_k___prefix_utf, sizeof(__pyx_k___prefix_utf), 0, 0, 1, 1},
  {&__pyx_n_s___prefs, __pyx_k___prefs, sizeof(__pyx_k___prefs), 0, 0, 1, 1},
  {&__pyx_n_s___private, __pyx_k___private, sizeof(__pyx_k___private), 0, 0, 1, 1},
  {&__pyx_n_s___profile, __pyx_k___profile, sizeof(__pyx_k___profile), 0, 0, 1, 1},
  {&__pyx_n_s___pystrings, __pyx_k___pystrings, sizeof(__pyx_k___pystrings), 0, 0, 1, 1},
  {&__pyx_n_s___pytag, __pyx_k___pytag, sizeof(__pyx_k___pytag), 0, 0, 1, 1},
  {&__pyx_n_s___python_target, __pyx_k___python_target, sizeof(__pyx_k___python_target), 0, 0, 1, 1},
  {&__pyx_n_s___raiseImmutable, __pyx_k___raiseImmutable, sizeof(__pyx_k___raiseImmutable), 0, 0, 1, 1},
  {&__pyx_n_s___raise_eval_error, __pyx_k___raise_eval_error, sizeof(__pyx_k___raise_eval_error), 0, 0, 1, 1},
  {&__pyx_n_s___raise_if_stored, __pyx_k___raise_if_stored, sizeof(__pyx_k___raise_if_stored), 0, 0, 1, 1},
  {&__pyx_n_s___raise_parse_error, __pyx_k___raise_parse_error, sizeof(__pyx_k___raise_parse_error), 0, 0, 1, 1},
  {&__pyx_n_s___readDoc, __pyx_k___readDoc, sizeof(__pyx_k___readDoc), 0, 0, 1, 1},
  {&__pyx_n_s___readDtd, __pyx_k___readDtd, sizeof(__pyx_k___readDtd), 0, 0, 1, 1},
  {&__pyx_n_s___receive, __pyx_k___receive, sizeof(__pyx_k___receive), 0, 0, 1, 1},
  {&__pyx_n_s___register_context, __pyx_k___register_context, sizeof(__pyx_k___register_context), 0, 0, 1, 1},
  {&__pyx_n_s___release_context, __pyx_k___release_context, sizeof(__pyx_k___release_context), 0, 0, 1, 1},
  {&__pyx_n_s___release_temp_refs, __pyx_k___release_temp_refs, sizeof(__pyx_k___release_temp_refs), 0, 0, 1, 1},
  {&__pyx_n_s___remove_comments, __pyx_k___remove_comments, sizeof(__pyx_k___remove_comments), 0, 0, 1, 1},
  {&__pyx_n_s___remove_pis, __pyx_k___remove_pis, sizeof(__pyx_k___remove_pis), 0, 0, 1, 1},
  {&__pyx_n_s___resetParserContext, __pyx_k___resetParserContext, sizeof(__pyx_k___resetParserContext), 0, 0, 1, 1},
  {&__pyx_n_s___resolvers, __pyx_k___resolvers, sizeof(__pyx_k___resolvers), 0, 0, 1, 1},
  {&__pyx_n_s___root, __pyx_k___root, sizeof(__pyx_k___root), 0, 0, 1, 1},
  {&__pyx_n_s___run_transform, __pyx_k___run_transform, sizeof(__pyx_k___run_transform), 0, 0, 1, 1},
  {&__pyx_n_s___sax_event_filter, __pyx_k___sax_event_filter, sizeof(__pyx_k___sax_event_filter), 0, 0, 1, 1},
  {&__pyx_n_s___sax_plug, __pyx_k___sax_plug, sizeof(__pyx_k___sax_plug), 0, 0, 1, 1},
  {&__pyx_n_s___schema, __pyx_k___schema, sizeof(__pyx_k___schema), 0, 0, 1, 1},
  {&__pyx_n_s___setAccess, __pyx_k___setAccess, sizeof(__pyx_k___setAccess), 0, 0, 1, 1},
  {&__pyx_n_s___setError, __pyx_k___setError, sizeof(__pyx_k___setError), 0, 0, 1, 1},
  {&__pyx_n_s___setEventFilter, __pyx_k___setEventFilter, sizeof(__pyx_k___setEventFilter), 0, 0, 1, 1},
  {&__pyx_n_s___setFallback, __pyx_k___setFallback, sizeof(__pyx_k___setFallback), 0, 0, 1, 1},
  {&__pyx_n_s___setGeneric, __pyx_k___setGeneric, sizeof(__pyx_k___setGeneric), 0, 0, 1, 1},
  {&__pyx_n_s___setNodeNs, __pyx_k___setNodeNs, sizeof(__pyx_k___setNodeNs), 0, 0, 1, 1},
  {&__pyx_n_s___setSaxParserTarget, __pyx_k___setSaxParserTarget, sizeof(__pyx_k___setSaxParserTarget), 0, 0, 1, 1},
  {&__pyx_n_s___setTagFilter, __pyx_k___setTagFilter, sizeof(__pyx_k___setTagFilter), 0, 0, 1, 1},
  {&__pyx_n_s___setTarget, __pyx_k___setTarget, sizeof(__pyx_k___setTarget), 0, 0, 1, 1},
  {&__pyx_n_s___set_xpath_context, __pyx_k___set_xpath_context, sizeof(__pyx_k___set_xpath_context), 0, 0, 1, 1},
  {&__pyx_n_s___setroot, __pyx_k___setroot, sizeof(__pyx_k___setroot), 0, 0, 1, 1},
  {&__pyx_n_s___setupDict, __pyx_k___setupDict, sizeof(__pyx_k___setupDict), 0, 0, 1, 1},
  {&__pyx_n_s___source, __pyx_k___source, sizeof(__pyx_k___source), 0, 0, 1, 1},
  {&__pyx_n_s___source_proxy, __pyx_k___source_proxy, sizeof(__pyx_k___source_proxy), 0, 0, 1, 1},
  {&__pyx_n_s___start_element, __pyx_k___start_element, sizeof(__pyx_k___start_element), 0, 0, 1, 1},
  {&__pyx_n_s___start_node, __pyx_k___start_node, sizeof(__pyx_k___start_node), 0, 0, 1, 1},
  {&__pyx_n_s___start_takes_nsmap, __pyx_k___start_takes_nsmap, sizeof(__pyx_k___start_takes_nsmap), 0, 0, 1, 1},
  {&__pyx_n_s___storage, __pyx_k___storage, sizeof(__pyx_k___storage), 0, 0, 1, 1},
  {&__pyx_n_s___storeNext, __pyx_k___storeNext, sizeof(__pyx_k___storeNext), 0, 0, 1, 1},
  {&__pyx_n_s___store_exception, __pyx_k___store_exception, sizeof(__pyx_k___store_exception), 0, 0, 1, 1},
  {&__pyx_n_s___store_raised, __pyx_k___store_raised, sizeof(__pyx_k___store_raised), 0, 0, 1, 1},
  {&__pyx_n_s___strip_cdata, __pyx_k___strip_cdata, sizeof(__pyx_k___strip_cdata), 0, 0, 1, 1},
  {&__pyx_n_s___tag, __pyx_k___tag, sizeof(__pyx_k___tag), 0, 0, 1, 1},
  {&__pyx_n_s___tag_href, __pyx_k___tag_href, sizeof(__pyx_k___tag_href), 0, 0, 1, 1},
  {&__pyx_n_s___tag_name, __pyx_k___tag_name, sizeof(__pyx_k___tag_name), 0, 0, 1, 1},
  {&__pyx_n_s___tag_tuple, __pyx_k___tag_tuple, sizeof(__pyx_k___tag_tuple), 0, 0, 1, 1},
  {&__pyx_n_s___target, __pyx_k___target, sizeof(__pyx_k___target), 0, 0, 1, 1},
  {&__pyx_n_s___target_comment, __pyx_k___target_comment, sizeof(__pyx_k___target_comment), 0, 0, 1, 1},
  {&__pyx_n_s___target_data, __pyx_k___target_data, sizeof(__pyx_k___target_data), 0, 0, 1, 1},
  {&__pyx_n_s___target_doctype, __pyx_k___target_doctype, sizeof(__pyx_k___target_doctype), 0, 0, 1, 1},
  {&__pyx_n_s___target_end, __pyx_k___target_end, sizeof(__pyx_k___target_end), 0, 0, 1, 1},
  {&__pyx_n_s___target_pi, __pyx_k___target_pi, sizeof(__pyx_k___target_pi), 0, 0, 1, 1},
  {&__pyx_n_s___target_start, __pyx_k___target_start, sizeof(__pyx_k___target_start), 0, 0, 1, 1},
  {&__pyx_n_s___temp_documents, __pyx_k___temp_documents, sizeof(__pyx_k___temp_documents), 0, 0, 1, 1},
  {&__pyx_n_s___temp_refs, __pyx_k___temp_refs, sizeof(__pyx_k___temp_refs), 0, 0, 1, 1},
  {&__pyx_n_s___to_utf, __pyx_k___to_utf, sizeof(__pyx_k___to_utf), 0, 0, 1, 1},
  {&__pyx_n_s___top_node, __pyx_k___top_node, sizeof(__pyx_k___top_node), 0, 0, 1, 1},
  {&__pyx_n_s___type, __pyx_k___type, sizeof(__pyx_k___type), 0, 0, 1, 1},
  {&__pyx_n_s___unlock, __pyx_k___unlock, sizeof(__pyx_k___unlock), 0, 0, 1, 1},
  {&__pyx_n_s___url, __pyx_k___url, sizeof(__pyx_k___url), 0, 0, 1, 1},
  {&__pyx_n_s___utf8_data, __pyx_k___utf8_data, sizeof(__pyx_k___utf8_data), 0, 0, 1, 1},
  {&__pyx_n_s___utf_refs, __pyx_k___utf_refs, sizeof(__pyx_k___utf_refs), 0, 0, 1, 1},
  {&__pyx_n_s___valid_ctxt, __pyx_k___valid_ctxt, sizeof(__pyx_k___valid_ctxt), 0, 0, 1, 1},
  {&__pyx_n_s___validator, __pyx_k___validator, sizeof(__pyx_k___validator), 0, 0, 1, 1},
  {&__pyx_n_s___variables, __pyx_k___variables, sizeof(__pyx_k___variables), 0, 0, 1, 1},
  {&__pyx_n_s___xpath, __pyx_k___xpath, sizeof(__pyx_k___xpath), 0, 0, 1, 1},
  {&__pyx_n_s___xpathCtxt, __pyx_k___xpathCtxt, sizeof(__pyx_k___xpathCtxt), 0, 0, 1, 1},
  {&__pyx_n_s___xslt, __pyx_k___xslt, sizeof(__pyx_k___xslt), 0, 0, 1, 1},
  {&__pyx_n_s___xsltCtxt, __pyx_k___xsltCtxt, sizeof(__pyx_k___xsltCtxt), 0, 0, 1, 1},
  {&__pyx_n_s__abspath, __pyx_k__abspath, sizeof(__pyx_k__abspath), 0, 0, 1, 1},
  {&__pyx_n_s__access_control, __pyx_k__access_control, sizeof(__pyx_k__access_control), 0, 0, 1, 1},
  {&__pyx_n_s__add, __pyx_k__add, sizeof(__pyx_k__add), 0, 0, 1, 1},
  {&__pyx_n_s__addNamespace, __pyx_k__addNamespace, sizeof(__pyx_k__addNamespace), 0, 0, 1, 1},
  {&__pyx_n_s__addnext, __pyx_k__addnext, sizeof(__pyx_k__addnext), 0, 0, 1, 1},
  {&__pyx_n_s__addprevious, __pyx_k__addprevious, sizeof(__pyx_k__addprevious), 0, 0, 1, 1},
  {&__pyx_n_u__alpha, __pyx_k__alpha, sizeof(__pyx_k__alpha), 0, 1, 0, 1},
  {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1},
  {&__pyx_n_s__apply, __pyx_k__apply, sizeof(__pyx_k__apply), 0, 0, 1, 1},
  {&__pyx_n_s__apply_templates, __pyx_k__apply_templates, sizeof(__pyx_k__apply_templates), 0, 0, 1, 1},
  {&__pyx_n_s__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 0, 1, 1},
  {&__pyx_n_s__assertValid, __pyx_k__assertValid, sizeof(__pyx_k__assertValid), 0, 0, 1, 1},
  {&__pyx_n_s__assert_, __pyx_k__assert_, sizeof(__pyx_k__assert_), 0, 0, 1, 1},
  {&__pyx_n_s__attr, __pyx_k__attr, sizeof(__pyx_k__attr), 0, 0, 1, 1},
  {&__pyx_n_s__attrib, __pyx_k__attrib, sizeof(__pyx_k__attrib), 0, 0, 1, 1},
  {&__pyx_n_s__attribute_defaults, __pyx_k__attribute_defaults, sizeof(__pyx_k__attribute_defaults), 0, 0, 1, 1},
  {&__pyx_n_s__attribute_name, __pyx_k__attribute_name, sizeof(__pyx_k__attribute_name), 0, 0, 1, 1},
  {&__pyx_n_s__attributes, __pyx_k__attributes, sizeof(__pyx_k__attributes), 0, 0, 1, 1},
  {&__pyx_n_s__attrs, __pyx_k__attrs, sizeof(__pyx_k__attrs), 0, 0, 1, 1},
  {&__pyx_n_s__backslashreplace, __pyx_k__backslashreplace, sizeof(__pyx_k__backslashreplace), 0, 0, 1, 1},
  {&__pyx_n_s__base, __pyx_k__base, sizeof(__pyx_k__base), 0, 0, 1, 1},
  {&__pyx_n_s__base_url, __pyx_k__base_url, sizeof(__pyx_k__base_url), 0, 0, 1, 1},
  {&__pyx_n_u__beta, __pyx_k__beta, sizeof(__pyx_k__beta), 0, 1, 0, 1},
  {&__pyx_n_s__boolval, __pyx_k__boolval, sizeof(__pyx_k__boolval), 0, 0, 1, 1},
  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
  {&__pyx_n_s__buffer, __pyx_k__buffer, sizeof(__pyx_k__buffer), 0, 0, 1, 1},
  {&__pyx_n_s__buildNewPrefix, __pyx_k__buildNewPrefix, sizeof(__pyx_k__buildNewPrefix), 0, 0, 1, 1},
  {&__pyx_n_s__build_smart_strings, __pyx_k__build_smart_strings, sizeof(__pyx_k__build_smart_strings), 0, 0, 1, 1},
  {&__pyx_n_s__builtins, __pyx_k__builtins, sizeof(__pyx_k__builtins), 0, 0, 1, 1},
  {&__pyx_n_s__cdataBlock, __pyx_k__cdataBlock, sizeof(__pyx_k__cdataBlock), 0, 0, 1, 1},
  {&__pyx_n_s__characters, __pyx_k__characters, sizeof(__pyx_k__characters), 0, 0, 1, 1},
  {&__pyx_n_s__child, __pyx_k__child, sizeof(__pyx_k__child), 0, 0, 1, 1},
  {&__pyx_n_s__children, __pyx_k__children, sizeof(__pyx_k__children), 0, 0, 1, 1},
  {&__pyx_n_s__class_mapping, __pyx_k__class_mapping, sizeof(__pyx_k__class_mapping), 0, 0, 1, 1},
  {&__pyx_n_s__cleanup, __pyx_k__cleanup, sizeof(__pyx_k__cleanup), 0, 0, 1, 1},
  {&__pyx_n_s__cleanup_namespaces, __pyx_k__cleanup_namespaces, sizeof(__pyx_k__cleanup_namespaces), 0, 0, 1, 1},
  {&__pyx_n_s__clear, __pyx_k__clear, sizeof(__pyx_k__clear), 0, 0, 1, 1},
  {&__pyx_n_s__clear_error_log, __pyx_k__clear_error_log, sizeof(__pyx_k__clear_error_log), 0, 0, 1, 1},
  {&__pyx_n_s__close, __pyx_k__close, sizeof(__pyx_k__close), 0, 0, 1, 1},
  {&__pyx_n_s__code, __pyx_k__code, sizeof(__pyx_k__code), 0, 0, 1, 1},
  {&__pyx_n_s__column, __pyx_k__column, sizeof(__pyx_k__column), 0, 0, 1, 1},
  {&__pyx_n_s__comment, __pyx_k__comment, sizeof(__pyx_k__comment), 0, 0, 1, 1},
  {&__pyx_n_u__comment, __pyx_k__comment, sizeof(__pyx_k__comment), 0, 1, 0, 1},
  {&__pyx_n_s__comment_class, __pyx_k__comment_class, sizeof(__pyx_k__comment_class), 0, 0, 1, 1},
  {&__pyx_n_s__compact, __pyx_k__compact, sizeof(__pyx_k__compact), 0, 0, 1, 1},
  {&__pyx_n_s__compile, __pyx_k__compile, sizeof(__pyx_k__compile), 0, 0, 1, 1},
  {&__pyx_n_s__compression, __pyx_k__compression, sizeof(__pyx_k__compression), 0, 0, 1, 1},
  {&__pyx_n_s__compresslevel, __pyx_k__compresslevel, sizeof(__pyx_k__compresslevel), 0, 0, 1, 1},
  {&__pyx_n_s__connect, __pyx_k__connect, sizeof(__pyx_k__connect), 0, 0, 1, 1},
  {&__pyx_n_s__content, __pyx_k__content, sizeof(__pyx_k__content), 0, 0, 1, 1},
  {&__pyx_n_s__context, __pyx_k__context, sizeof(__pyx_k__context), 0, 0, 1, 1},
  {&__pyx_n_s__conv, __pyx_k__conv, sizeof(__pyx_k__conv), 0, 0, 1, 1},
  {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1},
  {&__pyx_n_s__copyToBuffer, __pyx_k__copyToBuffer, sizeof(__pyx_k__copyToBuffer), 0, 0, 1, 1},
  {&__pyx_n_s__create_dir, __pyx_k__create_dir, sizeof(__pyx_k__create_dir), 0, 0, 1, 1},
  {&__pyx_n_u__create_dir, __pyx_k__create_dir, sizeof(__pyx_k__create_dir), 0, 1, 0, 1},
  {&__pyx_n_s__ctxt, __pyx_k__ctxt, sizeof(__pyx_k__ctxt), 0, 0, 1, 1},
  {&__pyx_n_s__cur, __pyx_k__cur, sizeof(__pyx_k__cur), 0, 0, 1, 1},
  {&__pyx_n_s__data, __pyx_k__data, sizeof(__pyx_k__data), 0, 0, 1, 1},
  {&__pyx_n_s__dc, __pyx_k__dc, sizeof(__pyx_k__dc), 0, 0, 1, 1},
  {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
  {&__pyx_n_s__default, __pyx_k__default, sizeof(__pyx_k__default), 0, 0, 1, 1},
  {&__pyx_n_s__default_resolver, __pyx_k__default_resolver, sizeof(__pyx_k__default_resolver), 0, 0, 1, 1},
  {&__pyx_n_u__dev, __pyx_k__dev, sizeof(__pyx_k__dev), 0, 1, 0, 1},
  {&__pyx_n_s__dict, __pyx_k__dict, sizeof(__pyx_k__dict), 0, 0, 1, 1},
  {&__pyx_n_s__disableSAX, __pyx_k__disableSAX, sizeof(__pyx_k__disableSAX), 0, 0, 1, 1},
  {&__pyx_n_s__discard, __pyx_k__discard, sizeof(__pyx_k__discard), 0, 0, 1, 1},
  {&__pyx_n_s__disconnect, __pyx_k__disconnect, sizeof(__pyx_k__disconnect), 0, 0, 1, 1},
  {&__pyx_n_s__doc, __pyx_k__doc, sizeof(__pyx_k__doc), 0, 0, 1, 1},
  {&__pyx_n_s__doctype, __pyx_k__doctype, sizeof(__pyx_k__doctype), 0, 0, 1, 1},
  {&__pyx_n_s__domain, __pyx_k__domain, sizeof(__pyx_k__domain), 0, 0, 1, 1},
  {&__pyx_n_s__domain_name, __pyx_k__domain_name, sizeof(__pyx_k__domain_name), 0, 0, 1, 1},
  {&__pyx_n_s__domains, __pyx_k__domains, sizeof(__pyx_k__domains), 0, 0, 1, 1},
  {&__pyx_n_s__dtd_validation, __pyx_k__dtd_validation, sizeof(__pyx_k__dtd_validation), 0, 0, 1, 1},
  {&__pyx_n_s__dump, __pyx_k__dump, sizeof(__pyx_k__dump), 0, 0, 1, 1},
  {&__pyx_n_s__elem, __pyx_k__elem, sizeof(__pyx_k__elem), 0, 0, 1, 1},
  {&__pyx_n_s__element, __pyx_k__element, sizeof(__pyx_k__element), 0, 0, 1, 1},
  {&__pyx_n_u__element, __pyx_k__element, sizeof(__pyx_k__element), 0, 1, 0, 1},
  {&__pyx_n_s__element_class, __pyx_k__element_class, sizeof(__pyx_k__element_class), 0, 0, 1, 1},
  {&__pyx_n_s__element_factory, __pyx_k__element_factory, sizeof(__pyx_k__element_factory), 0, 0, 1, 1},
  {&__pyx_n_s__element_or_tree, __pyx_k__element_or_tree, sizeof(__pyx_k__element_or_tree), 0, 0, 1, 1},
  {&__pyx_n_s__elements, __pyx_k__elements, sizeof(__pyx_k__elements), 0, 0, 1, 1},
  {&__pyx_n_s__enable_regexp, __pyx_k__enable_regexp, sizeof(__pyx_k__enable_regexp), 0, 0, 1, 1},
  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
  {&__pyx_n_s__encoding, __pyx_k__encoding, sizeof(__pyx_k__encoding), 0, 0, 1, 1},
  {&__pyx_n_s__end, __pyx_k__end, sizeof(__pyx_k__end), 0, 0, 1, 1},
  {&__pyx_n_u__end, __pyx_k__end, sizeof(__pyx_k__end), 0, 1, 0, 1},
  {&__pyx_n_s__endElement, __pyx_k__endElement, sizeof(__pyx_k__endElement), 0, 0, 1, 1},
  {&__pyx_n_s__endElementNs, __pyx_k__endElementNs, sizeof(__pyx_k__endElementNs), 0, 0, 1, 1},
  {&__pyx_n_s__endNode, __pyx_k__endNode, sizeof(__pyx_k__endNode), 0, 0, 1, 1},
  {&__pyx_n_s__entities, __pyx_k__entities, sizeof(__pyx_k__entities), 0, 0, 1, 1},
  {&__pyx_n_s__entity, __pyx_k__entity, sizeof(__pyx_k__entity), 0, 0, 1, 1},
  {&__pyx_n_u__entity, __pyx_k__entity, sizeof(__pyx_k__entity), 0, 1, 0, 1},
  {&__pyx_n_s__entity_class, __pyx_k__entity_class, sizeof(__pyx_k__entity_class), 0, 0, 1, 1},
  {&__pyx_n_s__entries, __pyx_k__entries, sizeof(__pyx_k__entries), 0, 0, 1, 1},
  {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1},
  {&__pyx_n_s__errNo, __pyx_k__errNo, sizeof(__pyx_k__errNo), 0, 0, 1, 1},
  {&__pyx_n_s__error, __pyx_k__error, sizeof(__pyx_k__error), 0, 0, 1, 1},
  {&__pyx_n_s__error_log, __pyx_k__error_log, sizeof(__pyx_k__error_log), 0, 0, 1, 1},
  {&__pyx_n_s__etree, __pyx_k__etree, sizeof(__pyx_k__etree), 0, 0, 1, 1},
  {&__pyx_n_s__etree_or_element, __pyx_k__etree_or_element, sizeof(__pyx_k__etree_or_element), 0, 0, 1, 1},
  {&__pyx_n_s__evaluate, __pyx_k__evaluate, sizeof(__pyx_k__evaluate), 0, 0, 1, 1},
  {&__pyx_n_s__events, __pyx_k__events, sizeof(__pyx_k__events), 0, 0, 1, 1},
  {&__pyx_n_s__exc_context, __pyx_k__exc_context, sizeof(__pyx_k__exc_context), 0, 0, 1, 1},
  {&__pyx_n_s__exc_info, __pyx_k__exc_info, sizeof(__pyx_k__exc_info), 0, 0, 1, 1},
  {&__pyx_n_s__exclusive, __pyx_k__exclusive, sizeof(__pyx_k__exclusive), 0, 0, 1, 1},
  {&__pyx_n_s__execute, __pyx_k__execute, sizeof(__pyx_k__execute), 0, 0, 1, 1},
  {&__pyx_n_s__extSubset, __pyx_k__extSubset, sizeof(__pyx_k__extSubset), 0, 0, 1, 1},
  {&__pyx_n_s__extend, __pyx_k__extend, sizeof(__pyx_k__extend), 0, 0, 1, 1},
  {&__pyx_n_s__extensions, __pyx_k__extensions, sizeof(__pyx_k__extensions), 0, 0, 1, 1},
  {&__pyx_n_s__external_id, __pyx_k__external_id, sizeof(__pyx_k__external_id), 0, 0, 1, 1},
  {&__pyx_n_s__f, __pyx_k__f, sizeof(__pyx_k__f), 0, 0, 1, 1},
  {&__pyx_n_s__fallback, __pyx_k__fallback, sizeof(__pyx_k__fallback), 0, 0, 1, 1},
  {&__pyx_n_s__feed, __pyx_k__feed, sizeof(__pyx_k__feed), 0, 0, 1, 1},
  {&__pyx_n_s__file, __pyx_k__file, sizeof(__pyx_k__file), 0, 0, 1, 1},
  {&__pyx_n_s__filelike, __pyx_k__filelike, sizeof(__pyx_k__filelike), 0, 0, 1, 1},
  {&__pyx_n_s__filename, __pyx_k__filename, sizeof(__pyx_k__filename), 0, 0, 1, 1},
  {&__pyx_n_u__filename, __pyx_k__filename, sizeof(__pyx_k__filename), 0, 1, 0, 1},
  {&__pyx_n_s__fileobj, __pyx_k__fileobj, sizeof(__pyx_k__fileobj), 0, 0, 1, 1},
  {&__pyx_n_s__filter_domains, __pyx_k__filter_domains, sizeof(__pyx_k__filter_domains), 0, 0, 1, 1},
  {&__pyx_n_s__filter_from_errors, __pyx_k__filter_from_errors, sizeof(__pyx_k__filter_from_errors), 0, 0, 1, 1},
  {&__pyx_n_s__filter_from_fatals, __pyx_k__filter_from_fatals, sizeof(__pyx_k__filter_from_fatals), 0, 0, 1, 1},
  {&__pyx_n_s__filter_from_level, __pyx_k__filter_from_level, sizeof(__pyx_k__filter_from_level), 0, 0, 1, 1},
  {&__pyx_n_s__filter_levels, __pyx_k__filter_levels, sizeof(__pyx_k__filter_levels), 0, 0, 1, 1},
  {&__pyx_n_s__filter_types, __pyx_k__filter_types, sizeof(__pyx_k__filter_types), 0, 0, 1, 1},
  {&__pyx_n_s__find, __pyx_k__find, sizeof(__pyx_k__find), 0, 0, 1, 1},
  {&__pyx_n_s__findImpliedContext, __pyx_k__findImpliedContext, sizeof(__pyx_k__findImpliedContext), 0, 0, 1, 1},
  {&__pyx_n_s__findall, __pyx_k__findall, sizeof(__pyx_k__findall), 0, 0, 1, 1},
  {&__pyx_n_s__findtext, __pyx_k__findtext, sizeof(__pyx_k__findtext), 0, 0, 1, 1},
  {&__pyx_n_s__first_error, __pyx_k__first_error, sizeof(__pyx_k__first_error), 0, 0, 1, 1},
  {&__pyx_n_s__flags, __pyx_k__flags, sizeof(__pyx_k__flags), 0, 0, 1, 1},
  {&__pyx_n_s__floatval, __pyx_k__floatval, sizeof(__pyx_k__floatval), 0, 0, 1, 1},
  {&__pyx_n_s__for_html, __pyx_k__for_html, sizeof(__pyx_k__for_html), 0, 0, 1, 1},
  {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
  {&__pyx_n_s__free_after_use, __pyx_k__free_after_use, sizeof(__pyx_k__free_after_use), 0, 0, 1, 1},
  {&__pyx_n_s__free_context, __pyx_k__free_context, sizeof(__pyx_k__free_context), 0, 0, 1, 1},
  {&__pyx_n_s__fromstring, __pyx_k__fromstring, sizeof(__pyx_k__fromstring), 0, 0, 1, 1},
  {&__pyx_n_s__fromstringlist, __pyx_k__fromstringlist, sizeof(__pyx_k__fromstringlist), 0, 0, 1, 1},
  {&__pyx_n_s__function, __pyx_k__function, sizeof(__pyx_k__function), 0, 0, 1, 1},
  {&__pyx_n_s__functionURI, __pyx_k__functionURI, sizeof(__pyx_k__functionURI), 0, 0, 1, 1},
  {&__pyx_n_s__function_mapping, __pyx_k__function_mapping, sizeof(__pyx_k__function_mapping), 0, 0, 1, 1},
  {&__pyx_n_u__g, __pyx_k__g, sizeof(__pyx_k__g), 0, 1, 0, 1},
  {&__pyx_n_s__get, __pyx_k__get, sizeof(__pyx_k__get), 0, 0, 1, 1},
  {&__pyx_n_s__getDefaultParser, __pyx_k__getDefaultParser, sizeof(__pyx_k__getDefaultParser), 0, 0, 1, 1},
  {&__pyx_n_s__getLogger, __pyx_k__getLogger, sizeof(__pyx_k__getLogger), 0, 0, 1, 1},
  {&__pyx_n_s__get_default_parser, __pyx_k__get_default_parser, sizeof(__pyx_k__get_default_parser), 0, 0, 1, 1},
  {&__pyx_n_s__get_namespace, __pyx_k__get_namespace, sizeof(__pyx_k__get_namespace), 0, 0, 1, 1},
  {&__pyx_n_s__getargspec, __pyx_k__getargspec, sizeof(__pyx_k__getargspec), 0, 0, 1, 1},
  {&__pyx_n_s__getattr, __pyx_k__getattr, sizeof(__pyx_k__getattr), 0, 0, 1, 1},
  {&__pyx_n_s__getchildren, __pyx_k__getchildren, sizeof(__pyx_k__getchildren), 0, 0, 1, 1},
  {&__pyx_n_s__getdefaultencoding, __pyx_k__getdefaultencoding, sizeof(__pyx_k__getdefaultencoding), 0, 0, 1, 1},
  {&__pyx_n_s__getdoctype, __pyx_k__getdoctype, sizeof(__pyx_k__getdoctype), 0, 0, 1, 1},
  {&__pyx_n_s__getiterator, __pyx_k__getiterator, sizeof(__pyx_k__getiterator), 0, 0, 1, 1},
  {&__pyx_n_s__getnext, __pyx_k__getnext, sizeof(__pyx_k__getnext), 0, 0, 1, 1},
  {&__pyx_n_s__getparent, __pyx_k__getparent, sizeof(__pyx_k__getparent), 0, 0, 1, 1},
  {&__pyx_n_s__getpath, __pyx_k__getpath, sizeof(__pyx_k__getpath), 0, 0, 1, 1},
  {&__pyx_n_s__getprevious, __pyx_k__getprevious, sizeof(__pyx_k__getprevious), 0, 0, 1, 1},
  {&__pyx_n_s__getroot, __pyx_k__getroot, sizeof(__pyx_k__getroot), 0, 0, 1, 1},
  {&__pyx_n_s__getroottree, __pyx_k__getroottree, sizeof(__pyx_k__getroottree), 0, 0, 1, 1},
  {&__pyx_n_u__geturl, __pyx_k__geturl, sizeof(__pyx_k__geturl), 0, 1, 0, 1},
  {&__pyx_n_s__getvalue, __pyx_k__getvalue, sizeof(__pyx_k__getvalue), 0, 0, 1, 1},
  {&__pyx_n_u__getvalue, __pyx_k__getvalue, sizeof(__pyx_k__getvalue), 0, 1, 0, 1},
  {&__pyx_n_s__getxmlinfo, __pyx_k__getxmlinfo, sizeof(__pyx_k__getxmlinfo), 0, 0, 1, 1},
  {&__pyx_n_s__group, __pyx_k__group, sizeof(__pyx_k__group), 0, 0, 1, 1},
  {&__pyx_n_s__groups, __pyx_k__groups, sizeof(__pyx_k__groups), 0, 0, 1, 1},
  {&__pyx_n_s__gzip, __pyx_k__gzip, sizeof(__pyx_k__gzip), 0, 0, 1, 1},
  {&__pyx_n_s__hasdoctype, __pyx_k__hasdoctype, sizeof(__pyx_k__hasdoctype), 0, 0, 1, 1},
  {&__pyx_n_s__href, __pyx_k__href, sizeof(__pyx_k__href), 0, 0, 1, 1},
  {&__pyx_n_u__href, __pyx_k__href, sizeof(__pyx_k__href), 0, 1, 0, 1},
  {&__pyx_n_s__html, __pyx_k__html, sizeof(__pyx_k__html), 0, 0, 1, 1},
  {&__pyx_n_u__html, __pyx_k__html, sizeof(__pyx_k__html), 0, 1, 0, 1},
  {&__pyx_n_s__huge_tree, __pyx_k__huge_tree, sizeof(__pyx_k__huge_tree), 0, 0, 1, 1},
  {&__pyx_n_u__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 1, 0, 1},
  {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
  {&__pyx_n_u__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 1, 0, 1},
  {&__pyx_n_s__ids, __pyx_k__ids, sizeof(__pyx_k__ids), 0, 0, 1, 1},
  {&__pyx_n_s__inSubset, __pyx_k__inSubset, sizeof(__pyx_k__inSubset), 0, 0, 1, 1},
  {&__pyx_n_s__inclusive, __pyx_k__inclusive, sizeof(__pyx_k__inclusive), 0, 0, 1, 1},
  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
  {&__pyx_n_s__initDocDict, __pyx_k__initDocDict, sizeof(__pyx_k__initDocDict), 0, 0, 1, 1},
  {&__pyx_n_s__initParserDict, __pyx_k__initParserDict, sizeof(__pyx_k__initParserDict), 0, 0, 1, 1},
  {&__pyx_n_s__initThreadDictRef, __pyx_k__initThreadDictRef, sizeof(__pyx_k__initThreadDictRef), 0, 0, 1, 1},
  {&__pyx_n_s__initXPathParserDict, __pyx_k__initXPathParserDict, sizeof(__pyx_k__initXPathParserDict), 0, 0, 1, 1},
  {&__pyx_n_s__initialized, __pyx_k__initialized, sizeof(__pyx_k__initialized), 0, 0, 1, 1},
  {&__pyx_n_s__input, __pyx_k__input, sizeof(__pyx_k__input), 0, 0, 1, 1},
  {&__pyx_n_s__input_node, __pyx_k__input_node, sizeof(__pyx_k__input_node), 0, 0, 1, 1},
  {&__pyx_n_s__insert, __pyx_k__insert, sizeof(__pyx_k__insert), 0, 0, 1, 1},
  {&__pyx_n_s__inspect, __pyx_k__inspect, sizeof(__pyx_k__inspect), 0, 0, 1, 1},
  {&__pyx_n_s__int2, __pyx_k__int2, sizeof(__pyx_k__int2), 0, 0, 1, 1},
  {&__pyx_n_s__intSubset, __pyx_k__intSubset, sizeof(__pyx_k__intSubset), 0, 0, 1, 1},
  {&__pyx_n_s__internal, __pyx_k__internal, sizeof(__pyx_k__internal), 0, 0, 1, 1},
  {&__pyx_n_s__internalSubset, __pyx_k__internalSubset, sizeof(__pyx_k__internalSubset), 0, 0, 1, 1},
  {&__pyx_n_s__io, __pyx_k__io, sizeof(__pyx_k__io), 0, 0, 1, 1},
  {&__pyx_n_s__is_attribute, __pyx_k__is_attribute, sizeof(__pyx_k__is_attribute), 0, 0, 1, 1},
  {&__pyx_n_s__is_tail, __pyx_k__is_tail, sizeof(__pyx_k__is_tail), 0, 0, 1, 1},
  {&__pyx_n_s__is_text, __pyx_k__is_text, sizeof(__pyx_k__is_text), 0, 0, 1, 1},
  {&__pyx_n_s__iselement, __pyx_k__iselement, sizeof(__pyx_k__iselement), 0, 0, 1, 1},
  {&__pyx_n_s__isstandalone, __pyx_k__isstandalone, sizeof(__pyx_k__isstandalone), 0, 0, 1, 1},
  {&__pyx_n_s__isvalid, __pyx_k__isvalid, sizeof(__pyx_k__isvalid), 0, 0, 1, 1},
  {&__pyx_n_s__items, __pyx_k__items, sizeof(__pyx_k__items), 0, 0, 1, 1},
  {&__pyx_n_u__items, __pyx_k__items, sizeof(__pyx_k__items), 0, 1, 0, 1},
  {&__pyx_n_s__itemsize, __pyx_k__itemsize, sizeof(__pyx_k__itemsize), 0, 0, 1, 1},
  {&__pyx_n_s__iter, __pyx_k__iter, sizeof(__pyx_k__iter), 0, 0, 1, 1},
  {&__pyx_n_s__iterancestors, __pyx_k__iterancestors, sizeof(__pyx_k__iterancestors), 0, 0, 1, 1},
  {&__pyx_n_s__iterchildren, __pyx_k__iterchildren, sizeof(__pyx_k__iterchildren), 0, 0, 1, 1},
  {&__pyx_n_s__iterdescendants, __pyx_k__iterdescendants, sizeof(__pyx_k__iterdescendants), 0, 0, 1, 1},
  {&__pyx_n_s__iterfind, __pyx_k__iterfind, sizeof(__pyx_k__iterfind), 0, 0, 1, 1},
  {&__pyx_n_s__iteritems, __pyx_k__iteritems, sizeof(__pyx_k__iteritems), 0, 0, 1, 1},
  {&__pyx_n_s__itersiblings, __pyx_k__itersiblings, sizeof(__pyx_k__itersiblings), 0, 0, 1, 1},
  {&__pyx_n_s__itertext, __pyx_k__itertext, sizeof(__pyx_k__itertext), 0, 0, 1, 1},
  {&__pyx_n_s__join, __pyx_k__join, sizeof(__pyx_k__join), 0, 0, 1, 1},
  {&__pyx_n_s__key, __pyx_k__key, sizeof(__pyx_k__key), 0, 0, 1, 1},
  {&__pyx_n_s__keys, __pyx_k__keys, sizeof(__pyx_k__keys), 0, 0, 1, 1},
  {&__pyx_n_s__last, __pyx_k__last, sizeof(__pyx_k__last), 0, 0, 1, 1},
  {&__pyx_n_s__lastError, __pyx_k__lastError, sizeof(__pyx_k__lastError), 0, 0, 1, 1},
  {&__pyx_n_s__last_error, __pyx_k__last_error, sizeof(__pyx_k__last_error), 0, 0, 1, 1},
  {&__pyx_n_s__len, __pyx_k__len, sizeof(__pyx_k__len), 0, 0, 1, 1},
  {&__pyx_n_s__length, __pyx_k__length, sizeof(__pyx_k__length), 0, 0, 1, 1},
  {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1},
  {&__pyx_n_s__level_map, __pyx_k__level_map, sizeof(__pyx_k__level_map), 0, 0, 1, 1},
  {&__pyx_n_s__level_name, __pyx_k__level_name, sizeof(__pyx_k__level_name), 0, 0, 1, 1},
  {&__pyx_n_s__line, __pyx_k__line, sizeof(__pyx_k__line), 0, 0, 1, 1},
  {&__pyx_n_s__load_dtd, __pyx_k__load_dtd, sizeof(__pyx_k__load_dtd), 0, 0, 1, 1},
  {&__pyx_n_s__loadsubset, __pyx_k__loadsubset, sizeof(__pyx_k__loadsubset), 0, 0, 1, 1},
  {&__pyx_n_s__localname, __pyx_k__localname, sizeof(__pyx_k__localname), 0, 0, 1, 1},
  {&__pyx_n_s__log, __pyx_k__log, sizeof(__pyx_k__log), 0, 0, 1, 1},
  {&__pyx_n_s__log_entry, __pyx_k__log_entry, sizeof(__pyx_k__log_entry), 0, 0, 1, 1},
  {&__pyx_n_s__logger_name, __pyx_k__logger_name, sizeof(__pyx_k__logger_name), 0, 0, 1, 1},
  {&__pyx_n_s__logging, __pyx_k__logging, sizeof(__pyx_k__logging), 0, 0, 1, 1},
  {&__pyx_n_s__lookup, __pyx_k__lookup, sizeof(__pyx_k__lookup), 0, 0, 1, 1},
  {&__pyx_n_s__lower, __pyx_k__lower, sizeof(__pyx_k__lower), 0, 0, 1, 1},
  {&__pyx_n_s__makeelement, __pyx_k__makeelement, sizeof(__pyx_k__makeelement), 0, 0, 1, 1},
  {&__pyx_n_b__match, __pyx_k__match, sizeof(__pyx_k__match), 0, 0, 0, 1},
  {&__pyx_n_s__match, __pyx_k__match, sizeof(__pyx_k__match), 0, 0, 1, 1},
  {&__pyx_n_u__match, __pyx_k__match, sizeof(__pyx_k__match), 0, 1, 0, 1},
  {&__pyx_n_u__matches, __pyx_k__matches, sizeof(__pyx_k__matches), 0, 1, 0, 1},
  {&__pyx_n_s__max_len, __pyx_k__max_len, sizeof(__pyx_k__max_len), 0, 0, 1, 1},
  {&__pyx_n_s__message, __pyx_k__message, sizeof(__pyx_k__message), 0, 0, 1, 1},
  {&__pyx_n_s__method, __pyx_k__method, sizeof(__pyx_k__method), 0, 0, 1, 1},
  {&__pyx_n_s__mode, __pyx_k__mode, sizeof(__pyx_k__mode), 0, 0, 1, 1},
  {&__pyx_n_s__module, __pyx_k__module, sizeof(__pyx_k__module), 0, 0, 1, 1},
  {&__pyx_n_s__myDoc, __pyx_k__myDoc, sizeof(__pyx_k__myDoc), 0, 0, 1, 1},
  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
  {&__pyx_n_u__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 1, 0, 1},
  {&__pyx_n_s__namespace, __pyx_k__namespace, sizeof(__pyx_k__namespace), 0, 0, 1, 1},
  {&__pyx_n_s__namespaces, __pyx_k__namespaces, sizeof(__pyx_k__namespaces), 0, 0, 1, 1},
  {&__pyx_n_s__ndim, __pyx_k__ndim, sizeof(__pyx_k__ndim), 0, 0, 1, 1},
  {&__pyx_n_s__new, __pyx_k__new, sizeof(__pyx_k__new), 0, 0, 1, 1},
  {&__pyx_n_s__new_element, __pyx_k__new_element, sizeof(__pyx_k__new_element), 0, 0, 1, 1},
  {&__pyx_n_s__next, __pyx_k__next, sizeof(__pyx_k__next), 0, 0, 1, 1},
  {&__pyx_n_s__no_network, __pyx_k__no_network, sizeof(__pyx_k__no_network), 0, 0, 1, 1},
  {&__pyx_n_s__node, __pyx_k__node, sizeof(__pyx_k__node), 0, 0, 1, 1},
  {&__pyx_n_s__nodeNr, __pyx_k__nodeNr, sizeof(__pyx_k__nodeNr), 0, 0, 1, 1},
  {&__pyx_n_s__nodeTab, __pyx_k__nodeTab, sizeof(__pyx_k__nodeTab), 0, 0, 1, 1},
  {&__pyx_n_s__nodesetval, __pyx_k__nodesetval, sizeof(__pyx_k__nodesetval), 0, 0, 1, 1},
  {&__pyx_n_s__notations, __pyx_k__notations, sizeof(__pyx_k__notations), 0, 0, 1, 1},
  {&__pyx_n_s__ns, __pyx_k__ns, sizeof(__pyx_k__ns), 0, 0, 1, 1},
  {&__pyx_n_s__nsDef, __pyx_k__nsDef, sizeof(__pyx_k__nsDef), 0, 0, 1, 1},
  {&__pyx_n_s__ns_clean, __pyx_k__ns_clean, sizeof(__pyx_k__ns_clean), 0, 0, 1, 1},
  {&__pyx_n_s__ns_uri, __pyx_k__ns_uri, sizeof(__pyx_k__ns_uri), 0, 0, 1, 1},
  {&__pyx_n_s__nsmap, __pyx_k__nsmap, sizeof(__pyx_k__nsmap), 0, 0, 1, 1},
  {&__pyx_n_s__object, __pyx_k__object, sizeof(__pyx_k__object), 0, 0, 1, 1},
  {&__pyx_n_s__old, __pyx_k__old, sizeof(__pyx_k__old), 0, 0, 1, 1},
  {&__pyx_n_s__old_element, __pyx_k__old_element, sizeof(__pyx_k__old_element), 0, 0, 1, 1},
  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
  {&__pyx_n_s__options, __pyx_k__options, sizeof(__pyx_k__options), 0, 0, 1, 1},
  {&__pyx_n_s__output, __pyx_k__output, sizeof(__pyx_k__output), 0, 0, 1, 1},
  {&__pyx_n_s__output_parent, __pyx_k__output_parent, sizeof(__pyx_k__output_parent), 0, 0, 1, 1},
  {&__pyx_n_s__parent, __pyx_k__parent, sizeof(__pyx_k__parent), 0, 0, 1, 1},
  {&__pyx_n_s__parse, __pyx_k__parse, sizeof(__pyx_k__parse), 0, 0, 1, 1},
  {&__pyx_n_s__parseXSL, __pyx_k__parseXSL, sizeof(__pyx_k__parseXSL), 0, 0, 1, 1},
  {&__pyx_n_s__parse_options, __pyx_k__parse_options, sizeof(__pyx_k__parse_options), 0, 0, 1, 1},
  {&__pyx_n_s__parseid, __pyx_k__parseid, sizeof(__pyx_k__parseid), 0, 0, 1, 1},
  {&__pyx_n_s__parser, __pyx_k__parser, sizeof(__pyx_k__parser), 0, 0, 1, 1},
  {&__pyx_n_s__path, __pyx_k__path, sizeof(__pyx_k__path), 0, 0, 1, 1},
  {&__pyx_n_s__pentities, __pyx_k__pentities, sizeof(__pyx_k__pentities), 0, 0, 1, 1},
  {&__pyx_n_s__pi, __pyx_k__pi, sizeof(__pyx_k__pi), 0, 0, 1, 1},
  {&__pyx_n_u__pi, __pyx_k__pi, sizeof(__pyx_k__pi), 0, 1, 0, 1},
  {&__pyx_n_s__pi_class, __pyx_k__pi_class, sizeof(__pyx_k__pi_class), 0, 0, 1, 1},
  {&__pyx_n_s__pop, __pyx_k__pop, sizeof(__pyx_k__pop), 0, 0, 1, 1},
  {&__pyx_n_s__popImpliedContext, __pyx_k__popImpliedContext, sizeof(__pyx_k__popImpliedContext), 0, 0, 1, 1},
  {&__pyx_n_s__position, __pyx_k__position, sizeof(__pyx_k__position), 0, 0, 1, 1},
  {&__pyx_n_s__preceding, __pyx_k__preceding, sizeof(__pyx_k__preceding), 0, 0, 1, 1},
  {&__pyx_n_s__prefix, __pyx_k__prefix, sizeof(__pyx_k__prefix), 0, 0, 1, 1},
  {&__pyx_n_s__prepare, __pyx_k__prepare, sizeof(__pyx_k__prepare), 0, 0, 1, 1},
  {&__pyx_n_s__pretty_print, __pyx_k__pretty_print, sizeof(__pyx_k__pretty_print), 0, 0, 1, 1},
  {&__pyx_n_s__prev, __pyx_k__prev, sizeof(__pyx_k__prev), 0, 0, 1, 1},
  {&__pyx_n_s__profile, __pyx_k__profile, sizeof(__pyx_k__profile), 0, 0, 1, 1},
  {&__pyx_n_s__profile_run, __pyx_k__profile_run, sizeof(__pyx_k__profile_run), 0, 0, 1, 1},
  {&__pyx_n_s__progressive, __pyx_k__progressive, sizeof(__pyx_k__progressive), 0, 0, 1, 1},
  {&__pyx_n_s__properties, __pyx_k__properties, sizeof(__pyx_k__properties), 0, 0, 1, 1},
  {&__pyx_n_s__public_id, __pyx_k__public_id, sizeof(__pyx_k__public_id), 0, 0, 1, 1},
  {&__pyx_n_s__pushEvent, __pyx_k__pushEvent, sizeof(__pyx_k__pushEvent), 0, 0, 1, 1},
  {&__pyx_n_s__pushImpliedContext, __pyx_k__pushImpliedContext, sizeof(__pyx_k__pushImpliedContext), 0, 0, 1, 1},
  {&__pyx_n_s__py, __pyx_k__py, sizeof(__pyx_k__py), 0, 0, 1, 1},
  {&__pyx_n_s__python, __pyx_k__python, sizeof(__pyx_k__python), 0, 0, 1, 1},
  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
  {&__pyx_n_u__rb, __pyx_k__rb, sizeof(__pyx_k__rb), 0, 1, 0, 1},
  {&__pyx_n_s__rdf, __pyx_k__rdf, sizeof(__pyx_k__rdf), 0, 0, 1, 1},
  {&__pyx_n_s__re, __pyx_k__re, sizeof(__pyx_k__re), 0, 0, 1, 1},
  {&__pyx_n_s__read, __pyx_k__read, sizeof(__pyx_k__read), 0, 0, 1, 1},
  {&__pyx_n_u__read, __pyx_k__read, sizeof(__pyx_k__read), 0, 1, 0, 1},
  {&__pyx_n_s__read_file, __pyx_k__read_file, sizeof(__pyx_k__read_file), 0, 0, 1, 1},
  {&__pyx_n_u__read_file, __pyx_k__read_file, sizeof(__pyx_k__read_file), 0, 1, 0, 1},
  {&__pyx_n_s__read_network, __pyx_k__read_network, sizeof(__pyx_k__read_network), 0, 0, 1, 1},
  {&__pyx_n_u__read_network, __pyx_k__read_network, sizeof(__pyx_k__read_network), 0, 1, 0, 1},
  {&__pyx_n_s__readcallback, __pyx_k__readcallback, sizeof(__pyx_k__readcallback), 0, 0, 1, 1},
  {&__pyx_n_s__readonly, __pyx_k__readonly, sizeof(__pyx_k__readonly), 0, 0, 1, 1},
  {&__pyx_n_s__receive, __pyx_k__receive, sizeof(__pyx_k__receive), 0, 0, 1, 1},
  {&__pyx_n_s__recover, __pyx_k__recover, sizeof(__pyx_k__recover), 0, 0, 1, 1},
  {&__pyx_n_s__reference, __pyx_k__reference, sizeof(__pyx_k__reference), 0, 0, 1, 1},
  {&__pyx_n_s__regexp, __pyx_k__regexp, sizeof(__pyx_k__regexp), 0, 0, 1, 1},
  {&__pyx_n_s__registerVariables, __pyx_k__registerVariables, sizeof(__pyx_k__registerVariables), 0, 0, 1, 1},
  {&__pyx_n_s__register_context, __pyx_k__register_context, sizeof(__pyx_k__register_context), 0, 0, 1, 1},
  {&__pyx_n_s__register_namespace, __pyx_k__register_namespace, sizeof(__pyx_k__register_namespace), 0, 0, 1, 1},
  {&__pyx_n_s__register_namespaces, __pyx_k__register_namespaces, sizeof(__pyx_k__register_namespaces), 0, 0, 1, 1},
  {&__pyx_n_s__relaxng, __pyx_k__relaxng, sizeof(__pyx_k__relaxng), 0, 0, 1, 1},
  {&__pyx_n_s__remove, __pyx_k__remove, sizeof(__pyx_k__remove), 0, 0, 1, 1},
  {&__pyx_n_s__remove_blank_text, __pyx_k__remove_blank_text, sizeof(__pyx_k__remove_blank_text), 0, 0, 1, 1},
  {&__pyx_n_s__remove_comments, __pyx_k__remove_comments, sizeof(__pyx_k__remove_comments), 0, 0, 1, 1},
  {&__pyx_n_s__remove_pis, __pyx_k__remove_pis, sizeof(__pyx_k__remove_pis), 0, 0, 1, 1},
  {&__pyx_n_b__replace, __pyx_k__replace, sizeof(__pyx_k__replace), 0, 0, 0, 1},
  {&__pyx_n_s__replace, __pyx_k__replace, sizeof(__pyx_k__replace), 0, 0, 1, 1},
  {&__pyx_n_s__replaceEntities, __pyx_k__replaceEntities, sizeof(__pyx_k__replaceEntities), 0, 0, 1, 1},
  {&__pyx_n_s__replacement, __pyx_k__replacement, sizeof(__pyx_k__replacement), 0, 0, 1, 1},
  {&__pyx_n_s__resolve, __pyx_k__resolve, sizeof(__pyx_k__resolve), 0, 0, 1, 1},
  {&__pyx_n_s__resolve_empty, __pyx_k__resolve_empty, sizeof(__pyx_k__resolve_empty), 0, 0, 1, 1},
  {&__pyx_n_s__resolve_entities, __pyx_k__resolve_entities, sizeof(__pyx_k__resolve_entities), 0, 0, 1, 1},
  {&__pyx_n_s__resolve_file, __pyx_k__resolve_file, sizeof(__pyx_k__resolve_file), 0, 0, 1, 1},
  {&__pyx_n_s__resolve_filename, __pyx_k__resolve_filename, sizeof(__pyx_k__resolve_filename), 0, 0, 1, 1},
  {&__pyx_n_s__resolve_string, __pyx_k__resolve_string, sizeof(__pyx_k__resolve_string), 0, 0, 1, 1},
  {&__pyx_n_s__resolvers, __pyx_k__resolvers, sizeof(__pyx_k__resolvers), 0, 0, 1, 1},
  {&__pyx_n_s__result, __pyx_k__result, sizeof(__pyx_k__result), 0, 0, 1, 1},
  {&__pyx_n_s__reversed, __pyx_k__reversed, sizeof(__pyx_k__reversed), 0, 0, 1, 1},
  {&__pyx_n_s__rexp, __pyx_k__rexp, sizeof(__pyx_k__rexp), 0, 0, 1, 1},
  {&__pyx_n_s__root, __pyx_k__root, sizeof(__pyx_k__root), 0, 0, 1, 1},
  {&__pyx_n_s__s, __pyx_k__s, sizeof(__pyx_k__s), 0, 0, 1, 1},
  {&__pyx_n_s__sax, __pyx_k__sax, sizeof(__pyx_k__sax), 0, 0, 1, 1},
  {&__pyx_n_s__schema, __pyx_k__schema, sizeof(__pyx_k__schema), 0, 0, 1, 1},
  {&__pyx_n_s__search, __pyx_k__search, sizeof(__pyx_k__search), 0, 0, 1, 1},
  {&__pyx_n_s__self, __pyx_k__self, sizeof(__pyx_k__self), 0, 0, 1, 1},
  {&__pyx_n_s__self_node, __pyx_k__self_node, sizeof(__pyx_k__self_node), 0, 0, 1, 1},
  {&__pyx_n_s__set, __pyx_k__set, sizeof(__pyx_k__set), 0, 0, 1, 1},
  {&__pyx_n_s__setDefaultParser, __pyx_k__setDefaultParser, sizeof(__pyx_k__setDefaultParser), 0, 0, 1, 1},
  {&__pyx_n_s__set_context, __pyx_k__set_context, sizeof(__pyx_k__set_context), 0, 0, 1, 1},
  {&__pyx_n_s__set_default_parser, __pyx_k__set_default_parser, sizeof(__pyx_k__set_default_parser), 0, 0, 1, 1},
  {&__pyx_n_s__set_fallback, __pyx_k__set_fallback, sizeof(__pyx_k__set_fallback), 0, 0, 1, 1},
  {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
  {&__pyx_n_s__smart_strings, __pyx_k__smart_strings, sizeof(__pyx_k__smart_strings), 0, 0, 1, 1},
  {&__pyx_n_s__sort, __pyx_k__sort, sizeof(__pyx_k__sort), 0, 0, 1, 1},
  {&__pyx_n_s__source, __pyx_k__source, sizeof(__pyx_k__source), 0, 0, 1, 1},
  {&__pyx_n_s__spaceMax, __pyx_k__spaceMax, sizeof(__pyx_k__spaceMax), 0, 0, 1, 1},
  {&__pyx_n_s__spaceTab, __pyx_k__spaceTab, sizeof(__pyx_k__spaceTab), 0, 0, 1, 1},
  {&__pyx_n_s__split, __pyx_k__split, sizeof(__pyx_k__split), 0, 0, 1, 1},
  {&__pyx_n_s__standalone, __pyx_k__standalone, sizeof(__pyx_k__standalone), 0, 0, 1, 1},
  {&__pyx_n_s__start, __pyx_k__start, sizeof(__pyx_k__start), 0, 0, 1, 1},
  {&__pyx_n_u__start, __pyx_k__start, sizeof(__pyx_k__start), 0, 1, 0, 1},
  {&__pyx_n_s__startElement, __pyx_k__startElement, sizeof(__pyx_k__startElement), 0, 0, 1, 1},
  {&__pyx_n_s__startElementNs, __pyx_k__startElementNs, sizeof(__pyx_k__startElementNs), 0, 0, 1, 1},
  {&__pyx_n_s__startNode, __pyx_k__startNode, sizeof(__pyx_k__startNode), 0, 0, 1, 1},
  {&__pyx_n_s__startswith, __pyx_k__startswith, sizeof(__pyx_k__startswith), 0, 0, 1, 1},
  {&__pyx_n_s__state, __pyx_k__state, sizeof(__pyx_k__state), 0, 0, 1, 1},
  {&__pyx_n_s__stdout, __pyx_k__stdout, sizeof(__pyx_k__stdout), 0, 0, 1, 1},
  {&__pyx_n_s__step, __pyx_k__step, sizeof(__pyx_k__step), 0, 0, 1, 1},
  {&__pyx_n_s__stop, __pyx_k__stop, sizeof(__pyx_k__stop), 0, 0, 1, 1},
  {&__pyx_n_s__str, __pyx_k__str, sizeof(__pyx_k__str), 0, 0, 1, 1},
  {&__pyx_n_s__strides, __pyx_k__strides, sizeof(__pyx_k__strides), 0, 0, 1, 1},
  {&__pyx_n_s__string, __pyx_k__string, sizeof(__pyx_k__string), 0, 0, 1, 1},
  {&__pyx_n_s__strings, __pyx_k__strings, sizeof(__pyx_k__strings), 0, 0, 1, 1},
  {&__pyx_n_s__stringval, __pyx_k__stringval, sizeof(__pyx_k__stringval), 0, 0, 1, 1},
  {&__pyx_n_s__strip, __pyx_k__strip, sizeof(__pyx_k__strip), 0, 0, 1, 1},
  {&__pyx_n_s__strip_attributes, __pyx_k__strip_attributes, sizeof(__pyx_k__strip_attributes), 0, 0, 1, 1},
  {&__pyx_n_s__strip_cdata, __pyx_k__strip_cdata, sizeof(__pyx_k__strip_cdata), 0, 0, 1, 1},
  {&__pyx_n_s__strip_elements, __pyx_k__strip_elements, sizeof(__pyx_k__strip_elements), 0, 0, 1, 1},
  {&__pyx_n_s__strip_tags, __pyx_k__strip_tags, sizeof(__pyx_k__strip_tags), 0, 0, 1, 1},
  {&__pyx_n_s__strparam, __pyx_k__strparam, sizeof(__pyx_k__strparam), 0, 0, 1, 1},
  {&__pyx_n_s__strval, __pyx_k__strval, sizeof(__pyx_k__strval), 0, 0, 1, 1},
  {&__pyx_n_s__sub, __pyx_k__sub, sizeof(__pyx_k__sub), 0, 0, 1, 1},
  {&__pyx_n_s__suboffsets, __pyx_k__suboffsets, sizeof(__pyx_k__suboffsets), 0, 0, 1, 1},
  {&__pyx_n_s__super, __pyx_k__super, sizeof(__pyx_k__super), 0, 0, 1, 1},
  {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
  {&__pyx_n_s__system_url, __pyx_k__system_url, sizeof(__pyx_k__system_url), 0, 0, 1, 1},
  {&__pyx_n_s__tag, __pyx_k__tag, sizeof(__pyx_k__tag), 0, 0, 1, 1},
  {&__pyx_n_s__tail, __pyx_k__tail, sizeof(__pyx_k__tail), 0, 0, 1, 1},
  {&__pyx_n_s__target, __pyx_k__target, sizeof(__pyx_k__target), 0, 0, 1, 1},
  {&__pyx_n_s__tell, __pyx_k__tell, sizeof(__pyx_k__tell), 0, 0, 1, 1},
  {&__pyx_n_u__tell, __pyx_k__tell, sizeof(__pyx_k__tell), 0, 1, 0, 1},
  {&__pyx_n_b__test, __pyx_k__test, sizeof(__pyx_k__test), 0, 0, 0, 1},
  {&__pyx_n_s__test, __pyx_k__test, sizeof(__pyx_k__test), 0, 0, 1, 1},
  {&__pyx_n_s__text, __pyx_k__text, sizeof(__pyx_k__text), 0, 0, 1, 1},
  {&__pyx_n_u__text, __pyx_k__text, sizeof(__pyx_k__text), 0, 1, 0, 1},
  {&__pyx_n_s__tostring, __pyx_k__tostring, sizeof(__pyx_k__tostring), 0, 0, 1, 1},
  {&__pyx_n_s__tostringlist, __pyx_k__tostringlist, sizeof(__pyx_k__tostringlist), 0, 0, 1, 1},
  {&__pyx_n_s__tounicode, __pyx_k__tounicode, sizeof(__pyx_k__tounicode), 0, 0, 1, 1},
  {&__pyx_n_s__tree, __pyx_k__tree, sizeof(__pyx_k__tree), 0, 0, 1, 1},
  {&__pyx_n_s__tree_or_element, __pyx_k__tree_or_element, sizeof(__pyx_k__tree_or_element), 0, 0, 1, 1},
  {&__pyx_n_s__type, __pyx_k__type, sizeof(__pyx_k__type), 0, 0, 1, 1},
  {&__pyx_n_s__type_name, __pyx_k__type_name, sizeof(__pyx_k__type_name), 0, 0, 1, 1},
  {&__pyx_n_s__unicode, __pyx_k__unicode, sizeof(__pyx_k__unicode), 0, 0, 1, 1},
  {&__pyx_n_u__unknown, __pyx_k__unknown, sizeof(__pyx_k__unknown), 0, 1, 0, 1},
  {&__pyx_n_s__unregister_context, __pyx_k__unregister_context, sizeof(__pyx_k__unregister_context), 0, 0, 1, 1},
  {&__pyx_n_s__update, __pyx_k__update, sizeof(__pyx_k__update), 0, 0, 1, 1},
  {&__pyx_n_s__upper, __pyx_k__upper, sizeof(__pyx_k__upper), 0, 0, 1, 1},
  {&__pyx_n_s__uri, __pyx_k__uri, sizeof(__pyx_k__uri), 0, 0, 1, 1},
  {&__pyx_n_s__url, __pyx_k__url, sizeof(__pyx_k__url), 0, 0, 1, 1},
  {&__pyx_n_s__userData, __pyx_k__userData, sizeof(__pyx_k__userData), 0, 0, 1, 1},
  {&__pyx_n_s__validate, __pyx_k__validate, sizeof(__pyx_k__validate), 0, 0, 1, 1},
  {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
  {&__pyx_n_s__values, __pyx_k__values, sizeof(__pyx_k__values), 0, 0, 1, 1},
  {&__pyx_n_s__variables, __pyx_k__variables, sizeof(__pyx_k__variables), 0, 0, 1, 1},
  {&__pyx_n_s__version, __pyx_k__version, sizeof(__pyx_k__version), 0, 0, 1, 1},
  {&__pyx_n_s__warn, __pyx_k__warn, sizeof(__pyx_k__warn), 0, 0, 1, 1},
  {&__pyx_n_s__warnings, __pyx_k__warnings, sizeof(__pyx_k__warnings), 0, 0, 1, 1},
  {&__pyx_n_u__wb, __pyx_k__wb, sizeof(__pyx_k__wb), 0, 1, 0, 1},
  {&__pyx_n_s__wellFormed, __pyx_k__wellFormed, sizeof(__pyx_k__wellFormed), 0, 0, 1, 1},
  {&__pyx_n_s__with_comments, __pyx_k__with_comments, sizeof(__pyx_k__with_comments), 0, 0, 1, 1},
  {&__pyx_n_s__with_tail, __pyx_k__with_tail, sizeof(__pyx_k__with_tail), 0, 0, 1, 1},
  {&__pyx_n_s__write, __pyx_k__write, sizeof(__pyx_k__write), 0, 0, 1, 1},
  {&__pyx_n_u__write, __pyx_k__write, sizeof(__pyx_k__write), 0, 1, 0, 1},
  {&__pyx_n_s__write_c14n, __pyx_k__write_c14n, sizeof(__pyx_k__write_c14n), 0, 0, 1, 1},
  {&__pyx_n_s__write_file, __pyx_k__write_file, sizeof(__pyx_k__write_file), 0, 0, 1, 1},
  {&__pyx_n_u__write_file, __pyx_k__write_file, sizeof(__pyx_k__write_file), 0, 1, 0, 1},
  {&__pyx_n_s__write_network, __pyx_k__write_network, sizeof(__pyx_k__write_network), 0, 0, 1, 1},
  {&__pyx_n_u__write_network, __pyx_k__write_network, sizeof(__pyx_k__write_network), 0, 1, 0, 1},
  {&__pyx_n_s__wsdl, __pyx_k__wsdl, sizeof(__pyx_k__wsdl), 0, 0, 1, 1},
  {&__pyx_n_s__xinclude, __pyx_k__xinclude, sizeof(__pyx_k__xinclude), 0, 0, 1, 1},
  {&__pyx_n_u__xml, __pyx_k__xml, sizeof(__pyx_k__xml), 0, 1, 0, 1},
  {&__pyx_n_s__xml_declaration, __pyx_k__xml_declaration, sizeof(__pyx_k__xml_declaration), 0, 0, 1, 1},
  {&__pyx_n_s__xmlschema, __pyx_k__xmlschema, sizeof(__pyx_k__xmlschema), 0, 0, 1, 1},
  {&__pyx_n_s__xpath, __pyx_k__xpath, sizeof(__pyx_k__xpath), 0, 0, 1, 1},
  {&__pyx_n_s__xpathCtxt, __pyx_k__xpathCtxt, sizeof(__pyx_k__xpathCtxt), 0, 0, 1, 1},
  {&__pyx_n_s__xs, __pyx_k__xs, sizeof(__pyx_k__xs), 0, 0, 1, 1},
  {&__pyx_n_u__xs, __pyx_k__xs, sizeof(__pyx_k__xs), 0, 1, 0, 1},
  {&__pyx_n_s__xsi, __pyx_k__xsi, sizeof(__pyx_k__xsi), 0, 0, 1, 1},
  {&__pyx_n_s__xsl, __pyx_k__xsl, sizeof(__pyx_k__xsl), 0, 0, 1, 1},
  {&__pyx_n_u__xsl, __pyx_k__xsl, sizeof(__pyx_k__xsl), 0, 1, 0, 1},
  {&__pyx_n_s__xslt, __pyx_k__xslt, sizeof(__pyx_k__xslt), 0, 0, 1, 1},
  {&__pyx_n_s__xslt_input, __pyx_k__xslt_input, sizeof(__pyx_k__xslt_input), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ImportError = __Pyx_GetName(__pyx_b, __pyx_n_s__ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_Exception = __Pyx_GetName(__pyx_b, __pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_SyntaxError = __Pyx_GetName(__pyx_b, __pyx_n_s__SyntaxError); if (!__pyx_builtin_SyntaxError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_super = __Pyx_GetName(__pyx_b, __pyx_n_s__super); if (!__pyx_builtin_super) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_UnicodeEncodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_UnicodeDecodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_IndexError = __Pyx_GetName(__pyx_b, __pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_id = __Pyx_GetName(__pyx_b, __pyx_n_s__id); if (!__pyx_builtin_id) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_FutureWarning = __Pyx_GetName(__pyx_b, __pyx_n_s__FutureWarning); if (!__pyx_builtin_FutureWarning) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_StopIteration = __Pyx_GetName(__pyx_b, __pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_object = __Pyx_GetName(__pyx_b, __pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_IOError = __Pyx_GetName(__pyx_b, __pyx_n_s__IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_LookupError = __Pyx_GetName(__pyx_b, __pyx_n_s__LookupError); if (!__pyx_builtin_LookupError) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_open = __Pyx_GetName(__pyx_b, __pyx_n_s__open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_enumerate = __Pyx_GetName(__pyx_b, __pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_getattr = __Pyx_GetName(__pyx_b, __pyx_n_s__getattr); if (!__pyx_builtin_getattr) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_AssertionError = __Pyx_GetName(__pyx_b, __pyx_n_s__AssertionError); if (!__pyx_builtin_AssertionError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitGlobals(void) {
  #if PY_VERSION_HEX < 0x02040000
  if (unlikely(__Pyx_Py23SetsImport() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_100 = PyInt_FromLong(-100); if (unlikely(!__pyx_int_neg_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_200 = PyInt_FromLong(-200); if (unlikely(!__pyx_int_neg_200)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_300 = PyInt_FromLong(-300); if (unlikely(!__pyx_int_neg_300)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_32768 = PyInt_FromLong(32768); if (unlikely(!__pyx_int_32768)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initetree(void); /*proto*/
PyMODINIT_FUNC initetree(void)
#else
PyMODINIT_FUNC PyInit_etree(void); /*proto*/
PyMODINIT_FUNC PyInit_etree(void)
#endif
{
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  #if CYTHON_REFNANNY
  void* __pyx_refnanny = NULL;
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  __pyx_refnanny = __Pyx_RefNanny->SetupContext("PyMODINIT_FUNC PyInit_etree(void)", __LINE__, __FILE__);
  #endif
  __pyx_init_filenames();
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #if PY_MAJOR_VERSION < 3
  __pyx_empty_bytes = PyString_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #else
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("etree"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_382), 0, PYTHON_API_VERSION);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  #if PY_MAJOR_VERSION < 3
  Py_INCREF(__pyx_m);
  #endif
  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_module_is_main_lxml__etree) {
    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  }
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Global init code ---*/
  __pyx_v_4lxml_5etree__unicode = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_os_path_abspath = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_BytesIO = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_StringIO = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__elementpath = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_sys = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_re = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_gzip = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_ITER_EMPTY = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__FILENAME_ENCODING = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__LxmlError = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_error_super_init = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___RE_XML_ENCODING = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___REPLACE_XML_ENCODING = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___HAS_XML_ENCODING = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___ERROR_LEVELS = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___ERROR_DOMAINS = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___PARSER_ERROR_TYPES = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__PREFIX_CACHE = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP = ((struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES = ((PyObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__XMLSyntaxError = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___DEFAULT_XML_PARSER = ((struct __pyx_obj_4lxml_5etree_XMLParser *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER = ((struct __pyx_obj_4lxml_5etree_HTMLParser *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_inspect_getargspec = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__find_id_attributes = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__replace_strings = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__find_namespaces = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree_EMPTY_DICT = ((PyObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__RE_PI_HREF = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__FIND_PI_HREF = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__REPLACE_PI_HREF = Py_None; Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree___findStylesheetByID = ((struct __pyx_obj_4lxml_5etree_XPath *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4lxml_5etree__check_for_default_attributes = ((struct __pyx_obj_4lxml_5etree_XPath *)Py_None); Py_INCREF(Py_None);
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("deepcopyNodeToDocument", (void (*)(void))deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("elementTreeFactory", (void (*)(void))elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("newElementTree", (void (*)(void))newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("elementFactory", (void (*)(void))elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("makeElement", (void (*)(void))makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("makeSubElement", (void (*)(void))makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("setElementClassLookupFunction", (void (*)(void))setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("lookupDefaultElementClass", (void (*)(void))lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("lookupNamespaceElementClass", (void (*)(void))lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("callLookupFallback", (void (*)(void))callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("tagMatches", (void (*)(void))tagMatches, "int (xmlNode *, char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("documentOrRaise", (void (*)(void))documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("rootNodeOrRaise", (void (*)(void))rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("hasText", (void (*)(void))hasText, "int (xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("hasTail", (void (*)(void))hasTail, "int (xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("textOf", (void (*)(void))textOf, "PyObject *(xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("tailOf", (void (*)(void))tailOf, "PyObject *(xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("setNodeText", (void (*)(void))setNodeText, "int (xmlNode *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("setTailText", (void (*)(void))setTailText, "int (xmlNode *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("attributeValue", (void (*)(void))attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("attributeValueFromNsName", (void (*)(void))attributeValueFromNsName, "PyObject *(xmlNode *, char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("getAttributeValue", (void (*)(void))getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("iterattributes", (void (*)(void))iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("collectAttributes", (void (*)(void))collectAttributes, "PyObject *(xmlNode *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("setAttributeValue", (void (*)(void))setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("delAttribute", (void (*)(void))delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("delAttributeFromNsName", (void (*)(void))delAttributeFromNsName, "int (xmlNode *, char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("hasChild", (void (*)(void))hasChild, "int (xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("findChild", (void (*)(void))findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("findChildForwards", (void (*)(void))findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("findChildBackwards", (void (*)(void))findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("nextElement", (void (*)(void))nextElement, "xmlNode *(xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("previousElement", (void (*)(void))previousElement, "xmlNode *(xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("appendChild", (void (*)(void))appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("pyunicode", (void (*)(void))pyunicode, "PyObject *(char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("utf8", (void (*)(void))utf8, "PyObject *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("getNsTag", (void (*)(void))getNsTag, "PyObject *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("namespacedName", (void (*)(void))namespacedName, "PyObject *(xmlNode *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("namespacedNameFromNsName", (void (*)(void))namespacedNameFromNsName, "PyObject *(char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("iteratorStoreNext", (void (*)(void))iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("initTagMatch", (void (*)(void))initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_ExportFunction("findOrBuildNodeNsPrefix", (void (*)(void))findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Type init code ---*/
  __pyx_vtabptr_4lxml_5etree__TempStore = &__pyx_vtable_4lxml_5etree__TempStore;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__TempStore.add = (int (*)(struct __pyx_obj_4lxml_5etree__TempStore *, PyObject *))__pyx_f_4lxml_5etree_10_TempStore_add;
  __pyx_vtable_4lxml_5etree__TempStore.clear = (int (*)(struct __pyx_obj_4lxml_5etree__TempStore *))__pyx_f_4lxml_5etree_10_TempStore_clear;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TempStore.add = (void(*)(void))__pyx_f_4lxml_5etree_10_TempStore_add;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TempStore.clear = (void(*)(void))__pyx_f_4lxml_5etree_10_TempStore_clear;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__TempStore) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__TempStore.tp_dict, __pyx_vtabptr_4lxml_5etree__TempStore) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_TempStore", (PyObject *)&__pyx_type_4lxml_5etree__TempStore) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__TempStore = &__pyx_type_4lxml_5etree__TempStore;
  __pyx_vtabptr_4lxml_5etree__ExceptionContext = &__pyx_vtable_4lxml_5etree__ExceptionContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ExceptionContext.clear = (void (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *))__pyx_f_4lxml_5etree_17_ExceptionContext_clear;
  __pyx_vtable_4lxml_5etree__ExceptionContext._store_raised = (void (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *))__pyx_f_4lxml_5etree_17_ExceptionContext__store_raised;
  __pyx_vtable_4lxml_5etree__ExceptionContext._store_exception = (void (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *, PyObject *))__pyx_f_4lxml_5etree_17_ExceptionContext__store_exception;
  __pyx_vtable_4lxml_5etree__ExceptionContext._has_raised = (int (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *))__pyx_f_4lxml_5etree_17_ExceptionContext__has_raised;
  __pyx_vtable_4lxml_5etree__ExceptionContext._raise_if_stored = (int (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *))__pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExceptionContext.clear = (void(*)(void))__pyx_f_4lxml_5etree_17_ExceptionContext_clear;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExceptionContext._store_raised = (void(*)(void))__pyx_f_4lxml_5etree_17_ExceptionContext__store_raised;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExceptionContext._store_exception = (void(*)(void))__pyx_f_4lxml_5etree_17_ExceptionContext__store_exception;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExceptionContext._has_raised = (void(*)(void))__pyx_f_4lxml_5etree_17_ExceptionContext__has_raised;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExceptionContext._raise_if_stored = (void(*)(void))__pyx_f_4lxml_5etree_17_ExceptionContext__raise_if_stored;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ExceptionContext) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ExceptionContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ExceptionContext) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ExceptionContext", (PyObject *)&__pyx_type_4lxml_5etree__ExceptionContext) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ExceptionContext = &__pyx_type_4lxml_5etree__ExceptionContext;
  __pyx_vtabptr_4lxml_5etree__Document = &__pyx_vtable_4lxml_5etree__Document;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__Document.getroot = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_getroot;
  __pyx_vtable_4lxml_5etree__Document.hasdoctype = (int (*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_hasdoctype;
  __pyx_vtable_4lxml_5etree__Document.getdoctype = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_getdoctype;
  __pyx_vtable_4lxml_5etree__Document.getxmlinfo = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_getxmlinfo;
  __pyx_vtable_4lxml_5etree__Document.isstandalone = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_isstandalone;
  __pyx_vtable_4lxml_5etree__Document.buildNewPrefix = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_buildNewPrefix;
  __pyx_vtable_4lxml_5etree__Document._findOrBuildNodeNs = (xmlNs *(*)(struct LxmlDocument *, xmlNode *, char *, char *))__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs;
  __pyx_vtable_4lxml_5etree__Document._setNodeNs = (int (*)(struct LxmlDocument *, xmlNode *, char *))__pyx_f_4lxml_5etree_9_Document__setNodeNs;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.getroot = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_getroot;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.hasdoctype = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_hasdoctype;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.getdoctype = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_getdoctype;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.getxmlinfo = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_getxmlinfo;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.isstandalone = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_isstandalone;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document.buildNewPrefix = (void(*)(void))__pyx_f_4lxml_5etree_9_Document_buildNewPrefix;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document._findOrBuildNodeNs = (void(*)(void))__pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__Document._setNodeNs = (void(*)(void))__pyx_f_4lxml_5etree_9_Document__setNodeNs;
  #endif
  if (PyType_Ready(&LxmlDocumentType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(LxmlDocumentType.tp_dict, __pyx_vtabptr_4lxml_5etree__Document) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Document", (PyObject *)&LxmlDocumentType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Document = &LxmlDocumentType;
  if (PyType_Ready(&LxmlElementType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Element", (PyObject *)&LxmlElementType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Element = &LxmlElementType;
  __pyx_vtabptr_4lxml_5etree__BaseParser = &__pyx_vtable_4lxml_5etree__BaseParser;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__BaseParser._getParserContext = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_11_BaseParser__getParserContext;
  __pyx_vtable_4lxml_5etree__BaseParser._getPushParserContext = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_11_BaseParser__getPushParserContext;
  __pyx_vtable_4lxml_5etree__BaseParser._createContext = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *))__pyx_f_4lxml_5etree_11_BaseParser__createContext;
  __pyx_vtable_4lxml_5etree__BaseParser._newParserCtxt = (xmlParserCtxt *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt;
  __pyx_vtable_4lxml_5etree__BaseParser._newPushParserCtxt = (xmlParserCtxt *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt;
  __pyx_vtable_4lxml_5etree__BaseParser._copy = (struct __pyx_obj_4lxml_5etree__BaseParser *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_11_BaseParser__copy;
  __pyx_vtable_4lxml_5etree__BaseParser._parseUnicodeDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc;
  __pyx_vtable_4lxml_5etree__BaseParser._parseDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *, Py_ssize_t, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDoc;
  __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFile = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, char *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile;
  __pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFilelike = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._getParserContext = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__getParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._getPushParserContext = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__getPushParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._createContext = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__createContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._newParserCtxt = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__newParserCtxt;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._newPushParserCtxt = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._copy = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._parseUnicodeDoc = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._parseDoc = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__parseDoc;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFile = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseParser._parseDocFromFilelike = (void(*)(void))__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseParser.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_BaseParser", (PyObject *)&__pyx_type_4lxml_5etree__BaseParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__BaseParser = &__pyx_type_4lxml_5etree__BaseParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_QName) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "QName", (PyObject *)&__pyx_type_4lxml_5etree_QName) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_QName = &__pyx_type_4lxml_5etree_QName;
  __pyx_vtabptr_4lxml_5etree__LogEntry = &__pyx_vtable_4lxml_5etree__LogEntry;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__LogEntry._setError = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__LogEntry *, xmlError *))__pyx_f_4lxml_5etree_9_LogEntry__setError;
  __pyx_vtable_4lxml_5etree__LogEntry._setGeneric = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__LogEntry *, int, int, int, int, PyObject *, PyObject *))__pyx_f_4lxml_5etree_9_LogEntry__setGeneric;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__LogEntry._setError = (void(*)(void))__pyx_f_4lxml_5etree_9_LogEntry__setError;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__LogEntry._setGeneric = (void(*)(void))__pyx_f_4lxml_5etree_9_LogEntry__setGeneric;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__LogEntry) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__LogEntry.tp_dict, __pyx_vtabptr_4lxml_5etree__LogEntry) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_LogEntry", (PyObject *)&__pyx_type_4lxml_5etree__LogEntry) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__LogEntry = &__pyx_type_4lxml_5etree__LogEntry;
  __pyx_vtabptr_4lxml_5etree__BaseErrorLog = &__pyx_vtable_4lxml_5etree__BaseErrorLog;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__BaseErrorLog._receive = (void (*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, xmlError *))__pyx_f_4lxml_5etree_13_BaseErrorLog__receive;
  __pyx_vtable_4lxml_5etree__BaseErrorLog._receiveGeneric = (void (*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int, int, int, int, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric;
  __pyx_vtable_4lxml_5etree__BaseErrorLog._buildParseException = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException;
  __pyx_vtable_4lxml_5etree__BaseErrorLog._buildExceptionMessage = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseErrorLog._receive = (void(*)(void))__pyx_f_4lxml_5etree_13_BaseErrorLog__receive;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseErrorLog._receiveGeneric = (void(*)(void))__pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseErrorLog._buildParseException = (void(*)(void))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseErrorLog._buildExceptionMessage = (void(*)(void))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_BaseErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__BaseErrorLog = &__pyx_type_4lxml_5etree__BaseErrorLog;
  __pyx_vtabptr_4lxml_5etree__ListErrorLog = &__pyx_vtable_4lxml_5etree__ListErrorLog;
  __pyx_vtable_4lxml_5etree__ListErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;
  __pyx_type_4lxml_5etree__ListErrorLog.tp_base = __pyx_ptype_4lxml_5etree__BaseErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ListErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ListErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ListErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ListErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__ListErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ListErrorLog = &__pyx_type_4lxml_5etree__ListErrorLog;
  __pyx_vtabptr_4lxml_5etree__ErrorLog = &__pyx_vtable_4lxml_5etree__ErrorLog;
  __pyx_vtable_4lxml_5etree__ErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ListErrorLog;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ErrorLog.connect = (void (*)(struct __pyx_obj_4lxml_5etree__ErrorLog *))__pyx_f_4lxml_5etree_9_ErrorLog_connect;
  __pyx_vtable_4lxml_5etree__ErrorLog.disconnect = (void (*)(struct __pyx_obj_4lxml_5etree__ErrorLog *))__pyx_f_4lxml_5etree_9_ErrorLog_disconnect;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ErrorLog.connect = (void(*)(void))__pyx_f_4lxml_5etree_9_ErrorLog_connect;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ErrorLog.disconnect = (void(*)(void))__pyx_f_4lxml_5etree_9_ErrorLog_disconnect;
  #endif
  __pyx_type_4lxml_5etree__ErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ListErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__ErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ErrorLog = &__pyx_type_4lxml_5etree__ErrorLog;
  __pyx_vtabptr_4lxml_5etree__DomainErrorLog = &__pyx_vtable_4lxml_5etree__DomainErrorLog;
  __pyx_vtable_4lxml_5etree__DomainErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
  __pyx_type_4lxml_5etree__DomainErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__DomainErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_DomainErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__DomainErrorLog = &__pyx_type_4lxml_5etree__DomainErrorLog;
  __pyx_vtabptr_4lxml_5etree__RotatingErrorLog = &__pyx_vtable_4lxml_5etree__RotatingErrorLog;
  __pyx_vtable_4lxml_5etree__RotatingErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
  __pyx_type_4lxml_5etree__RotatingErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_RotatingErrorLog", (PyObject *)&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__RotatingErrorLog = &__pyx_type_4lxml_5etree__RotatingErrorLog;
  __pyx_vtabptr_4lxml_5etree_PyErrorLog = &__pyx_vtable_4lxml_5etree_PyErrorLog;
  __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;
  __pyx_type_4lxml_5etree_PyErrorLog.tp_base = __pyx_ptype_4lxml_5etree__BaseErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PyErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "PyErrorLog", (PyObject *)&__pyx_type_4lxml_5etree_PyErrorLog) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_PyErrorLog = &__pyx_type_4lxml_5etree_PyErrorLog;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_DocInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "DocInfo", (PyObject *)&__pyx_type_4lxml_5etree_DocInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_DocInfo = &__pyx_type_4lxml_5etree_DocInfo;
  __pyx_vtabptr_4lxml_5etree___ContentOnlyElement = &__pyx_vtable_4lxml_5etree___ContentOnlyElement;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree___ContentOnlyElement._raiseImmutable = (int (*)(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *))__pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree___ContentOnlyElement._raiseImmutable = (void(*)(void))__pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable;
  #endif
  __pyx_type_4lxml_5etree___ContentOnlyElement.tp_base = __pyx_ptype_4lxml_5etree__Element;
  if (PyType_Ready(&__pyx_type_4lxml_5etree___ContentOnlyElement) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree___ContentOnlyElement.tp_dict, __pyx_vtabptr_4lxml_5etree___ContentOnlyElement) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "__ContentOnlyElement", (PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree___ContentOnlyElement = &__pyx_type_4lxml_5etree___ContentOnlyElement;
  __pyx_vtabptr_4lxml_5etree__Comment = &__pyx_vtable_4lxml_5etree__Comment;
  __pyx_vtable_4lxml_5etree__Comment.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
  __pyx_type_4lxml_5etree__Comment.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__Comment) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Comment.tp_dict, __pyx_vtabptr_4lxml_5etree__Comment) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Comment", (PyObject *)&__pyx_type_4lxml_5etree__Comment) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Comment = &__pyx_type_4lxml_5etree__Comment;
  __pyx_vtabptr_4lxml_5etree__ProcessingInstruction = &__pyx_vtable_4lxml_5etree__ProcessingInstruction;
  __pyx_vtable_4lxml_5etree__ProcessingInstruction.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
  __pyx_type_4lxml_5etree__ProcessingInstruction.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ProcessingInstruction.tp_dict, __pyx_vtabptr_4lxml_5etree__ProcessingInstruction) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ProcessingInstruction", (PyObject *)&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ProcessingInstruction = &__pyx_type_4lxml_5etree__ProcessingInstruction;
  __pyx_vtabptr_4lxml_5etree__Entity = &__pyx_vtable_4lxml_5etree__Entity;
  __pyx_vtable_4lxml_5etree__Entity.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
  __pyx_type_4lxml_5etree__Entity.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__Entity) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Entity.tp_dict, __pyx_vtabptr_4lxml_5etree__Entity) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Entity", (PyObject *)&__pyx_type_4lxml_5etree__Entity) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Entity = &__pyx_type_4lxml_5etree__Entity;
  __pyx_vtabptr_4lxml_5etree__ElementTree = &__pyx_vtable_4lxml_5etree__ElementTree;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ElementTree._assertHasRoot = (PyObject *(*)(struct LxmlElementTree *))__pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ElementTree._assertHasRoot = (void(*)(void))__pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot;
  #endif
  if (PyType_Ready(&LxmlElementTreeType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(LxmlElementTreeType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTree) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ElementTree", (PyObject *)&LxmlElementTreeType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ElementTree = &LxmlElementTreeType;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__Attrib) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Attrib", (PyObject *)&__pyx_type_4lxml_5etree__Attrib) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Attrib = &__pyx_type_4lxml_5etree__Attrib;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__AttribIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_AttribIterator", (PyObject *)&__pyx_type_4lxml_5etree__AttribIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__AttribIterator = &__pyx_type_4lxml_5etree__AttribIterator;
  __pyx_vtabptr_4lxml_5etree__ElementTagMatcher = &__pyx_vtable_4lxml_5etree__ElementTagMatcher;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ElementTagMatcher._initTagMatch = (PyObject *(*)(struct LxmlElementTagMatcher *, PyObject *))__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ElementTagMatcher._initTagMatch = (void(*)(void))__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch;
  #endif
  if (PyType_Ready(&LxmlElementTagMatcherType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(LxmlElementTagMatcherType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTagMatcher) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ElementTagMatcher", (PyObject *)&LxmlElementTagMatcherType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ElementTagMatcher = &LxmlElementTagMatcherType;
  __pyx_vtabptr_4lxml_5etree__ElementIterator = &__pyx_vtable_4lxml_5etree__ElementIterator;
  __pyx_vtable_4lxml_5etree__ElementIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementTagMatcher;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ElementIterator._storeNext = (void (*)(struct LxmlElementIterator *, struct LxmlElement *))__pyx_f_4lxml_5etree_16_ElementIterator__storeNext;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ElementIterator._storeNext = (void(*)(void))__pyx_f_4lxml_5etree_16_ElementIterator__storeNext;
  #endif
  LxmlElementIteratorType.tp_base = __pyx_ptype_4lxml_5etree__ElementTagMatcher;
  if (PyType_Ready(&LxmlElementIteratorType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(LxmlElementIteratorType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ElementIterator", (PyObject *)&LxmlElementIteratorType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ElementIterator = &LxmlElementIteratorType;
  __pyx_vtabptr_4lxml_5etree_ElementChildIterator = &__pyx_vtable_4lxml_5etree_ElementChildIterator;
  __pyx_vtable_4lxml_5etree_ElementChildIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementIterator;
  __pyx_type_4lxml_5etree_ElementChildIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementIterator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementChildIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementChildIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementChildIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementChildIterator = &__pyx_type_4lxml_5etree_ElementChildIterator;
  __pyx_vtabptr_4lxml_5etree_SiblingsIterator = &__pyx_vtable_4lxml_5etree_SiblingsIterator;
  __pyx_vtable_4lxml_5etree_SiblingsIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementIterator;
  __pyx_type_4lxml_5etree_SiblingsIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementIterator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_SiblingsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_SiblingsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "SiblingsIterator", (PyObject *)&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_SiblingsIterator = &__pyx_type_4lxml_5etree_SiblingsIterator;
  __pyx_vtabptr_4lxml_5etree_AncestorsIterator = &__pyx_vtable_4lxml_5etree_AncestorsIterator;
  __pyx_vtable_4lxml_5etree_AncestorsIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementIterator;
  __pyx_type_4lxml_5etree_AncestorsIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementIterator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_AncestorsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_AncestorsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "AncestorsIterator", (PyObject *)&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_AncestorsIterator = &__pyx_type_4lxml_5etree_AncestorsIterator;
  __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator = &__pyx_vtable_4lxml_5etree_ElementDepthFirstIterator;
  __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementTagMatcher;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeAnyTag = (xmlNode *(*)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag;
  __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeMatchTag = (xmlNode *(*)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeAnyTag = (void(*)(void))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeMatchTag = (void(*)(void))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag;
  #endif
  __pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementTagMatcher;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementDepthFirstIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementDepthFirstIterator = &__pyx_type_4lxml_5etree_ElementDepthFirstIterator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementTextIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementTextIterator = &__pyx_type_4lxml_5etree_ElementTextIterator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "CDATA", (PyObject *)&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_CDATA = &__pyx_type_4lxml_5etree_CDATA;
  __pyx_vtabptr_4lxml_5etree__ReadOnlyElementProxy = &__pyx_vtable_4lxml_5etree__ReadOnlyElementProxy;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ReadOnlyElementProxy._assertNode = (int (*)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy__assertNode;
  __pyx_vtable_4lxml_5etree__ReadOnlyElementProxy.free_after_use = (void (*)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_free_after_use;
  __pyx_vtable_4lxml_5etree__ReadOnlyElementProxy.getchildren = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_getchildren;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ReadOnlyElementProxy._assertNode = (void(*)(void))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy__assertNode;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ReadOnlyElementProxy.free_after_use = (void(*)(void))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_free_after_use;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ReadOnlyElementProxy.getchildren = (void(*)(void))__pyx_f_4lxml_5etree_21_ReadOnlyElementProxy_getchildren;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ReadOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ReadOnlyElementProxy.tp_dict, __pyx_vtabptr_4lxml_5etree__ReadOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ReadOnlyElementProxy", (PyObject *)&__pyx_type_4lxml_5etree__ReadOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy = &__pyx_type_4lxml_5etree__ReadOnlyElementProxy;
  __pyx_vtabptr_4lxml_5etree__AppendOnlyElementProxy = &__pyx_vtable_4lxml_5etree__AppendOnlyElementProxy;
  __pyx_vtable_4lxml_5etree__AppendOnlyElementProxy.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ReadOnlyElementProxy;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__AppendOnlyElementProxy.append = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__AppendOnlyElementProxy *, PyObject *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__AppendOnlyElementProxy.append = (void(*)(void))__pyx_f_4lxml_5etree_23_AppendOnlyElementProxy_append;
  #endif
  __pyx_type_4lxml_5etree__AppendOnlyElementProxy.tp_base = __pyx_ptype_4lxml_5etree__ReadOnlyElementProxy;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__AppendOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__AppendOnlyElementProxy.tp_dict, __pyx_vtabptr_4lxml_5etree__AppendOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_AppendOnlyElementProxy", (PyObject *)&__pyx_type_4lxml_5etree__AppendOnlyElementProxy) < 0) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__AppendOnlyElementProxy = &__pyx_type_4lxml_5etree__AppendOnlyElementProxy;
  LxmlElementBaseType.tp_base = __pyx_ptype_4lxml_5etree__Element;
  if (PyType_Ready(&LxmlElementBaseType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementBase", (PyObject *)&LxmlElementBaseType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementBase = &LxmlElementBaseType;
  __pyx_vtabptr_4lxml_5etree_CommentBase = &__pyx_vtable_4lxml_5etree_CommentBase;
  __pyx_vtable_4lxml_5etree_CommentBase.__pyx_base = *__pyx_vtabptr_4lxml_5etree__Comment;
  __pyx_type_4lxml_5etree_CommentBase.tp_base = __pyx_ptype_4lxml_5etree__Comment;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_CommentBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_CommentBase.tp_dict, __pyx_vtabptr_4lxml_5etree_CommentBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "CommentBase", (PyObject *)&__pyx_type_4lxml_5etree_CommentBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_CommentBase = &__pyx_type_4lxml_5etree_CommentBase;
  __pyx_vtabptr_4lxml_5etree_PIBase = &__pyx_vtable_4lxml_5etree_PIBase;
  __pyx_vtable_4lxml_5etree_PIBase.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ProcessingInstruction;
  __pyx_type_4lxml_5etree_PIBase.tp_base = __pyx_ptype_4lxml_5etree__ProcessingInstruction;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_PIBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PIBase.tp_dict, __pyx_vtabptr_4lxml_5etree_PIBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "PIBase", (PyObject *)&__pyx_type_4lxml_5etree_PIBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_PIBase = &__pyx_type_4lxml_5etree_PIBase;
  __pyx_vtabptr_4lxml_5etree_EntityBase = &__pyx_vtable_4lxml_5etree_EntityBase;
  __pyx_vtable_4lxml_5etree_EntityBase.__pyx_base = *__pyx_vtabptr_4lxml_5etree__Entity;
  __pyx_type_4lxml_5etree_EntityBase.tp_base = __pyx_ptype_4lxml_5etree__Entity;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_EntityBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_EntityBase.tp_dict, __pyx_vtabptr_4lxml_5etree_EntityBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "EntityBase", (PyObject *)&__pyx_type_4lxml_5etree_EntityBase) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_EntityBase = &__pyx_type_4lxml_5etree_EntityBase;
  if (PyType_Ready(&LxmlElementClassLookupType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementClassLookup", (PyObject *)&LxmlElementClassLookupType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementClassLookup = &LxmlElementClassLookupType;
  __pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup = &__pyx_vtable_4lxml_5etree_FallbackElementClassLookup;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_FallbackElementClassLookup._setFallback = (void (*)(struct LxmlFallbackElementClassLookup *, struct LxmlElementClassLookup *))__pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_FallbackElementClassLookup._setFallback = (void(*)(void))__pyx_f_4lxml_5etree_26FallbackElementClassLookup__setFallback;
  #endif
  LxmlFallbackElementClassLookupType.tp_base = __pyx_ptype_4lxml_5etree_ElementClassLookup;
  if (PyType_Ready(&LxmlFallbackElementClassLookupType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(LxmlFallbackElementClassLookupType.tp_dict, __pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "FallbackElementClassLookup", (PyObject *)&LxmlFallbackElementClassLookupType) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_FallbackElementClassLookup = &LxmlFallbackElementClassLookupType;
  __pyx_type_4lxml_5etree_ElementDefaultClassLookup.tp_base = __pyx_ptype_4lxml_5etree_ElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementDefaultClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementDefaultClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_ElementDefaultClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementDefaultClassLookup = &__pyx_type_4lxml_5etree_ElementDefaultClassLookup;
  __pyx_vtabptr_4lxml_5etree_AttributeBasedElementClassLookup = &__pyx_vtable_4lxml_5etree_AttributeBasedElementClassLookup;
  __pyx_vtable_4lxml_5etree_AttributeBasedElementClassLookup.__pyx_base = *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  __pyx_type_4lxml_5etree_AttributeBasedElementClassLookup.tp_base = __pyx_ptype_4lxml_5etree_FallbackElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_AttributeBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_AttributeBasedElementClassLookup.tp_dict, __pyx_vtabptr_4lxml_5etree_AttributeBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "AttributeBasedElementClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_AttributeBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_AttributeBasedElementClassLookup = &__pyx_type_4lxml_5etree_AttributeBasedElementClassLookup;
  __pyx_vtabptr_4lxml_5etree_ParserBasedElementClassLookup = &__pyx_vtable_4lxml_5etree_ParserBasedElementClassLookup;
  __pyx_vtable_4lxml_5etree_ParserBasedElementClassLookup.__pyx_base = *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  __pyx_type_4lxml_5etree_ParserBasedElementClassLookup.tp_base = __pyx_ptype_4lxml_5etree_FallbackElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ParserBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ParserBasedElementClassLookup.tp_dict, __pyx_vtabptr_4lxml_5etree_ParserBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ParserBasedElementClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_ParserBasedElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ParserBasedElementClassLookup = &__pyx_type_4lxml_5etree_ParserBasedElementClassLookup;
  __pyx_vtabptr_4lxml_5etree_CustomElementClassLookup = &__pyx_vtable_4lxml_5etree_CustomElementClassLookup;
  __pyx_vtable_4lxml_5etree_CustomElementClassLookup.__pyx_base = *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  __pyx_type_4lxml_5etree_CustomElementClassLookup.tp_base = __pyx_ptype_4lxml_5etree_FallbackElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_CustomElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_CustomElementClassLookup.tp_dict, __pyx_vtabptr_4lxml_5etree_CustomElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "CustomElementClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_CustomElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_CustomElementClassLookup = &__pyx_type_4lxml_5etree_CustomElementClassLookup;
  __pyx_vtabptr_4lxml_5etree_PythonElementClassLookup = &__pyx_vtable_4lxml_5etree_PythonElementClassLookup;
  __pyx_vtable_4lxml_5etree_PythonElementClassLookup.__pyx_base = *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  __pyx_type_4lxml_5etree_PythonElementClassLookup.tp_base = __pyx_ptype_4lxml_5etree_FallbackElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_PythonElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PythonElementClassLookup.tp_dict, __pyx_vtabptr_4lxml_5etree_PythonElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "PythonElementClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_PythonElementClassLookup) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_PythonElementClassLookup = &__pyx_type_4lxml_5etree_PythonElementClassLookup;
  __pyx_vtabptr_4lxml_5etree__NamespaceRegistry = &__pyx_vtable_4lxml_5etree__NamespaceRegistry;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__NamespaceRegistry._get = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *, PyObject *))__pyx_f_4lxml_5etree_18_NamespaceRegistry__get;
  __pyx_vtable_4lxml_5etree__NamespaceRegistry._getForString = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__NamespaceRegistry *, char *))__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__NamespaceRegistry._get = (void(*)(void))__pyx_f_4lxml_5etree_18_NamespaceRegistry__get;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__NamespaceRegistry._getForString = (void(*)(void))__pyx_f_4lxml_5etree_18_NamespaceRegistry__getForString;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__NamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__NamespaceRegistry.tp_dict, __pyx_vtabptr_4lxml_5etree__NamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_NamespaceRegistry", (PyObject *)&__pyx_type_4lxml_5etree__NamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__NamespaceRegistry = &__pyx_type_4lxml_5etree__NamespaceRegistry;
  __pyx_vtabptr_4lxml_5etree__ClassNamespaceRegistry = &__pyx_vtable_4lxml_5etree__ClassNamespaceRegistry;
  __pyx_vtable_4lxml_5etree__ClassNamespaceRegistry.__pyx_base = *__pyx_vtabptr_4lxml_5etree__NamespaceRegistry;
  __pyx_type_4lxml_5etree__ClassNamespaceRegistry.tp_base = __pyx_ptype_4lxml_5etree__NamespaceRegistry;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ClassNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ClassNamespaceRegistry.tp_dict, __pyx_vtabptr_4lxml_5etree__ClassNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ClassNamespaceRegistry", (PyObject *)&__pyx_type_4lxml_5etree__ClassNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ClassNamespaceRegistry = &__pyx_type_4lxml_5etree__ClassNamespaceRegistry;
  __pyx_vtabptr_4lxml_5etree_ElementNamespaceClassLookup = &__pyx_vtable_4lxml_5etree_ElementNamespaceClassLookup;
  __pyx_vtable_4lxml_5etree_ElementNamespaceClassLookup.__pyx_base = *__pyx_vtabptr_4lxml_5etree_FallbackElementClassLookup;
  __pyx_type_4lxml_5etree_ElementNamespaceClassLookup.tp_base = __pyx_ptype_4lxml_5etree_FallbackElementClassLookup;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementNamespaceClassLookup) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementNamespaceClassLookup.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementNamespaceClassLookup) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ElementNamespaceClassLookup", (PyObject *)&__pyx_type_4lxml_5etree_ElementNamespaceClassLookup) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ElementNamespaceClassLookup = &__pyx_type_4lxml_5etree_ElementNamespaceClassLookup;
  __pyx_vtabptr_4lxml_5etree__FunctionNamespaceRegistry = &__pyx_vtable_4lxml_5etree__FunctionNamespaceRegistry;
  __pyx_vtable_4lxml_5etree__FunctionNamespaceRegistry.__pyx_base = *__pyx_vtabptr_4lxml_5etree__NamespaceRegistry;
  __pyx_type_4lxml_5etree__FunctionNamespaceRegistry.tp_base = __pyx_ptype_4lxml_5etree__NamespaceRegistry;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__FunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FunctionNamespaceRegistry.tp_dict, __pyx_vtabptr_4lxml_5etree__FunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_FunctionNamespaceRegistry", (PyObject *)&__pyx_type_4lxml_5etree__FunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__FunctionNamespaceRegistry = &__pyx_type_4lxml_5etree__FunctionNamespaceRegistry;
  __pyx_vtabptr_4lxml_5etree__XPathFunctionNamespaceRegistry = &__pyx_vtable_4lxml_5etree__XPathFunctionNamespaceRegistry;
  __pyx_vtable_4lxml_5etree__XPathFunctionNamespaceRegistry.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FunctionNamespaceRegistry;
  __pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry.tp_base = __pyx_ptype_4lxml_5etree__FunctionNamespaceRegistry;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry.tp_dict, __pyx_vtabptr_4lxml_5etree__XPathFunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XPathFunctionNamespaceRegistry", (PyObject *)&__pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XPathFunctionNamespaceRegistry = &__pyx_type_4lxml_5etree__XPathFunctionNamespaceRegistry;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__InputDocument) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_InputDocument", (PyObject *)&__pyx_type_4lxml_5etree__InputDocument) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__InputDocument = &__pyx_type_4lxml_5etree__InputDocument;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_Resolver) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Resolver", (PyObject *)&__pyx_type_4lxml_5etree_Resolver) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_Resolver = &__pyx_type_4lxml_5etree_Resolver;
  __pyx_vtabptr_4lxml_5etree__ResolverRegistry = &__pyx_vtable_4lxml_5etree__ResolverRegistry;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ResolverRegistry._copy = (struct __pyx_obj_4lxml_5etree__ResolverRegistry *(*)(struct __pyx_obj_4lxml_5etree__ResolverRegistry *))__pyx_f_4lxml_5etree_17_ResolverRegistry__copy;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ResolverRegistry._copy = (void(*)(void))__pyx_f_4lxml_5etree_17_ResolverRegistry__copy;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ResolverRegistry) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ResolverRegistry.tp_dict, __pyx_vtabptr_4lxml_5etree__ResolverRegistry) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ResolverRegistry", (PyObject *)&__pyx_type_4lxml_5etree__ResolverRegistry) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ResolverRegistry = &__pyx_type_4lxml_5etree__ResolverRegistry;
  __pyx_vtabptr_4lxml_5etree__ResolverContext = &__pyx_vtable_4lxml_5etree__ResolverContext;
  __pyx_vtable_4lxml_5etree__ResolverContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ExceptionContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ResolverContext.__pyx_base.clear = (void (*)(struct __pyx_obj_4lxml_5etree__ExceptionContext *))__pyx_f_4lxml_5etree_16_ResolverContext_clear;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ResolverContext.__pyx_base.clear = (void(*)(void))__pyx_f_4lxml_5etree_16_ResolverContext_clear;
  #endif
  __pyx_type_4lxml_5etree__ResolverContext.tp_base = __pyx_ptype_4lxml_5etree__ExceptionContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ResolverContext) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ResolverContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ResolverContext) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ResolverContext", (PyObject *)&__pyx_type_4lxml_5etree__ResolverContext) < 0) {__pyx_filename = __pyx_f[11]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ResolverContext = &__pyx_type_4lxml_5etree__ResolverContext;
  __pyx_vtabptr_4lxml_5etree__ParserContext = &__pyx_vtable_4lxml_5etree__ParserContext;
  __pyx_vtable_4lxml_5etree__ParserContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ResolverContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ParserContext._copy = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_14_ParserContext__copy;
  __pyx_vtable_4lxml_5etree__ParserContext._initParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_14_ParserContext__initParserContext;
  __pyx_vtable_4lxml_5etree__ParserContext._resetParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_14_ParserContext__resetParserContext;
  __pyx_vtable_4lxml_5etree__ParserContext.prepare = (int (*)(struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_14_ParserContext_prepare;
  __pyx_vtable_4lxml_5etree__ParserContext.cleanup = (int (*)(struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_14_ParserContext_cleanup;
  __pyx_vtable_4lxml_5etree__ParserContext._handleParseResult = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult;
  __pyx_vtable_4lxml_5etree__ParserContext._handleParseResultDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext._copy = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext__copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext._initParserContext = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext__initParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext._resetParserContext = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext__resetParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext.prepare = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext_prepare;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext.cleanup = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext_cleanup;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext._handleParseResult = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResult;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserContext._handleParseResultDoc = (void(*)(void))__pyx_f_4lxml_5etree_14_ParserContext__handleParseResultDoc;
  #endif
  __pyx_type_4lxml_5etree__ParserContext.tp_base = __pyx_ptype_4lxml_5etree__ResolverContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ParserContext", (PyObject *)&__pyx_type_4lxml_5etree__ParserContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ParserContext = &__pyx_type_4lxml_5etree__ParserContext;
  __pyx_vtabptr_4lxml_5etree__SaxParserContext = &__pyx_vtable_4lxml_5etree__SaxParserContext;
  __pyx_vtable_4lxml_5etree__SaxParserContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ParserContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__SaxParserContext.__pyx_base._initParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext;
  __pyx_vtable_4lxml_5etree__SaxParserContext._setSaxParserTarget = (void (*)(struct __pyx_obj_4lxml_5etree__SaxParserContext *, struct __pyx_obj_4lxml_5etree__SaxParserTarget *))__pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget;
  __pyx_vtable_4lxml_5etree__SaxParserContext._handleSaxException = (void (*)(struct __pyx_obj_4lxml_5etree__SaxParserContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserContext.__pyx_base._initParserContext = (void(*)(void))__pyx_f_4lxml_5etree_17_SaxParserContext__initParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserContext._setSaxParserTarget = (void(*)(void))__pyx_f_4lxml_5etree_17_SaxParserContext__setSaxParserTarget;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserContext._handleSaxException = (void(*)(void))__pyx_f_4lxml_5etree_17_SaxParserContext__handleSaxException;
  #endif
  __pyx_type_4lxml_5etree__SaxParserContext.tp_base = __pyx_ptype_4lxml_5etree__ParserContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__SaxParserContext) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__SaxParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__SaxParserContext) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_SaxParserContext", (PyObject *)&__pyx_type_4lxml_5etree__SaxParserContext) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__SaxParserContext = &__pyx_type_4lxml_5etree__SaxParserContext;
  __pyx_vtabptr_4lxml_5etree__TargetParserContext = &__pyx_vtable_4lxml_5etree__TargetParserContext;
  __pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__SaxParserContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._copy = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_20_TargetParserContext__copy;
  __pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._handleParseResult = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult;
  __pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._handleParseResultDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__ParserContext *, struct __pyx_obj_4lxml_5etree__BaseParser *, xmlDoc *, PyObject *))__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc;
  __pyx_vtable_4lxml_5etree__TargetParserContext._setTarget = (int (*)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, PyObject *))__pyx_f_4lxml_5etree_20_TargetParserContext__setTarget;
  __pyx_vtable_4lxml_5etree__TargetParserContext._cleanupTargetParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__TargetParserContext *, xmlDoc *))__pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._copy = (void(*)(void))__pyx_f_4lxml_5etree_20_TargetParserContext__copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._handleParseResult = (void(*)(void))__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TargetParserContext.__pyx_base.__pyx_base._handleParseResultDoc = (void(*)(void))__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TargetParserContext._setTarget = (void(*)(void))__pyx_f_4lxml_5etree_20_TargetParserContext__setTarget;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__TargetParserContext._cleanupTargetParserContext = (void(*)(void))__pyx_f_4lxml_5etree_20_TargetParserContext__cleanupTargetParserContext;
  #endif
  __pyx_type_4lxml_5etree__TargetParserContext.tp_base = __pyx_ptype_4lxml_5etree__SaxParserContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__TargetParserContext) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__TargetParserContext.tp_dict, __pyx_vtabptr_4lxml_5etree__TargetParserContext) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_TargetParserContext", (PyObject *)&__pyx_type_4lxml_5etree__TargetParserContext) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__TargetParserContext = &__pyx_type_4lxml_5etree__TargetParserContext;
  __pyx_vtabptr_4lxml_5etree__ParserSchemaValidationContext = &__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.copy = (struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *(*)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy;
  __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.inject_default_attributes = (void (*)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *, xmlDoc *))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes;
  __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.connect = (int (*)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect;
  __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.disconnect = (void (*)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect;
  __pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.isvalid = (int (*)(struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.copy = (void(*)(void))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.inject_default_attributes = (void(*)(void))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_inject_default_attributes;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.connect = (void(*)(void))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.disconnect = (void(*)(void))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_disconnect;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserSchemaValidationContext.isvalid = (void(*)(void))__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_isvalid;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserSchemaValidationContext) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserSchemaValidationContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserSchemaValidationContext) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ParserSchemaValidationContext", (PyObject *)&__pyx_type_4lxml_5etree__ParserSchemaValidationContext) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ParserSchemaValidationContext = &__pyx_type_4lxml_5etree__ParserSchemaValidationContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_Validator", (PyObject *)&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__Validator = &__pyx_type_4lxml_5etree__Validator;
  __pyx_vtabptr_4lxml_5etree_XMLSchema = &__pyx_vtable_4lxml_5etree_XMLSchema;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_XMLSchema._newSaxValidator = (struct __pyx_obj_4lxml_5etree__ParserSchemaValidationContext *(*)(struct __pyx_obj_4lxml_5etree_XMLSchema *, int))__pyx_f_4lxml_5etree_9XMLSchema__newSaxValidator;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_XMLSchema._newSaxValidator = (void(*)(void))__pyx_f_4lxml_5etree_9XMLSchema__newSaxValidator;
  #endif
  __pyx_type_4lxml_5etree_XMLSchema.tp_base = __pyx_ptype_4lxml_5etree__Validator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLSchema) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLSchema.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLSchema) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XMLSchema", (PyObject *)&__pyx_type_4lxml_5etree_XMLSchema) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XMLSchema = &__pyx_type_4lxml_5etree_XMLSchema;
  __pyx_vtabptr_4lxml_5etree__ParserDictionaryContext = &__pyx_vtable_4lxml_5etree__ParserDictionaryContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.initMainParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContext;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext._findThreadParserContext = (struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *(*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.setDefaultParser = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.getDefaultParser = (struct __pyx_obj_4lxml_5etree__BaseParser *(*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext._getThreadDict = (xmlDict *(*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDict *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.initThreadDictRef = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDict **))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.initParserDict = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.initXPathParserDict = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlXPathContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.initDocDict = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, xmlDoc *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.findImpliedContext = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_findImpliedContext;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.pushImpliedContextFromParser = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__BaseParser *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFromParser;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.pushImpliedContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *, struct __pyx_obj_4lxml_5etree__ParserContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext;
  __pyx_vtable_4lxml_5etree__ParserDictionaryContext.popImpliedContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.initMainParserContext = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initMainParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext._findThreadParserContext = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext__findThreadParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.setDefaultParser = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_setDefaultParser;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.getDefaultParser = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext._getThreadDict = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext__getThreadDict;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.initThreadDictRef = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initThreadDictRef;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.initParserDict = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initParserDict;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.initXPathParserDict = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initXPathParserDict;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.initDocDict = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_initDocDict;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.findImpliedContext = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_findImpliedContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.pushImpliedContextFromParser = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContextFromParser;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.pushImpliedContext = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_pushImpliedContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ParserDictionaryContext.popImpliedContext = (void(*)(void))__pyx_f_4lxml_5etree_24_ParserDictionaryContext_popImpliedContext;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ParserDictionaryContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ParserDictionaryContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ParserDictionaryContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ParserDictionaryContext", (PyObject *)&__pyx_type_4lxml_5etree__ParserDictionaryContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ParserDictionaryContext = &__pyx_type_4lxml_5etree__ParserDictionaryContext;
  __pyx_vtabptr_4lxml_5etree__FileReaderContext = &__pyx_vtable_4lxml_5etree__FileReaderContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__FileReaderContext._createParserInputBuffer = (xmlParserInputBuffer *(*)(struct __pyx_obj_4lxml_5etree__FileReaderContext *))__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInputBuffer;
  __pyx_vtable_4lxml_5etree__FileReaderContext._createParserInput = (xmlParserInput *(*)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput;
  __pyx_vtable_4lxml_5etree__FileReaderContext._readDtd = (xmlDtd *(*)(struct __pyx_obj_4lxml_5etree__FileReaderContext *))__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd;
  __pyx_vtable_4lxml_5etree__FileReaderContext._readDoc = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, xmlParserCtxt *, int))__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc;
  __pyx_vtable_4lxml_5etree__FileReaderContext.copyToBuffer = (int (*)(struct __pyx_obj_4lxml_5etree__FileReaderContext *, char *, int))__pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FileReaderContext._createParserInputBuffer = (void(*)(void))__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInputBuffer;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FileReaderContext._createParserInput = (void(*)(void))__pyx_f_4lxml_5etree_18_FileReaderContext__createParserInput;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FileReaderContext._readDtd = (void(*)(void))__pyx_f_4lxml_5etree_18_FileReaderContext__readDtd;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FileReaderContext._readDoc = (void(*)(void))__pyx_f_4lxml_5etree_18_FileReaderContext__readDoc;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FileReaderContext.copyToBuffer = (void(*)(void))__pyx_f_4lxml_5etree_18_FileReaderContext_copyToBuffer;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__FileReaderContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FileReaderContext.tp_dict, __pyx_vtabptr_4lxml_5etree__FileReaderContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_FileReaderContext", (PyObject *)&__pyx_type_4lxml_5etree__FileReaderContext) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__FileReaderContext = &__pyx_type_4lxml_5etree__FileReaderContext;
  __pyx_vtabptr_4lxml_5etree__FeedParser = &__pyx_vtable_4lxml_5etree__FeedParser;
  __pyx_vtable_4lxml_5etree__FeedParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseParser;
  __pyx_type_4lxml_5etree__FeedParser.tp_base = __pyx_ptype_4lxml_5etree__BaseParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FeedParser.tp_dict, __pyx_vtabptr_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_FeedParser", (PyObject *)&__pyx_type_4lxml_5etree__FeedParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__FeedParser = &__pyx_type_4lxml_5etree__FeedParser;
  __pyx_vtabptr_4lxml_5etree_XMLParser = &__pyx_vtable_4lxml_5etree_XMLParser;
  __pyx_vtable_4lxml_5etree_XMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
  __pyx_type_4lxml_5etree_XMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XMLParser", (PyObject *)&__pyx_type_4lxml_5etree_XMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XMLParser = &__pyx_type_4lxml_5etree_XMLParser;
  __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser = &__pyx_vtable_4lxml_5etree_ETCompatXMLParser;
  __pyx_vtable_4lxml_5etree_ETCompatXMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XMLParser;
  __pyx_type_4lxml_5etree_ETCompatXMLParser.tp_base = __pyx_ptype_4lxml_5etree_XMLParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETCompatXMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ETCompatXMLParser", (PyObject *)&__pyx_type_4lxml_5etree_ETCompatXMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ETCompatXMLParser = &__pyx_type_4lxml_5etree_ETCompatXMLParser;
  __pyx_vtabptr_4lxml_5etree_HTMLParser = &__pyx_vtable_4lxml_5etree_HTMLParser;
  __pyx_vtable_4lxml_5etree_HTMLParser.__pyx_base = *__pyx_vtabptr_4lxml_5etree__FeedParser;
  __pyx_type_4lxml_5etree_HTMLParser.tp_base = __pyx_ptype_4lxml_5etree__FeedParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_HTMLParser.tp_dict, __pyx_vtabptr_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "HTMLParser", (PyObject *)&__pyx_type_4lxml_5etree_HTMLParser) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_HTMLParser = &__pyx_type_4lxml_5etree_HTMLParser;
  __pyx_vtabptr_4lxml_5etree__SaxParserTarget = &__pyx_vtable_4lxml_5etree__SaxParserTarget;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxStart = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart;
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxEnd = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd;
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxData = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData;
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxDoctype = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype;
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxPi = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi;
  __pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxComment = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxStart = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxStart;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxEnd = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxEnd;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxData = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxData;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxDoctype = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxDoctype;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxPi = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxPi;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__SaxParserTarget._handleSaxComment = (void(*)(void))__pyx_f_4lxml_5etree_16_SaxParserTarget__handleSaxComment;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__SaxParserTarget) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__SaxParserTarget.tp_dict, __pyx_vtabptr_4lxml_5etree__SaxParserTarget) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_SaxParserTarget", (PyObject *)&__pyx_type_4lxml_5etree__SaxParserTarget) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__SaxParserTarget = &__pyx_type_4lxml_5etree__SaxParserTarget;
  __pyx_vtabptr_4lxml_5etree_TreeBuilder = &__pyx_vtable_4lxml_5etree_TreeBuilder;
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base = *__pyx_vtabptr_4lxml_5etree__SaxParserTarget;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxStart = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart;
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxEnd = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd;
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxData = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData;
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxPi = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi;
  __pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxComment = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment;
  __pyx_vtable_4lxml_5etree_TreeBuilder._flush = (int (*)(struct __pyx_obj_4lxml_5etree_TreeBuilder *))__pyx_f_4lxml_5etree_11TreeBuilder__flush;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxStart = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxEnd = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxData = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxPi = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder.__pyx_base._handleSaxComment = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_TreeBuilder._flush = (void(*)(void))__pyx_f_4lxml_5etree_11TreeBuilder__flush;
  #endif
  __pyx_type_4lxml_5etree_TreeBuilder.tp_base = __pyx_ptype_4lxml_5etree__SaxParserTarget;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_TreeBuilder) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_TreeBuilder.tp_dict, __pyx_vtabptr_4lxml_5etree_TreeBuilder) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "TreeBuilder", (PyObject *)&__pyx_type_4lxml_5etree_TreeBuilder) < 0) {__pyx_filename = __pyx_f[12]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_TreeBuilder = &__pyx_type_4lxml_5etree_TreeBuilder;
  __pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget = &__pyx_vtable_4lxml_5etree__PythonSaxParserTarget;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base = *__pyx_vtabptr_4lxml_5etree__SaxParserTarget;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxStart = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxEnd = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxData = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxDoctype = (int (*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxPi = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi;
  __pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxComment = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__SaxParserTarget *, PyObject *))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxStart = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxStart;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxEnd = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxEnd;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxData = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxData;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxDoctype = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxDoctype;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxPi = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxPi;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__PythonSaxParserTarget.__pyx_base._handleSaxComment = (void(*)(void))__pyx_f_4lxml_5etree_22_PythonSaxParserTarget__handleSaxComment;
  #endif
  __pyx_type_4lxml_5etree__PythonSaxParserTarget.tp_base = __pyx_ptype_4lxml_5etree__SaxParserTarget;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__PythonSaxParserTarget) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__PythonSaxParserTarget.tp_dict, __pyx_vtabptr_4lxml_5etree__PythonSaxParserTarget) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_PythonSaxParserTarget", (PyObject *)&__pyx_type_4lxml_5etree__PythonSaxParserTarget) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__PythonSaxParserTarget = &__pyx_type_4lxml_5etree__PythonSaxParserTarget;
  __pyx_vtabptr_4lxml_5etree__FilelikeWriter = &__pyx_vtable_4lxml_5etree__FilelikeWriter;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__FilelikeWriter._createOutputBuffer = (xmlOutputBuffer *(*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, xmlCharEncodingHandler *))__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer;
  __pyx_vtable_4lxml_5etree__FilelikeWriter.write = (int (*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *, char *, int))__pyx_f_4lxml_5etree_15_FilelikeWriter_write;
  __pyx_vtable_4lxml_5etree__FilelikeWriter.close = (int (*)(struct __pyx_obj_4lxml_5etree__FilelikeWriter *))__pyx_f_4lxml_5etree_15_FilelikeWriter_close;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FilelikeWriter._createOutputBuffer = (void(*)(void))__pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FilelikeWriter.write = (void(*)(void))__pyx_f_4lxml_5etree_15_FilelikeWriter_write;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__FilelikeWriter.close = (void(*)(void))__pyx_f_4lxml_5etree_15_FilelikeWriter_close;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__FilelikeWriter) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FilelikeWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__FilelikeWriter) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_FilelikeWriter", (PyObject *)&__pyx_type_4lxml_5etree__FilelikeWriter) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__FilelikeWriter = &__pyx_type_4lxml_5etree__FilelikeWriter;
  __pyx_vtabptr_4lxml_5etree__IterparseContext = &__pyx_vtable_4lxml_5etree__IterparseContext;
  __pyx_vtable_4lxml_5etree__IterparseContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ParserContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__IterparseContext.__pyx_base._initParserContext = (void (*)(struct __pyx_obj_4lxml_5etree__ParserContext *, xmlParserCtxt *))__pyx_f_4lxml_5etree_17_IterparseContext__initParserContext;
  __pyx_vtable_4lxml_5etree__IterparseContext._setEventFilter = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IterparseContext *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_17_IterparseContext__setEventFilter;
  __pyx_vtable_4lxml_5etree__IterparseContext.startNode = (int (*)(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *))__pyx_f_4lxml_5etree_17_IterparseContext_startNode;
  __pyx_vtable_4lxml_5etree__IterparseContext.endNode = (int (*)(struct __pyx_obj_4lxml_5etree__IterparseContext *, xmlNode *))__pyx_f_4lxml_5etree_17_IterparseContext_endNode;
  __pyx_vtable_4lxml_5etree__IterparseContext.pushEvent = (int (*)(struct __pyx_obj_4lxml_5etree__IterparseContext *, PyObject *, xmlNode *))__pyx_f_4lxml_5etree_17_IterparseContext_pushEvent;
  __pyx_vtable_4lxml_5etree__IterparseContext._assureDocGetsFreed = (void (*)(struct __pyx_obj_4lxml_5etree__IterparseContext *))__pyx_f_4lxml_5etree_17_IterparseContext__assureDocGetsFreed;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext.__pyx_base._initParserContext = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext__initParserContext;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext._setEventFilter = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext__setEventFilter;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext.startNode = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext_startNode;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext.endNode = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext_endNode;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext.pushEvent = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext_pushEvent;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IterparseContext._assureDocGetsFreed = (void(*)(void))__pyx_f_4lxml_5etree_17_IterparseContext__assureDocGetsFreed;
  #endif
  __pyx_type_4lxml_5etree__IterparseContext.tp_base = __pyx_ptype_4lxml_5etree__ParserContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__IterparseContext) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IterparseContext.tp_dict, __pyx_vtabptr_4lxml_5etree__IterparseContext) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_IterparseContext", (PyObject *)&__pyx_type_4lxml_5etree__IterparseContext) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__IterparseContext = &__pyx_type_4lxml_5etree__IterparseContext;
  __pyx_vtabptr_4lxml_5etree_iterparse = &__pyx_vtable_4lxml_5etree_iterparse;
  __pyx_vtable_4lxml_5etree_iterparse.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseParser;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_iterparse.__pyx_base._createContext = (struct __pyx_obj_4lxml_5etree__ParserContext *(*)(struct __pyx_obj_4lxml_5etree__BaseParser *, PyObject *))__pyx_f_4lxml_5etree_9iterparse__createContext;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_iterparse.__pyx_base._createContext = (void(*)(void))__pyx_f_4lxml_5etree_9iterparse__createContext;
  #endif
  __pyx_type_4lxml_5etree_iterparse.tp_base = __pyx_ptype_4lxml_5etree__BaseParser;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_iterparse) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_iterparse.tp_dict, __pyx_vtabptr_4lxml_5etree_iterparse) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "iterparse", (PyObject *)&__pyx_type_4lxml_5etree_iterparse) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_iterparse = &__pyx_type_4lxml_5etree_iterparse;
  __pyx_vtabptr_4lxml_5etree_iterwalk = &__pyx_vtable_4lxml_5etree_iterwalk;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_iterwalk._setTagFilter = (void (*)(struct __pyx_obj_4lxml_5etree_iterwalk *, PyObject *))__pyx_f_4lxml_5etree_8iterwalk__setTagFilter;
  __pyx_vtable_4lxml_5etree_iterwalk._start_node = (int (*)(struct __pyx_obj_4lxml_5etree_iterwalk *, struct LxmlElement *))__pyx_f_4lxml_5etree_8iterwalk__start_node;
  __pyx_vtable_4lxml_5etree_iterwalk._end_node = (struct LxmlElement *(*)(struct __pyx_obj_4lxml_5etree_iterwalk *))__pyx_f_4lxml_5etree_8iterwalk__end_node;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_iterwalk._setTagFilter = (void(*)(void))__pyx_f_4lxml_5etree_8iterwalk__setTagFilter;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_iterwalk._start_node = (void(*)(void))__pyx_f_4lxml_5etree_8iterwalk__start_node;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_iterwalk._end_node = (void(*)(void))__pyx_f_4lxml_5etree_8iterwalk__end_node;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree_iterwalk) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_iterwalk.tp_dict, __pyx_vtabptr_4lxml_5etree_iterwalk) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "iterwalk", (PyObject *)&__pyx_type_4lxml_5etree_iterwalk) < 0) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_iterwalk = &__pyx_type_4lxml_5etree_iterwalk;
  __pyx_vtabptr_4lxml_5etree__IDDict = &__pyx_vtable_4lxml_5etree__IDDict;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__IDDict._build_keys = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IDDict *))__pyx_f_4lxml_5etree_7_IDDict__build_keys;
  __pyx_vtable_4lxml_5etree__IDDict._build_items = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IDDict *))__pyx_f_4lxml_5etree_7_IDDict__build_items;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IDDict._build_keys = (void(*)(void))__pyx_f_4lxml_5etree_7_IDDict__build_keys;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__IDDict._build_items = (void(*)(void))__pyx_f_4lxml_5etree_7_IDDict__build_items;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__IDDict) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IDDict.tp_dict, __pyx_vtabptr_4lxml_5etree__IDDict) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_IDDict", (PyObject *)&__pyx_type_4lxml_5etree__IDDict) < 0) {__pyx_filename = __pyx_f[15]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__IDDict = &__pyx_type_4lxml_5etree__IDDict;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XInclude) < 0) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XInclude", (PyObject *)&__pyx_type_4lxml_5etree_XInclude) < 0) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XInclude = &__pyx_type_4lxml_5etree_XInclude;
  __pyx_vtabptr_4lxml_5etree__ExsltRegExp = &__pyx_vtable_4lxml_5etree__ExsltRegExp;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__ExsltRegExp._make_string = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, PyObject *))__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string;
  __pyx_vtable_4lxml_5etree__ExsltRegExp._compile = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_12_ExsltRegExp__compile;
  __pyx_vtable_4lxml_5etree__ExsltRegExp._register_in_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ExsltRegExp *, struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExsltRegExp._make_string = (void(*)(void))__pyx_f_4lxml_5etree_12_ExsltRegExp__make_string;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExsltRegExp._compile = (void(*)(void))__pyx_f_4lxml_5etree_12_ExsltRegExp__compile;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__ExsltRegExp._register_in_context = (void(*)(void))__pyx_f_4lxml_5etree_12_ExsltRegExp__register_in_context;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ExsltRegExp) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ExsltRegExp.tp_dict, __pyx_vtabptr_4lxml_5etree__ExsltRegExp) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ExsltRegExp", (PyObject *)&__pyx_type_4lxml_5etree__ExsltRegExp) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ExsltRegExp = &__pyx_type_4lxml_5etree__ExsltRegExp;
  __pyx_vtabptr_4lxml_5etree__BaseContext = &__pyx_vtable_4lxml_5etree__BaseContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__BaseContext._copy = (struct __pyx_obj_4lxml_5etree__BaseContext *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext__copy;
  __pyx_vtable_4lxml_5etree__BaseContext._to_utf = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext__to_utf;
  __pyx_vtable_4lxml_5etree__BaseContext._set_xpath_context = (void (*)(struct __pyx_obj_4lxml_5etree__BaseContext *, xmlXPathContext *))__pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context;
  __pyx_vtable_4lxml_5etree__BaseContext._register_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, struct LxmlDocument *))__pyx_f_4lxml_5etree_12_BaseContext__register_context;
  __pyx_vtable_4lxml_5etree__BaseContext._cleanup_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context;
  __pyx_vtable_4lxml_5etree__BaseContext._release_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext__release_context;
  __pyx_vtable_4lxml_5etree__BaseContext.addNamespace = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext_addNamespace;
  __pyx_vtable_4lxml_5etree__BaseContext.registerNamespace = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace;
  __pyx_vtable_4lxml_5etree__BaseContext.registerLocalNamespaces = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces;
  __pyx_vtable_4lxml_5etree__BaseContext.registerGlobalNamespaces = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces;
  __pyx_vtable_4lxml_5etree__BaseContext.unregisterGlobalNamespaces = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces;
  __pyx_vtable_4lxml_5etree__BaseContext._unregisterNamespace = (void (*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace;
  __pyx_vtable_4lxml_5etree__BaseContext._addLocalExtensionFunction = (void (*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction;
  __pyx_vtable_4lxml_5etree__BaseContext.registerGlobalFunctions = (void (*)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function))__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions;
  __pyx_vtable_4lxml_5etree__BaseContext.registerLocalFunctions = (void (*)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function))__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions;
  __pyx_vtable_4lxml_5etree__BaseContext.unregisterAllFunctions = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function))__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions;
  __pyx_vtable_4lxml_5etree__BaseContext.unregisterGlobalFunctions = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, void *, __pyx_t_4lxml_5etree__register_function))__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions;
  __pyx_vtable_4lxml_5etree__BaseContext._find_cached_function = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, char *, char *))__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function;
  __pyx_vtable_4lxml_5etree__BaseContext._release_temp_refs = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs;
  __pyx_vtable_4lxml_5etree__BaseContext._hold = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, PyObject *))__pyx_f_4lxml_5etree_12_BaseContext__hold;
  __pyx_vtable_4lxml_5etree__BaseContext._findDocumentForNode = (struct LxmlDocument *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *, xmlNode *))__pyx_f_4lxml_5etree_12_BaseContext__findDocumentForNode;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._copy = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._to_utf = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__to_utf;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._set_xpath_context = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._register_context = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__register_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._cleanup_context = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__cleanup_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._release_context = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__release_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.addNamespace = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_addNamespace;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.registerNamespace = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_registerNamespace;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.registerLocalNamespaces = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_registerLocalNamespaces;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.registerGlobalNamespaces = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalNamespaces;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.unregisterGlobalNamespaces = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalNamespaces;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._unregisterNamespace = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__unregisterNamespace;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._addLocalExtensionFunction = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__addLocalExtensionFunction;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.registerGlobalFunctions = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_registerGlobalFunctions;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.registerLocalFunctions = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_registerLocalFunctions;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.unregisterAllFunctions = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_unregisterAllFunctions;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext.unregisterGlobalFunctions = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext_unregisterGlobalFunctions;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._find_cached_function = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._release_temp_refs = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__release_temp_refs;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._hold = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__hold;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__BaseContext._findDocumentForNode = (void(*)(void))__pyx_f_4lxml_5etree_12_BaseContext__findDocumentForNode;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseContext.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_BaseContext", (PyObject *)&__pyx_type_4lxml_5etree__BaseContext) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__BaseContext = &__pyx_type_4lxml_5etree__BaseContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_ptype_4lxml_6python_unicode = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "str", sizeof(PyUnicodeObject), 1); if (unlikely(!__pyx_ptype_4lxml_6python_unicode)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #else
  __pyx_ptype_4lxml_6python_unicode = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "unicode", sizeof(PyUnicodeObject), 1); if (unlikely(!__pyx_ptype_4lxml_6python_unicode)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  __pyx_type_4lxml_5etree__ElementUnicodeResult.tp_base = __pyx_ptype_4lxml_6python_unicode;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__ElementUnicodeResult) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_ElementUnicodeResult", (PyObject *)&__pyx_type_4lxml_5etree__ElementUnicodeResult) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__ElementUnicodeResult = &__pyx_type_4lxml_5etree__ElementUnicodeResult;
  __pyx_vtabptr_4lxml_5etree__XPathContext = &__pyx_vtable_4lxml_5etree__XPathContext;
  __pyx_vtable_4lxml_5etree__XPathContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__XPathContext.set_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathContext *, xmlXPathContext *))__pyx_f_4lxml_5etree_13_XPathContext_set_context;
  __pyx_vtable_4lxml_5etree__XPathContext.register_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathContext *, struct LxmlDocument *))__pyx_f_4lxml_5etree_13_XPathContext_register_context;
  __pyx_vtable_4lxml_5etree__XPathContext.unregister_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathContext *))__pyx_f_4lxml_5etree_13_XPathContext_unregister_context;
  __pyx_vtable_4lxml_5etree__XPathContext.registerVariables = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *))__pyx_f_4lxml_5etree_13_XPathContext_registerVariables;
  __pyx_vtable_4lxml_5etree__XPathContext.registerVariable = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_XPathContext_registerVariable;
  __pyx_vtable_4lxml_5etree__XPathContext._registerVariable = (void (*)(struct __pyx_obj_4lxml_5etree__XPathContext *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_XPathContext__registerVariable;
  __pyx_vtable_4lxml_5etree__XPathContext._setupDict = (void (*)(struct __pyx_obj_4lxml_5etree__XPathContext *, xmlXPathContext *))__pyx_f_4lxml_5etree_13_XPathContext__setupDict;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext.set_context = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext_set_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext.register_context = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext_register_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext.unregister_context = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext_unregister_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext.registerVariables = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext_registerVariables;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext.registerVariable = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext_registerVariable;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext._registerVariable = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext__registerVariable;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathContext._setupDict = (void(*)(void))__pyx_f_4lxml_5etree_13_XPathContext__setupDict;
  #endif
  __pyx_type_4lxml_5etree__XPathContext.tp_base = __pyx_ptype_4lxml_5etree__BaseContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XPathContext) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XPathContext.tp_dict, __pyx_vtabptr_4lxml_5etree__XPathContext) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XPathContext", (PyObject *)&__pyx_type_4lxml_5etree__XPathContext) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XPathContext = &__pyx_type_4lxml_5etree__XPathContext;
  __pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase = &__pyx_vtable_4lxml_5etree__XPathEvaluatorBase;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase.set_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, xmlXPathContext *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._checkAbsolutePath = (int (*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, char *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._lock = (int (*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._unlock = (void (*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._raise_parse_error = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_parse_error;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._raise_eval_error = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_eval_error;
  __pyx_vtable_4lxml_5etree__XPathEvaluatorBase._handle_result = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XPathEvaluatorBase *, xmlXPathObject *, struct LxmlDocument *))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase.set_context = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase_set_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._checkAbsolutePath = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__checkAbsolutePath;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._lock = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__lock;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._unlock = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__unlock;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._raise_parse_error = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_parse_error;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._raise_eval_error = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__raise_eval_error;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XPathEvaluatorBase._handle_result = (void(*)(void))__pyx_f_4lxml_5etree_19_XPathEvaluatorBase__handle_result;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XPathEvaluatorBase) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XPathEvaluatorBase.tp_dict, __pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XPathEvaluatorBase", (PyObject *)&__pyx_type_4lxml_5etree__XPathEvaluatorBase) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XPathEvaluatorBase = &__pyx_type_4lxml_5etree__XPathEvaluatorBase;
  __pyx_vtabptr_4lxml_5etree_XPathElementEvaluator = &__pyx_vtable_4lxml_5etree_XPathElementEvaluator;
  __pyx_vtable_4lxml_5etree_XPathElementEvaluator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase;
  __pyx_type_4lxml_5etree_XPathElementEvaluator.tp_base = __pyx_ptype_4lxml_5etree__XPathEvaluatorBase;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XPathElementEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XPathElementEvaluator.tp_dict, __pyx_vtabptr_4lxml_5etree_XPathElementEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XPathElementEvaluator", (PyObject *)&__pyx_type_4lxml_5etree_XPathElementEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XPathElementEvaluator = &__pyx_type_4lxml_5etree_XPathElementEvaluator;
  __pyx_vtabptr_4lxml_5etree_XPathDocumentEvaluator = &__pyx_vtable_4lxml_5etree_XPathDocumentEvaluator;
  __pyx_vtable_4lxml_5etree_XPathDocumentEvaluator.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XPathElementEvaluator;
  __pyx_type_4lxml_5etree_XPathDocumentEvaluator.tp_base = __pyx_ptype_4lxml_5etree_XPathElementEvaluator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XPathDocumentEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XPathDocumentEvaluator.tp_dict, __pyx_vtabptr_4lxml_5etree_XPathDocumentEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XPathDocumentEvaluator", (PyObject *)&__pyx_type_4lxml_5etree_XPathDocumentEvaluator) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XPathDocumentEvaluator = &__pyx_type_4lxml_5etree_XPathDocumentEvaluator;
  __pyx_vtabptr_4lxml_5etree_XPath = &__pyx_vtable_4lxml_5etree_XPath;
  __pyx_vtable_4lxml_5etree_XPath.__pyx_base = *__pyx_vtabptr_4lxml_5etree__XPathEvaluatorBase;
  __pyx_type_4lxml_5etree_XPath.tp_base = __pyx_ptype_4lxml_5etree__XPathEvaluatorBase;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XPath.tp_dict, __pyx_vtabptr_4lxml_5etree_XPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XPath", (PyObject *)&__pyx_type_4lxml_5etree_XPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XPath = &__pyx_type_4lxml_5etree_XPath;
  __pyx_vtabptr_4lxml_5etree_ETXPath = &__pyx_vtable_4lxml_5etree_ETXPath;
  __pyx_vtable_4lxml_5etree_ETXPath.__pyx_base = *__pyx_vtabptr_4lxml_5etree_XPath;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_ETXPath._nsextract_path = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_ETXPath *, PyObject *))__pyx_f_4lxml_5etree_7ETXPath__nsextract_path;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_ETXPath._nsextract_path = (void(*)(void))__pyx_f_4lxml_5etree_7ETXPath__nsextract_path;
  #endif
  __pyx_type_4lxml_5etree_ETXPath.tp_base = __pyx_ptype_4lxml_5etree_XPath;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_ETXPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ETXPath.tp_dict, __pyx_vtabptr_4lxml_5etree_ETXPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "ETXPath", (PyObject *)&__pyx_type_4lxml_5etree_ETXPath) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_ETXPath = &__pyx_type_4lxml_5etree_ETXPath;
  __pyx_vtabptr_4lxml_5etree__XSLTResolverContext = &__pyx_vtable_4lxml_5etree__XSLTResolverContext;
  __pyx_vtable_4lxml_5etree__XSLTResolverContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ResolverContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__XSLTResolverContext._copy = (struct __pyx_obj_4lxml_5etree__XSLTResolverContext *(*)(struct __pyx_obj_4lxml_5etree__XSLTResolverContext *))__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XSLTResolverContext._copy = (void(*)(void))__pyx_f_4lxml_5etree_20_XSLTResolverContext__copy;
  #endif
  __pyx_type_4lxml_5etree__XSLTResolverContext.tp_base = __pyx_ptype_4lxml_5etree__ResolverContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XSLTResolverContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XSLTResolverContext.tp_dict, __pyx_vtabptr_4lxml_5etree__XSLTResolverContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XSLTResolverContext", (PyObject *)&__pyx_type_4lxml_5etree__XSLTResolverContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XSLTResolverContext = &__pyx_type_4lxml_5etree__XSLTResolverContext;
  __pyx_vtabptr_4lxml_5etree_XSLTAccessControl = &__pyx_vtable_4lxml_5etree_XSLTAccessControl;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_XSLTAccessControl._setAccess = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltSecurityOption, PyObject *))__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess;
  __pyx_vtable_4lxml_5etree_XSLTAccessControl._register_in_context = (void (*)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltTransformContext *))__pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context;
  __pyx_vtable_4lxml_5etree_XSLTAccessControl._optval = (PyObject *(*)(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltSecurityOption))__pyx_f_4lxml_5etree_17XSLTAccessControl__optval;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_XSLTAccessControl._setAccess = (void(*)(void))__pyx_f_4lxml_5etree_17XSLTAccessControl__setAccess;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_XSLTAccessControl._register_in_context = (void(*)(void))__pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_XSLTAccessControl._optval = (void(*)(void))__pyx_f_4lxml_5etree_17XSLTAccessControl__optval;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XSLTAccessControl) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XSLTAccessControl.tp_dict, __pyx_vtabptr_4lxml_5etree_XSLTAccessControl) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XSLTAccessControl", (PyObject *)&__pyx_type_4lxml_5etree_XSLTAccessControl) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XSLTAccessControl = &__pyx_type_4lxml_5etree_XSLTAccessControl;
  __pyx_vtabptr_4lxml_5etree__XSLTContext = &__pyx_vtable_4lxml_5etree__XSLTContext;
  __pyx_vtable_4lxml_5etree__XSLTContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseContext;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__XSLTContext.__pyx_base._copy = (struct __pyx_obj_4lxml_5etree__BaseContext *(*)(struct __pyx_obj_4lxml_5etree__BaseContext *))__pyx_f_4lxml_5etree_12_XSLTContext__copy;
  __pyx_vtable_4lxml_5etree__XSLTContext.register_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XSLTContext *, xsltTransformContext *, struct LxmlDocument *))__pyx_f_4lxml_5etree_12_XSLTContext_register_context;
  __pyx_vtable_4lxml_5etree__XSLTContext.free_context = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XSLTContext *))__pyx_f_4lxml_5etree_12_XSLTContext_free_context;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XSLTContext.__pyx_base._copy = (void(*)(void))__pyx_f_4lxml_5etree_12_XSLTContext__copy;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XSLTContext.register_context = (void(*)(void))__pyx_f_4lxml_5etree_12_XSLTContext_register_context;
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XSLTContext.free_context = (void(*)(void))__pyx_f_4lxml_5etree_12_XSLTContext_free_context;
  #endif
  __pyx_type_4lxml_5etree__XSLTContext.tp_base = __pyx_ptype_4lxml_5etree__BaseContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XSLTContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XSLTContext.tp_dict, __pyx_vtabptr_4lxml_5etree__XSLTContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XSLTContext", (PyObject *)&__pyx_type_4lxml_5etree__XSLTContext) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XSLTContext = &__pyx_type_4lxml_5etree__XSLTContext;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XSLTQuotedStringParam) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XSLTQuotedStringParam", (PyObject *)&__pyx_type_4lxml_5etree__XSLTQuotedStringParam) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XSLTQuotedStringParam = &__pyx_type_4lxml_5etree__XSLTQuotedStringParam;
  __pyx_vtabptr_4lxml_5etree_XSLT = &__pyx_vtable_4lxml_5etree_XSLT;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree_XSLT._run_transform = (xmlDoc *(*)(struct __pyx_obj_4lxml_5etree_XSLT *, xmlDoc *, PyObject *, struct __pyx_obj_4lxml_5etree__XSLTContext *, xsltTransformContext *))__pyx_f_4lxml_5etree_4XSLT__run_transform;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree_XSLT._run_transform = (void(*)(void))__pyx_f_4lxml_5etree_4XSLT__run_transform;
  #endif
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XSLT) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_XSLT.tp_dict, __pyx_vtabptr_4lxml_5etree_XSLT) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XSLT", (PyObject *)&__pyx_type_4lxml_5etree_XSLT) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XSLT = &__pyx_type_4lxml_5etree_XSLT;
  __pyx_vtabptr_4lxml_5etree__XSLTResultTree = &__pyx_vtable_4lxml_5etree__XSLTResultTree;
  __pyx_vtable_4lxml_5etree__XSLTResultTree.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementTree;
  #if PY_MAJOR_VERSION >= 3
  __pyx_vtable_4lxml_5etree__XSLTResultTree._saveToStringAndSize = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__XSLTResultTree *, char **, int *))__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize;
  #else
  *(void(**)(void))&__pyx_vtable_4lxml_5etree__XSLTResultTree._saveToStringAndSize = (void(*)(void))__pyx_f_4lxml_5etree_15_XSLTResultTree__saveToStringAndSize;
  #endif
  __pyx_type_4lxml_5etree__XSLTResultTree.tp_base = __pyx_ptype_4lxml_5etree__ElementTree;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XSLTResultTree) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XSLTResultTree.tp_dict, __pyx_vtabptr_4lxml_5etree__XSLTResultTree) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XSLTResultTree", (PyObject *)&__pyx_type_4lxml_5etree__XSLTResultTree) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XSLTResultTree = &__pyx_type_4lxml_5etree__XSLTResultTree;
  __pyx_vtabptr_4lxml_5etree__XSLTProcessingInstruction = &__pyx_vtable_4lxml_5etree__XSLTProcessingInstruction;
  __pyx_vtable_4lxml_5etree__XSLTProcessingInstruction.__pyx_base = *__pyx_vtabptr_4lxml_5etree_PIBase;
  __pyx_type_4lxml_5etree__XSLTProcessingInstruction.tp_base = __pyx_ptype_4lxml_5etree_PIBase;
  if (PyType_Ready(&__pyx_type_4lxml_5etree__XSLTProcessingInstruction) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__XSLTProcessingInstruction.tp_dict, __pyx_vtabptr_4lxml_5etree__XSLTProcessingInstruction) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "_XSLTProcessingInstruction", (PyObject *)&__pyx_type_4lxml_5etree__XSLTProcessingInstruction) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree__XSLTProcessingInstruction = &__pyx_type_4lxml_5etree__XSLTProcessingInstruction;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_XSLTExtension) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "XSLTExtension", (PyObject *)&__pyx_type_4lxml_5etree_XSLTExtension) < 0) {__pyx_filename = __pyx_f[19]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_XSLTExtension = &__pyx_type_4lxml_5etree_XSLTExtension;
  __pyx_type_4lxml_5etree_DTD.tp_base = __pyx_ptype_4lxml_5etree__Validator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_DTD) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "DTD", (PyObject *)&__pyx_type_4lxml_5etree_DTD) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_DTD = &__pyx_type_4lxml_5etree_DTD;
  __pyx_type_4lxml_5etree_RelaxNG.tp_base = __pyx_ptype_4lxml_5etree__Validator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_RelaxNG) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "RelaxNG", (PyObject *)&__pyx_type_4lxml_5etree_RelaxNG) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_RelaxNG = &__pyx_type_4lxml_5etree_RelaxNG;
  __pyx_type_4lxml_5etree_Schematron.tp_base = __pyx_ptype_4lxml_5etree__Validator;
  if (PyType_Ready(&__pyx_type_4lxml_5etree_Schematron) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__Pyx_SetAttrString(__pyx_m, "Schematron", (PyObject *)&__pyx_type_4lxml_5etree_Schematron) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_4lxml_5etree_Schematron = &__pyx_type_4lxml_5etree_Schematron;
  /*--- Type import code ---*/
  __pyx_ptype_4lxml_6python_slice = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "slice", sizeof(PySliceObject), 0); if (unlikely(!__pyx_ptype_4lxml_6python_slice)) {__pyx_filename = __pyx_f[25]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":5
 * """
 * 
 * __docformat__ = u"restructuredtext en"             # <<<<<<<<<<<<<<
 * 
 * cimport tree, python, config
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____docformat__, ((PyObject *)__pyx_kp_u_383)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":14
 * cimport cstd
 * 
 * try:             # <<<<<<<<<<<<<<
 *     import __builtin__
 * except ImportError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":15
 * 
 * try:
 *     import __builtin__             # <<<<<<<<<<<<<<
 * except ImportError:
 *     # Python 3
 */
      __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s____builtin__), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s____builtin__, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L9_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":16
 * try:
 *     import __builtin__
 * except ImportError:             # <<<<<<<<<<<<<<
 *     # Python 3
 *     import builtins as __builtin__
 */
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":18
 * except ImportError:
 *     # Python 3
 *     import builtins as __builtin__             # <<<<<<<<<<<<<<
 * 
 * cdef object _unicode
 */
      __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__builtins), 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      if (PyObject_SetAttr(__pyx_m, __pyx_n_s____builtin__, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L3_exception_handled;
    }
    __pyx_L4_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L9_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":21
 * 
 * cdef object _unicode
 * try:             # <<<<<<<<<<<<<<
 *     _unicode = __builtin__.unicode
 * except AttributeError:
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":22
 * cdef object _unicode
 * try:
 *     _unicode = __builtin__.unicode             # <<<<<<<<<<<<<<
 * except AttributeError:
 *     # Python 3
 */
      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s____builtin__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_v_4lxml_5etree__unicode);
      __Pyx_DECREF(__pyx_v_4lxml_5etree__unicode);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_v_4lxml_5etree__unicode = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L19_try_end;
    __pyx_L12_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":23
 * try:
 *     _unicode = __builtin__.unicode
 * except AttributeError:             # <<<<<<<<<<<<<<
 *     # Python 3
 *     _unicode = __builtin__.str
 */
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree");
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":25
 * except AttributeError:
 *     # Python 3
 *     _unicode = __builtin__.str             # <<<<<<<<<<<<<<
 * 
 * del __builtin__
 */
      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s____builtin__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__str); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_v_4lxml_5etree__unicode);
      __Pyx_DECREF(__pyx_v_4lxml_5etree__unicode);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_v_4lxml_5etree__unicode = __pyx_t_6;
      __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L13_exception_handled;
    }
    __pyx_L14_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L13_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L19_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":27
 *     _unicode = __builtin__.str
 * 
 * del __builtin__             # <<<<<<<<<<<<<<
 * 
 * cdef object os_path_abspath
 */
  if (__Pyx_DelAttrString(__pyx_m, "__builtin__") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":30
 * 
 * cdef object os_path_abspath
 * from os.path import abspath as os_path_abspath             # <<<<<<<<<<<<<<
 * 
 * cdef object BytesIO, StringIO
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__abspath));
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__abspath));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__abspath));
  __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s_384), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__abspath); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_os_path_abspath);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_os_path_abspath);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree_os_path_abspath = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":33
 * 
 * cdef object BytesIO, StringIO
 * try:             # <<<<<<<<<<<<<<
 *     from io import BytesIO, StringIO
 * except (ImportError, AttributeError):
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":34
 * cdef object BytesIO, StringIO
 * try:
 *     from io import BytesIO, StringIO             # <<<<<<<<<<<<<<
 * except (ImportError, AttributeError):
 *     from StringIO import StringIO, StringIO as BytesIO
 */
      __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__BytesIO));
      PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s__BytesIO));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__BytesIO));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__StringIO));
      PyList_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__StringIO));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__StringIO));
      __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__io), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__BytesIO); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_4lxml_5etree_BytesIO);
      __Pyx_DECREF(__pyx_v_4lxml_5etree_BytesIO);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_v_4lxml_5etree_BytesIO = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__StringIO); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_4lxml_5etree_StringIO);
      __Pyx_DECREF(__pyx_v_4lxml_5etree_StringIO);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_v_4lxml_5etree_StringIO = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L29_try_end;
    __pyx_L22_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":35
 * try:
 *     from io import BytesIO, StringIO
 * except (ImportError, AttributeError):             # <<<<<<<<<<<<<<
 *     from StringIO import StringIO, StringIO as BytesIO
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_builtin_ImportError);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_ImportError);
    __Pyx_GIVEREF(__pyx_builtin_ImportError);
    __Pyx_INCREF(__pyx_builtin_AttributeError);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_builtin_AttributeError);
    __Pyx_GIVEREF(__pyx_builtin_AttributeError);
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree");
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_3);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":36
 *     from io import BytesIO, StringIO
 * except (ImportError, AttributeError):
 *     from StringIO import StringIO, StringIO as BytesIO             # <<<<<<<<<<<<<<
 * 
 * cdef object _elementpath
 */
      __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__StringIO));
      PyList_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_n_s__StringIO));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__StringIO));
      __Pyx_INCREF(((PyObject *)__pyx_n_s__StringIO));
      PyList_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_n_s__StringIO));
      __Pyx_GIVEREF(((PyObject *)__pyx_n_s__StringIO));
      __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__StringIO), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__StringIO); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_v_4lxml_5etree_StringIO);
      __Pyx_DECREF(__pyx_v_4lxml_5etree_StringIO);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_v_4lxml_5etree_StringIO = __pyx_t_6;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__StringIO); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L24_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_v_4lxml_5etree_BytesIO);
      __Pyx_DECREF(__pyx_v_4lxml_5etree_BytesIO);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_v_4lxml_5etree_BytesIO = __pyx_t_6;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L23_exception_handled;
    }
    __pyx_L24_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L23_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L29_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":39
 * 
 * cdef object _elementpath
 * import _elementpath             # <<<<<<<<<<<<<<
 * 
 * cdef object sys
 */
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s___elementpath), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__elementpath);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__elementpath);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree__elementpath = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":42
 * 
 * cdef object sys
 * import sys             # <<<<<<<<<<<<<<
 * 
 * cdef object re
 */
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_sys);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_sys);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree_sys = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":45
 * 
 * cdef object re
 * import re             # <<<<<<<<<<<<<<
 * 
 * cdef object gzip
 */
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__re), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_re);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_re);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree_re = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":48
 * 
 * cdef object gzip
 * import gzip             # <<<<<<<<<<<<<<
 * 
 * cdef object ITER_EMPTY
 */
  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__gzip), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_gzip);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_gzip);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree_gzip = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":51
 * 
 * cdef object ITER_EMPTY
 * ITER_EMPTY = iter(())             # <<<<<<<<<<<<<<
 * 
 * cdef object EMPTY_READ_ONLY_DICT
 */
  __pyx_t_3 = PyObject_GetIter(((PyObject *)__pyx_empty_tuple)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree_ITER_EMPTY = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":54
 * 
 * cdef object EMPTY_READ_ONLY_DICT
 * EMPTY_READ_ONLY_DICT = python.PyDictProxy_New({})             # <<<<<<<<<<<<<<
 * 
 * # the rules
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  __pyx_t_4 = PyDictProxy_New(((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree_EMPTY_READ_ONLY_DICT = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":70
 * 
 * # make the compiled-in debug state publicly available
 * DEBUG = __DEBUG             # <<<<<<<<<<<<<<
 * 
 * # global per-thread setup
 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":73
 * 
 * # global per-thread setup
 * tree.xmlThrDefIndentTreeOutput(1)             # <<<<<<<<<<<<<<
 * tree.xmlThrDefLineNumbersDefaultValue(1)
 * 
 */
  xmlThrDefIndentTreeOutput(1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":74
 * # global per-thread setup
 * tree.xmlThrDefIndentTreeOutput(1)
 * tree.xmlThrDefLineNumbersDefaultValue(1)             # <<<<<<<<<<<<<<
 * 
 * _initThreadLogging()
 */
  xmlThrDefLineNumbersDefaultValue(1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":76
 * tree.xmlThrDefLineNumbersDefaultValue(1)
 * 
 * _initThreadLogging()             # <<<<<<<<<<<<<<
 * 
 * # initialize parser (and threading)
 */
  __pyx_f_4lxml_5etree__initThreadLogging();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":79
 * 
 * # initialize parser (and threading)
 * xmlparser.xmlInitParser()             # <<<<<<<<<<<<<<
 * 
 * # filename encoding
 */
  xmlInitParser();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":83
 * # filename encoding
 * cdef object _FILENAME_ENCODING
 * _FILENAME_ENCODING = sys.getfilesystemencoding()             # <<<<<<<<<<<<<<
 * if _FILENAME_ENCODING is None:
 *     _FILENAME_ENCODING = sys.getdefaultencoding()
 */
  __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_385); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_v_4lxml_5etree__FILENAME_ENCODING = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":84
 * cdef object _FILENAME_ENCODING
 * _FILENAME_ENCODING = sys.getfilesystemencoding()
 * if _FILENAME_ENCODING is None:             # <<<<<<<<<<<<<<
 *     _FILENAME_ENCODING = sys.getdefaultencoding()
 * if _FILENAME_ENCODING is None:
 */
  __pyx_t_7 = (__pyx_v_4lxml_5etree__FILENAME_ENCODING == Py_None);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":85
 * _FILENAME_ENCODING = sys.getfilesystemencoding()
 * if _FILENAME_ENCODING is None:
 *     _FILENAME_ENCODING = sys.getdefaultencoding()             # <<<<<<<<<<<<<<
 * if _FILENAME_ENCODING is None:
 *     _FILENAME_ENCODING = 'ascii'
 */
    __pyx_t_3 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s__getdefaultencoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_DECREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_v_4lxml_5etree__FILENAME_ENCODING = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L32;
  }
  __pyx_L32:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":86
 * if _FILENAME_ENCODING is None:
 *     _FILENAME_ENCODING = sys.getdefaultencoding()
 * if _FILENAME_ENCODING is None:             # <<<<<<<<<<<<<<
 *     _FILENAME_ENCODING = 'ascii'
 * else:
 */
  __pyx_t_7 = (__pyx_v_4lxml_5etree__FILENAME_ENCODING == Py_None);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":87
 *     _FILENAME_ENCODING = sys.getdefaultencoding()
 * if _FILENAME_ENCODING is None:
 *     _FILENAME_ENCODING = 'ascii'             # <<<<<<<<<<<<<<
 * else:
 *     _FILENAME_ENCODING = _FILENAME_ENCODING.encode(u"UTF-8")
 */
    __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
    __Pyx_GOTREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_DECREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ascii));
    __pyx_v_4lxml_5etree__FILENAME_ENCODING = ((PyObject *)__pyx_n_s__ascii);
    goto __pyx_L33;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":89
 *     _FILENAME_ENCODING = 'ascii'
 * else:
 *     _FILENAME_ENCODING = _FILENAME_ENCODING.encode(u"UTF-8")             # <<<<<<<<<<<<<<
 * cdef char* _C_FILENAME_ENCODING
 * _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING)
 */
    __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree__FILENAME_ENCODING, __pyx_n_s__encode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_kp_u_20));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_20));
    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_20));
    __pyx_t_1 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_DECREF(__pyx_v_4lxml_5etree__FILENAME_ENCODING);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_v_4lxml_5etree__FILENAME_ENCODING = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L33:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":91
 *     _FILENAME_ENCODING = _FILENAME_ENCODING.encode(u"UTF-8")
 * cdef char* _C_FILENAME_ENCODING
 * _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING)             # <<<<<<<<<<<<<<
 * 
 * # set up some default namespace prefixes
 */
  __pyx_v_4lxml_5etree__C_FILENAME_ENCODING = PyString_AS_STRING(__pyx_v_4lxml_5etree__FILENAME_ENCODING);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":95
 * # set up some default namespace prefixes
 * cdef object _DEFAULT_NAMESPACE_PREFIXES
 * _DEFAULT_NAMESPACE_PREFIXES = {             # <<<<<<<<<<<<<<
 *     "http://www.w3.org/1999/xhtml": "html",
 *     "http://www.w3.org/1999/XSL/Transform": "xsl",
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_386), ((PyObject *)__pyx_n_s__html)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_309), ((PyObject *)__pyx_n_s__xsl)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_387), ((PyObject *)__pyx_n_s__rdf)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_388), ((PyObject *)__pyx_n_s__wsdl)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_341), ((PyObject *)__pyx_n_s__xs)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_389), ((PyObject *)__pyx_n_s__xsi)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_390), ((PyObject *)__pyx_n_s__dc)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_kp_s_391), ((PyObject *)__pyx_n_s__py)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES);
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __pyx_v_4lxml_5etree__DEFAULT_NAMESPACE_PREFIXES = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":110
 * 
 * # Error superclass for ElementTree compatibility
 * class Error(Exception):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_builtin_Exception);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_builtin_Exception);
  __Pyx_GIVEREF(__pyx_builtin_Exception);
  __pyx_t_4 = __Pyx_CreateClass(__pyx_t_3, ((PyObject *)__pyx_t_1), __pyx_n_s__Error, "lxml.etree"); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Error, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":114
 * 
 * # module level superclass for all exceptions
 * class LxmlError(Error):             # <<<<<<<<<<<<<<
 *     u"""Main exception base class for lxml.  All other exceptions inherit from
 *     this one.
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__Error); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_392)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = __Pyx_CreateClass(__pyx_t_3, ((PyObject *)__pyx_t_1), __pyx_n_s__LxmlError, "lxml.etree"); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":118
 *     this one.
 *     """
 *     def __init__(self, message, error_log=None):             # <<<<<<<<<<<<<<
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 */
  __pyx_t_3 = PyCFunction_New(&__pyx_mdef_4lxml_5etree_9LxmlError___init__, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyMethod_New(__pyx_t_3, 0, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyObject_SetAttr(__pyx_t_4, __pyx_n_s____init__, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LxmlError, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":130
 * 
 * cdef object _LxmlError
 * _LxmlError = LxmlError             # <<<<<<<<<<<<<<
 * 
 * cdef object error_super_init
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__LxmlError);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__LxmlError);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree__LxmlError = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":133
 * 
 * cdef object error_super_init
 * error_super_init = Error.__init__             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__Error); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____init__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_error_super_init);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_error_super_init);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree_error_super_init = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":137
 * 
 * # superclass for all syntax errors
 * class LxmlSyntaxError(LxmlError, SyntaxError):             # <<<<<<<<<<<<<<
 *     u"""Base class for all syntax errors.
 *     """
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_builtin_SyntaxError);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_builtin_SyntaxError);
  __Pyx_GIVEREF(__pyx_builtin_SyntaxError);
  __pyx_t_1 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_393)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __Pyx_CreateClass(__pyx_t_5, ((PyObject *)__pyx_t_4), __pyx_n_s__LxmlSyntaxError, "lxml.etree"); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LxmlSyntaxError, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":142
 *     pass
 * 
 * class C14NError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Error during C14N serialisation.
 *     """
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_394)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = __Pyx_CreateClass(__pyx_t_5, ((PyObject *)__pyx_t_4), __pyx_n_s__C14NError, "lxml.etree"); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C14NError, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":179
 * 
 * cdef int _LIBXML_VERSION_INT
 * try:             # <<<<<<<<<<<<<<
 *     _LIBXML_VERSION_INT = int(
 *         re.match(u'[0-9]+', (tree.xmlParserVersion).decode(u"ASCII")).group(0))
 */
  {
    PyObject *__pyx_save_exc_type, *__pyx_save_exc_value, *__pyx_save_exc_tb;
    __Pyx_ExceptionSave(&__pyx_save_exc_type, &__pyx_save_exc_value, &__pyx_save_exc_tb);
    __Pyx_XGOTREF(__pyx_save_exc_type);
    __Pyx_XGOTREF(__pyx_save_exc_value);
    __Pyx_XGOTREF(__pyx_save_exc_tb);
    /*try:*/ {

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":181
 * try:
 *     _LIBXML_VERSION_INT = int(
 *         re.match(u'[0-9]+', (tree.xmlParserVersion).decode(u"ASCII")).group(0))             # <<<<<<<<<<<<<<
 * except Exception:
 *     print u"Unknown libxml2 version: %s" % (tree.xmlParserVersion).decode(u"ASCII")
 */
      __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__match); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = ((PyObject *)PyUnicode_DecodeASCII(xmlParserVersion, strlen(xmlParserVersion), NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(((PyObject *)__pyx_kp_u_395));
      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_395));
      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_395));
      PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_t_1));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__group); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      __pyx_t_4 = PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_4); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L34_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_4lxml_5etree__LIBXML_VERSION_INT = __pyx_t_2;
    }
    __Pyx_XDECREF(__pyx_save_exc_type); __pyx_save_exc_type = 0;
    __Pyx_XDECREF(__pyx_save_exc_value); __pyx_save_exc_value = 0;
    __Pyx_XDECREF(__pyx_save_exc_tb); __pyx_save_exc_tb = 0;
    goto __pyx_L41_try_end;
    __pyx_L34_error:;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":182
 *     _LIBXML_VERSION_INT = int(
 *         re.match(u'[0-9]+', (tree.xmlParserVersion).decode(u"ASCII")).group(0))
 * except Exception:             # <<<<<<<<<<<<<<
 *     print u"Unknown libxml2 version: %s" % (tree.xmlParserVersion).decode(u"ASCII")
 *     _LIBXML_VERSION_INT = 0
 */
    __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
    if (__pyx_t_2) {
      __Pyx_AddTraceback("lxml.etree");
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L36_except_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_5);

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":183
 *         re.match(u'[0-9]+', (tree.xmlParserVersion).decode(u"ASCII")).group(0))
 * except Exception:
 *     print u"Unknown libxml2 version: %s" % (tree.xmlParserVersion).decode(u"ASCII")             # <<<<<<<<<<<<<<
 *     _LIBXML_VERSION_INT = 0
 * 
 */
      __pyx_t_3 = ((PyObject *)PyUnicode_DecodeASCII(xmlParserVersion, strlen(xmlParserVersion), NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L36_except_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_396), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L36_except_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      if (__Pyx_PrintOne(__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L36_except_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":184
 * except Exception:
 *     print u"Unknown libxml2 version: %s" % (tree.xmlParserVersion).decode(u"ASCII")
 *     _LIBXML_VERSION_INT = 0             # <<<<<<<<<<<<<<
 * 
 * LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT)
 */
      __pyx_v_4lxml_5etree__LIBXML_VERSION_INT = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L35_exception_handled;
    }
    __pyx_L36_except_error:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    goto __pyx_L1_error;
    __pyx_L35_exception_handled:;
    __Pyx_XGIVEREF(__pyx_save_exc_type);
    __Pyx_XGIVEREF(__pyx_save_exc_value);
    __Pyx_XGIVEREF(__pyx_save_exc_tb);
    __Pyx_ExceptionReset(__pyx_save_exc_type, __pyx_save_exc_value, __pyx_save_exc_tb);
    __pyx_L41_try_end:;
  }

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":186
 *     _LIBXML_VERSION_INT = 0
 * 
 * LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT)             # <<<<<<<<<<<<<<
 * LIBXML_COMPILED_VERSION = __unpackIntVersion(tree.LIBXML_VERSION)
 * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree___unpackIntVersion(__pyx_v_4lxml_5etree__LIBXML_VERSION_INT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LIBXML_VERSION, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":187
 * 
 * LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT)
 * LIBXML_COMPILED_VERSION = __unpackIntVersion(tree.LIBXML_VERSION)             # <<<<<<<<<<<<<<
 * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)
 * 
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree___unpackIntVersion(LIBXML_VERSION); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_397, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":188
 * LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT)
 * LIBXML_COMPILED_VERSION = __unpackIntVersion(tree.LIBXML_VERSION)
 * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)             # <<<<<<<<<<<<<<
 * 
 * __version__ = (tree.LXML_VERSION_STRING).decode(u"ASCII")
 */
  __pyx_t_5 = __Pyx_PyBytes_FromString(LXML_VERSION_STRING); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_1 = __pyx_f_4lxml_5etree___unpackDottedVersion(((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LXML_VERSION, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":190
 * LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING)
 * 
 * __version__ = (tree.LXML_VERSION_STRING).decode(u"ASCII")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((PyObject *)PyUnicode_DecodeASCII(LXML_VERSION_STRING, strlen(LXML_VERSION_STRING), NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____version__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":551
 * 
 * cdef object __RE_XML_ENCODING
 * __RE_XML_ENCODING = re.compile(             # <<<<<<<<<<<<<<
 *     ur'^(\s*<\?\s*xml[^>]+)\s+encoding\s*=\s*"[^"]*"\s*', re.U)
 * 
 */
  __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":552
 * cdef object __RE_XML_ENCODING
 * __RE_XML_ENCODING = re.compile(
 *     ur'^(\s*<\?\s*xml[^>]+)\s+encoding\s*=\s*"[^"]*"\s*', re.U)             # <<<<<<<<<<<<<<
 * 
 * cdef object __REPLACE_XML_ENCODING
 */
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__U); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_398));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_398));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_398));
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___RE_XML_ENCODING);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___RE_XML_ENCODING);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_v_4lxml_5etree___RE_XML_ENCODING = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":555
 * 
 * cdef object __REPLACE_XML_ENCODING
 * __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub             # <<<<<<<<<<<<<<
 * 
 * cdef object __HAS_XML_ENCODING
 */
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__sub); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_v_4lxml_5etree___REPLACE_XML_ENCODING = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/apihelpers.pxi":558
 * 
 * cdef object __HAS_XML_ENCODING
 * __HAS_XML_ENCODING = __RE_XML_ENCODING.match             # <<<<<<<<<<<<<<
 * 
 * cdef object _stripEncodingDeclaration(object xml_string):
 */
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__match); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_v_4lxml_5etree___HAS_XML_ENCODING = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":438
 * 
 * cdef _BaseErrorLog __GLOBAL_ERROR_LOG
 * __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
 * 
 * cdef _BaseErrorLog _getGlobalErrorLog():
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_int_100);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_100);
  __Pyx_GIVEREF(__pyx_int_100);
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__RotatingErrorLog)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG));
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":592
 * 
 * 
 * class ErrorLevels:             # <<<<<<<<<<<<<<
 *     u"Libxml2 error levels"
 * 
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_399)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4), __pyx_n_s__ErrorLevels, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ErrorLevels, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":595
 *     u"Libxml2 error levels"
 * 
 * class ErrorDomains:             # <<<<<<<<<<<<<<
 *     u"Libxml2 error domains"
 * 
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_400)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4), __pyx_n_s__ErrorDomains, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ErrorDomains, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":598
 *     u"Libxml2 error domains"
 * 
 * class ErrorTypes:             # <<<<<<<<<<<<<<
 *     u"Libxml2 error types"
 * 
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_401)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4), __pyx_n_s__ErrorTypes, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ErrorTypes, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":601
 *     u"Libxml2 error types"
 * 
 * class RelaxNGErrorTypes:             # <<<<<<<<<<<<<<
 *     u"Libxml2 RelaxNG error types"
 * 
 */
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  if (PyDict_SetItemString(((PyObject *)__pyx_t_4), "__doc__", ((PyObject *)__pyx_kp_s_402)) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_4), __pyx_n_s__RelaxNGErrorTypes, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__RelaxNGErrorTypes, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":615
 * 
 * cdef object __ERROR_LEVELS
 * __ERROR_LEVELS = (u"""\             # <<<<<<<<<<<<<<
 * NONE=0
 * WARNING=1
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_403));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_403));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_403));
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___ERROR_LEVELS);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree___ERROR_LEVELS = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":623
 * 
 * cdef object __ERROR_DOMAINS
 * __ERROR_DOMAINS = (u"""\             # <<<<<<<<<<<<<<
 * NONE=0
 * PARSER=1
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_404));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_404));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_404));
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___ERROR_DOMAINS);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree___ERROR_DOMAINS = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":656
 * 
 * cdef object __PARSER_ERROR_TYPES
 * __PARSER_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
 * ERR_OK=0
 * ERR_INTERNAL_ERROR=1
 */
  __pyx_t_4 = PyTuple_New(11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_405));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_405));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_405));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_406));
  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_kp_u_406));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_406));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_407));
  PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_kp_u_407));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_407));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_408));
  PyTuple_SET_ITEM(__pyx_t_4, 3, ((PyObject *)__pyx_kp_u_408));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_408));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_409));
  PyTuple_SET_ITEM(__pyx_t_4, 4, ((PyObject *)__pyx_kp_u_409));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_409));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_410));
  PyTuple_SET_ITEM(__pyx_t_4, 5, ((PyObject *)__pyx_kp_u_410));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_410));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_411));
  PyTuple_SET_ITEM(__pyx_t_4, 6, ((PyObject *)__pyx_kp_u_411));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_411));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_412));
  PyTuple_SET_ITEM(__pyx_t_4, 7, ((PyObject *)__pyx_kp_u_412));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_412));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_413));
  PyTuple_SET_ITEM(__pyx_t_4, 8, ((PyObject *)__pyx_kp_u_413));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_413));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_414));
  PyTuple_SET_ITEM(__pyx_t_4, 9, ((PyObject *)__pyx_kp_u_414));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_414));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_415));
  PyTuple_SET_ITEM(__pyx_t_4, 10, ((PyObject *)__pyx_kp_u_415));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_415));
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree___PARSER_ERROR_TYPES = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":1413
 * 
 * cdef object __RELAXNG_ERROR_TYPES
 * __RELAXNG_ERROR_TYPES = (u"""\             # <<<<<<<<<<<<<<
 * RELAXNG_OK=0
 * RELAXNG_ERR_MEMORY=1
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 1413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_416));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_416));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_416));
  __Pyx_GOTREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
  __Pyx_DECREF(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlerror.pxi":1457
 * # --- END: GENERATED CONSTANTS ---
 * 
 * __initErrorConstants()             # <<<<<<<<<<<<<<
 */
  __pyx_f_4lxml_5etree___initErrorConstants();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":392
 * 
 * cdef object _PREFIX_CACHE
 * _PREFIX_CACHE = __initPrefixCache()             # <<<<<<<<<<<<<<
 * 
 * cdef extern from "etree_defs.h":
 */
  __pyx_t_4 = __pyx_f_4lxml_5etree___initPrefixCache(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__PREFIX_CACHE);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__PREFIX_CACHE);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree__PREFIX_CACHE = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1159
 *         return _elementFactory(self._doc, c_node)
 * 
 *     def itersiblings(self, tag=None, *, preceding=False):             # <<<<<<<<<<<<<<
 *         u"""itersiblings(self, tag=None, preceding=False)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_58 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1192
 *         return ElementDepthFirstIterator(self, tag, inclusive=False)
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         u"""iterchildren(self, tag=None, reversed=False)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_59 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1251
 *         return ElementDepthFirstIterator(self, tag)
 * 
 *     def itertext(self, tag=None, *, with_tail=True):             # <<<<<<<<<<<<<<
 *         u"""itertext(self, tag=None, with_tail=True)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_60 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1309
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,
 *               smart_strings=True, **_variables):             # <<<<<<<<<<<<<<
 *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_61 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1641
 * 
 *     def write(self, file, *, encoding=None, method=u"xml",
 *               pretty_print=False, xml_declaration=None, with_tail=True,             # <<<<<<<<<<<<<<
 *               standalone=None, compression=0):
 *         u"""write(self, file, encoding=None, method="xml",
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_75 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_76 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1811
 * 
 *     def xpath(self, _path, *, namespaces=None, extensions=None,
 *               smart_strings=True, **_variables):             # <<<<<<<<<<<<<<
 *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_80 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1906
 *         XInclude()(self._context_node)
 * 
 *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
 *                    compression=0):
 *         u"""write_c14n(self, file, exclusive=False, with_comments=True,
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_81 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_82 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2161
 *     Iterates over the children of an element.
 *     """
 *     def __init__(self, _Element node not None, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         cdef xmlNode* c_node
 *         self._initTagMatch(tag)
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_84 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2186
 *     You can pass the boolean keyword ``preceding`` to specify the direction.
 *     """
 *     def __init__(self, _Element node not None, tag=None, *, preceding=False):             # <<<<<<<<<<<<<<
 *         self._initTagMatch(tag)
 *         if preceding:
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_85 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2227
 *     cdef _Element _next_node
 *     cdef _Element _top_node
 *     def __init__(self, _Element node not None, tag=None, *, inclusive=True):             # <<<<<<<<<<<<<<
 *         self._top_node  = node
 *         self._next_node = node
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_86 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2293
 *     cdef object _nextEvent
 *     cdef _Element _start_element
 *     def __init__(self, _Element element not None, tag=None, *, with_tail=True):             # <<<<<<<<<<<<<<
 *         if with_tail:
 *             events = (u"start", u"end")
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_87 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2388
 *     return _elementFactory(doc, c_node)
 * 
 * PI = ProcessingInstruction             # <<<<<<<<<<<<<<
 * 
 * cdef class CDATA:
 */
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PI, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2561
 *     return isinstance(element, _Element)
 * 
 * def dump(_Element elem not None, *, pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
 *     u"""dump(elem, pretty_print=True, with_tail=True)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_90 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_91 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2570
 * 
 * def tostring(element_or_tree, *, encoding=None, method=u"xml",
 *              xml_declaration=None, pretty_print=False, with_tail=True,             # <<<<<<<<<<<<<<
 *              standalone=None):
 *     u"""tostring(element_or_tree, encoding=None, method="xml",
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_92 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_93 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2646
 *     return [tostring(element_or_tree, *args, **kwargs)]
 * 
 * def tounicode(element_or_tree, *, method=u"xml", pretty_print=False,             # <<<<<<<<<<<<<<
 *               with_tail=True):
 *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_96 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2647
 * 
 * def tounicode(element_or_tree, *, method=u"xml", pretty_print=False,
 *               with_tail=True):             # <<<<<<<<<<<<<<
 *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
 *                   with_tail=True)
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_97 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/readonlytree.pxi":157
 *         return iter(self.getchildren())
 * 
 *     def iterchildren(self, tag=None, *, reversed=False):             # <<<<<<<<<<<<<<
 *         u"""iterchildren(self, tag=None, reversed=False)
 * 
 */
  __pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[9]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_k_99 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":501
 * # default setup: parser delegation
 * cdef ParserBasedElementClassLookup DEFAULT_ELEMENT_CLASS_LOOKUP
 * DEFAULT_ELEMENT_CLASS_LOOKUP = ParserBasedElementClassLookup()             # <<<<<<<<<<<<<<
 * 
 * set_element_class_lookup(DEFAULT_ELEMENT_CLASS_LOOKUP)
 */
  __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_ParserBasedElementClassLookup)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP = ((struct __pyx_obj_4lxml_5etree_ParserBasedElementClassLookup *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/classlookup.pxi":503
 * DEFAULT_ELEMENT_CLASS_LOOKUP = ParserBasedElementClassLookup()
 * 
 * set_element_class_lookup(DEFAULT_ELEMENT_CLASS_LOOKUP)             # <<<<<<<<<<<<<<
 */
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s_147); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_4lxml_5etree_DEFAULT_ELEMENT_CLASS_LOOKUP));
  __pyx_t_1 = PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":3
 * # module-level API for namespace implementations
 * 
 * class LxmlRegistryError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class of lxml registry errors.
 *     """
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_417)) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_1), __pyx_n_s__LxmlRegistryError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LxmlRegistryError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":8
 *     pass
 * 
 * class NamespaceRegistryError(LxmlRegistryError):             # <<<<<<<<<<<<<<
 *     u"""Error registering a namespace extension.
 *     """
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlRegistryError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_418)) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_1), __pyx_n_s_113, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_113, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/nsclasses.pxi":165
 * 
 * cdef dict __FUNCTION_NAMESPACE_REGISTRIES
 * __FUNCTION_NAMESPACE_REGISTRIES = {}             # <<<<<<<<<<<<<<
 * 
 * def FunctionNamespace(ns_uri):
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[10]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
  __pyx_v_4lxml_5etree___FUNCTION_NAMESPACE_REGISTRIES = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":13
 * cdef class XMLSchema(_Validator)
 * 
 * class ParseError(LxmlSyntaxError):             # <<<<<<<<<<<<<<
 *     u"""Syntax error while parsing an XML document.
 * 
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_419)) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_1), __pyx_n_s__ParseError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ParseError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":20
 *     pass
 * 
 * class XMLSyntaxError(ParseError):             # <<<<<<<<<<<<<<
 *     u"""Syntax error while parsing an XML document.
 *     """
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__ParseError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_420)) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_1), __pyx_n_s__XMLSyntaxError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":23
 *     u"""Syntax error while parsing an XML document.
 *     """
 *     def __init__(self, message, code, line, column):             # <<<<<<<<<<<<<<
 *         if python.PY_VERSION_HEX >= 0x02050000:
 *             # Python >= 2.5 uses new style class exceptions
 */
  __pyx_t_4 = PyCFunction_New(&__pyx_mdef_4lxml_5etree_14XMLSyntaxError___init__, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyMethod_New(__pyx_t_4, 0, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_t_5, __pyx_n_s____init__, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XMLSyntaxError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":33
 * 
 * cdef object _XMLSyntaxError
 * _XMLSyntaxError = XMLSyntaxError             # <<<<<<<<<<<<<<
 * 
 * class ParserError(LxmlError):
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSyntaxError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__XMLSyntaxError);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__XMLSyntaxError);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree__XMLSyntaxError = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":35
 * _XMLSyntaxError = XMLSyntaxError
 * 
 * class ParserError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Internal lxml parser error.
 *     """
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_1), "__doc__", ((PyObject *)__pyx_kp_s_421)) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_6, ((PyObject *)__pyx_t_1), __pyx_n_s__ParserError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ParserError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":182
 * 
 * cdef _ParserDictionaryContext __GLOBAL_PARSER_CONTEXT
 * __GLOBAL_PARSER_CONTEXT = _ParserDictionaryContext()             # <<<<<<<<<<<<<<
 * __GLOBAL_PARSER_CONTEXT.initMainParserContext()
 * 
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ParserDictionaryContext)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT = ((struct __pyx_obj_4lxml_5etree__ParserDictionaryContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":183
 * cdef _ParserDictionaryContext __GLOBAL_PARSER_CONTEXT
 * __GLOBAL_PARSER_CONTEXT = _ParserDictionaryContext()
 * __GLOBAL_PARSER_CONTEXT.initMainParserContext()             # <<<<<<<<<<<<<<
 * 
 * cdef int _checkThreadDict(tree.xmlDict* c_dict):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->initMainParserContext(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":201
 * # name of Python unicode encoding as known to libxml2
 * cdef char* _UNICODE_ENCODING
 * _UNICODE_ENCODING = NULL             # <<<<<<<<<<<<<<
 * 
 * cdef void _setupPythonUnicode():
 */
  __pyx_v_4lxml_5etree__UNICODE_ENCODING = NULL;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":253
 *         return tree.xmlGetCharEncodingName(enc)
 * 
 * _setupPythonUnicode()             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __pyx_f_4lxml_5etree__setupPythonUnicode();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":462
 * 
 * cdef xmlparser.xmlExternalEntityLoader __DEFAULT_ENTITY_LOADER
 * __DEFAULT_ENTITY_LOADER = xmlparser.xmlGetExternalEntityLoader()             # <<<<<<<<<<<<<<
 * 
 * xmlparser.xmlSetExternalEntityLoader(_local_resolver)
 */
  __pyx_v_4lxml_5etree___DEFAULT_ENTITY_LOADER = xmlGetExternalEntityLoader();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":464
 * __DEFAULT_ENTITY_LOADER = xmlparser.xmlGetExternalEntityLoader()
 * 
 * xmlparser.xmlSetExternalEntityLoader(_local_resolver)             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  xmlSetExternalEntityLoader(__pyx_f_4lxml_5etree__local_resolver);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1182
 *     xmlparser.XML_PARSE_NOCDATA |
 *     xmlparser.XML_PARSE_NONET   |
 *     xmlparser.XML_PARSE_COMPACT             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_v_4lxml_5etree__XML_DEFAULT_PARSE_OPTIONS = (((XML_PARSE_NOENT | XML_PARSE_NOCDATA) | XML_PARSE_NONET) | XML_PARSE_COMPACT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1229
 *     apply to the default parser.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_155 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1230
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_156 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_157 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_158 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1231
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,             # <<<<<<<<<<<<<<
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_159 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_160 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1232
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  target=None, compact=True):
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_161 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_162 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_163 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1233
 *                  ns_clean=False, recover=False, XMLSchema schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
 *                  target=None, compact=True):
 *         cdef int parse_options
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_164 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_165 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_166 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1234
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         cdef int parse_options
 *         parse_options = _XML_DEFAULT_PARSE_OPTIONS
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_167 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1282
 *     and thus ignores comments and processing instructions.
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,             # <<<<<<<<<<<<<<
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_168 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1283
 *     """
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
 *                  ns_clean=False, recover=False, schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_169 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_170 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_171 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1284
 *     def __init__(self, *, encoding=None, attribute_defaults=False,
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,             # <<<<<<<<<<<<<<
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_172 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_173 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1285
 *                  dtd_validation=False, load_dtd=False, no_network=True,
 *                  ns_clean=False, recover=False, schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 *                  target=None, compact=True):
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_174 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_175 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_176 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1286
 *                  ns_clean=False, recover=False, schema=None,
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,             # <<<<<<<<<<<<<<
 *                  target=None, compact=True):
 *         XMLParser.__init__(self,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_177 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_178 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_179 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1287
 *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
 *                  remove_comments=True, remove_pis=True, strip_cdata=True,
 *                  target=None, compact=True):             # <<<<<<<<<<<<<<
 *         XMLParser.__init__(self,
 *                            attribute_defaults=attribute_defaults,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_180 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1308
 * 
 * cdef XMLParser __DEFAULT_XML_PARSER
 * __DEFAULT_XML_PARSER = XMLParser()             # <<<<<<<<<<<<<<
 * 
 * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XMLParser)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree___DEFAULT_XML_PARSER = ((struct __pyx_obj_4lxml_5etree_XMLParser *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1310
 * __DEFAULT_XML_PARSER = XMLParser()
 * 
 * __GLOBAL_PARSER_CONTEXT.setDefaultParser(__DEFAULT_XML_PARSER)             # <<<<<<<<<<<<<<
 * 
 * def set_default_parser(_BaseParser parser=None):
 */
  ((struct __pyx_vtabstruct_4lxml_5etree__ParserDictionaryContext *)__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT->__pyx_vtab)->setDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_4lxml_5etree___DEFAULT_XML_PARSER));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1340
 *     htmlparser.HTML_PARSE_RECOVER |
 *     htmlparser.HTML_PARSE_NONET   |
 *     htmlparser.HTML_PARSE_COMPACT             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_v_4lxml_5etree__HTML_DEFAULT_PARSE_OPTIONS = ((HTML_PARSE_RECOVER | HTML_PARSE_NONET) | HTML_PARSE_COMPACT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1375
 *     reasons.
 *     """
 *     def __init__(self, *, encoding=None, remove_blank_text=False,             # <<<<<<<<<<<<<<
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_181 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1376
 *     """
 *     def __init__(self, *, encoding=None, remove_blank_text=False,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,             # <<<<<<<<<<<<<<
 *                  no_network=True, target=None, XMLSchema schema=None,
 *                  recover=True, compact=True):
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_182 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_183 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_184 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1377
 *     def __init__(self, *, encoding=None, remove_blank_text=False,
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,             # <<<<<<<<<<<<<<
 *                  recover=True, compact=True):
 *         cdef int parse_options
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_185 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1378
 *                  remove_comments=False, remove_pis=False, strip_cdata=True,
 *                  no_network=True, target=None, XMLSchema schema=None,
 *                  recover=True, compact=True):             # <<<<<<<<<<<<<<
 *         cdef int parse_options
 *         parse_options = _HTML_DEFAULT_PARSE_OPTIONS
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_186 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_187 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parser.pxi":1395
 * 
 * cdef HTMLParser __DEFAULT_HTML_PARSER
 * __DEFAULT_HTML_PARSER = HTMLParser()             # <<<<<<<<<<<<<<
 * 
 * ############################################################
 */
  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_HTMLParser)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree___DEFAULT_HTML_PARSER = ((struct __pyx_obj_4lxml_5etree_HTMLParser *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":4
 * 
 * cdef object inspect_getargspec
 * from inspect import getargspec as inspect_getargspec             # <<<<<<<<<<<<<<
 * 
 * class _TargetParserResult(Exception):
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__getargspec));
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__getargspec));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__getargspec));
  __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__inspect), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getargspec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree_inspect_getargspec);
  __Pyx_DECREF(__pyx_v_4lxml_5etree_inspect_getargspec);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_v_4lxml_5etree_inspect_getargspec = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":6
 * from inspect import getargspec as inspect_getargspec
 * 
 * class _TargetParserResult(Exception):             # <<<<<<<<<<<<<<
 *     # Admittedly, this is somewhat ugly, but it's the easiest way
 *     # to push the Python level parser result through the parser
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_builtin_Exception);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_Exception);
  __Pyx_GIVEREF(__pyx_builtin_Exception);
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_1, ((PyObject *)__pyx_t_5), __pyx_n_s___TargetParserResult, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/parsertarget.pxi":10
 *     # to push the Python level parser result through the parser
 *     # machinery towards the API level functions
 *     def __init__(self, result):             # <<<<<<<<<<<<<<
 *         self.result = result
 * 
 */
  __pyx_t_1 = PyCFunction_New(&__pyx_mdef_4lxml_5etree_19_TargetParserResult___init__, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyMethod_New(__pyx_t_1, 0, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_t_6, __pyx_n_s____init__, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___TargetParserResult, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[13]; __pyx_lineno = 6; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/serializer.pxi":3
 * # XML serialization and output functions
 * 
 * class SerialisationError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""A libxml2 error that occurred during serialisation.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_423)) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__SerialisationError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SerialisationError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":363
 *     cdef int (*_parse_chunk)(xmlparser.xmlParserCtxt* ctxt,
 *                              char* chunk, int size, int terminate) nogil
 *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
 *                  attribute_defaults=False, dtd_validation=False,
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__end));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_u__end));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__end));
  __pyx_k_224 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":364
 *                              char* chunk, int size, int terminate) nogil
 *     def __init__(self, source, events=(u"end",), *, tag=None,
 *                  attribute_defaults=False, dtd_validation=False,             # <<<<<<<<<<<<<<
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 *                  compact=True, resolve_entities=True, remove_comments=False,
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_225 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_226 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":365
 *     def __init__(self, source, events=(u"end",), *, tag=None,
 *                  attribute_defaults=False, dtd_validation=False,
 *                  load_dtd=False, no_network=True, remove_blank_text=False,             # <<<<<<<<<<<<<<
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_227 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_228 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_229 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":366
 *                  attribute_defaults=False, dtd_validation=False,
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 *                  compact=True, resolve_entities=True, remove_comments=False,             # <<<<<<<<<<<<<<
 *                  remove_pis=False, strip_cdata=True, encoding=None,
 *                  html=False, huge_tree=False, XMLSchema schema=None):
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_230 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_231 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_232 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":367
 *                  load_dtd=False, no_network=True, remove_blank_text=False,
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,             # <<<<<<<<<<<<<<
 *                  html=False, huge_tree=False, XMLSchema schema=None):
 *         cdef _IterparseContext context
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_233 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_234 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":368
 *                  compact=True, resolve_entities=True, remove_comments=False,
 *                  remove_pis=False, strip_cdata=True, encoding=None,
 *                  html=False, huge_tree=False, XMLSchema schema=None):             # <<<<<<<<<<<<<<
 *         cdef _IterparseContext context
 *         cdef char* c_encoding
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_235 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_236 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/iterparse.pxi":543
 *     cdef char*  _tag_name
 * 
 *     def __init__(self, element_or_tree, events=(u"end",), tag=None):             # <<<<<<<<<<<<<<
 *         cdef _Element root
 *         cdef int ns_count
 */
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[14]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_n_u__end));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_u__end));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_u__end));
  __pyx_k_239 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xinclude.pxi":5
 * cimport xinclude
 * 
 * class XIncludeError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Error during XInclude processing.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_424)) < 0) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__XIncludeError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XIncludeError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[16]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":3
 * # support for extension functions in XPath and XSLT
 * 
 * class XPathError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class of all XPath errors.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_425)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__XPathError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XPathError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":8
 *     pass
 * 
 * class XPathEvalError(XPathError):             # <<<<<<<<<<<<<<
 *     u"""Error during XPath evaluation.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_426)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__XPathEvalError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XPathEvalError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":13
 *     pass
 * 
 * class XPathFunctionError(XPathEvalError):             # <<<<<<<<<<<<<<
 *     u"""Internal error looking up an XPath extension function.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathEvalError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_427)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__XPathFunctionError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XPathFunctionError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":18
 *     pass
 * 
 * class XPathResultError(XPathEvalError):             # <<<<<<<<<<<<<<
 *     u"""Error handling an XPath result.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathEvalError); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_428)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_CreateClass(__pyx_t_4, ((PyObject *)__pyx_t_5), __pyx_n_s__XPathResultError, "lxml.etree"); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XPathResultError, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":628
 *         return self._parent
 * 
 * class _ElementStringResult(str):             # <<<<<<<<<<<<<<
 *     # we need to use a Python class here, str cannot be C-subclassed
 *     # in Pyrex/Cython
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)((PyObject*)&PyString_Type)));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)((PyObject*)&PyString_Type)));
  __Pyx_GIVEREF(((PyObject *)((PyObject*)&PyString_Type)));
  __pyx_t_4 = __Pyx_CreateClass(__pyx_t_6, ((PyObject *)__pyx_t_5), __pyx_n_s_264, "lxml.etree"); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/extensions.pxi":631
 *     # we need to use a Python class here, str cannot be C-subclassed
 *     # in Pyrex/Cython
 *     def getparent(self):             # <<<<<<<<<<<<<<
 *         return self._parent
 * 
 */
  __pyx_t_6 = PyCFunction_New(&__pyx_mdef_4lxml_5etree_20_ElementStringResult_getparent, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyMethod_New(__pyx_t_6, 0, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_t_4, __pyx_n_s__getparent, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_264, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":3
 * # XPath evaluation
 * 
 * class XPathSyntaxError(LxmlSyntaxError, XPathError):             # <<<<<<<<<<<<<<
 *     pass
 * 
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__XPathError); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_4 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CreateClass(__pyx_t_6, ((PyObject *)__pyx_t_5), __pyx_n_s__XPathSyntaxError, "lxml.etree"); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XPathSyntaxError, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 3; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":11
 * cdef object _XPATH_SYNTAX_ERRORS
 * _XPATH_SYNTAX_ERRORS = (
 *     xmlerror.XML_XPATH_NUMBER_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,
 *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
 */
  __pyx_t_5 = PyInt_FromLong(XML_XPATH_NUMBER_ERROR); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":12
 * _XPATH_SYNTAX_ERRORS = (
 *     xmlerror.XML_XPATH_NUMBER_ERROR,
 *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
 *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
 */
  __pyx_t_1 = PyInt_FromLong(XML_XPATH_UNFINISHED_LITERAL_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":13
 *     xmlerror.XML_XPATH_NUMBER_ERROR,
 *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,
 *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
 *     xmlerror.XML_XPATH_UNCLOSED_ERROR,
 */
  __pyx_t_6 = PyInt_FromLong(XML_XPATH_VARIABLE_REF_ERROR); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":14
 *     xmlerror.XML_XPATH_UNFINISHED_LITERAL_ERROR,
 *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
 *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_UNCLOSED_ERROR,
 *     xmlerror.XML_XPATH_INVALID_CHAR_ERROR
 */
  __pyx_t_4 = PyInt_FromLong(XML_XPATH_INVALID_PREDICATE_ERROR); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":15
 *     xmlerror.XML_XPATH_VARIABLE_REF_ERROR,
 *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
 *     xmlerror.XML_XPATH_UNCLOSED_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_CHAR_ERROR
 * )
 */
  __pyx_t_3 = PyInt_FromLong(XML_XPATH_UNCLOSED_ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":16
 *     xmlerror.XML_XPATH_INVALID_PREDICATE_ERROR,
 *     xmlerror.XML_XPATH_UNCLOSED_ERROR,
 *     xmlerror.XML_XPATH_INVALID_CHAR_ERROR             # <<<<<<<<<<<<<<
 * )
 * 
 */
  __pyx_t_8 = PyInt_FromLong(XML_XPATH_INVALID_CHAR_ERROR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_5 = 0;
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_4 = 0;
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_v_4lxml_5etree__XPATH_SYNTAX_ERRORS = __pyx_t_9;
  __pyx_t_9 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":21
 * cdef object _XPATH_EVAL_ERRORS
 * _XPATH_EVAL_ERRORS = (
 *     xmlerror.XML_XPATH_UNDEF_VARIABLE_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,
 *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
 */
  __pyx_t_9 = PyInt_FromLong(XML_XPATH_UNDEF_VARIABLE_ERROR); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":22
 * _XPATH_EVAL_ERRORS = (
 *     xmlerror.XML_XPATH_UNDEF_VARIABLE_ERROR,
 *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
 *     xmlerror.XML_XPATH_INVALID_OPERAND,
 */
  __pyx_t_8 = PyInt_FromLong(XML_XPATH_UNDEF_PREFIX_ERROR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":23
 *     xmlerror.XML_XPATH_UNDEF_VARIABLE_ERROR,
 *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,
 *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_OPERAND,
 *     xmlerror.XML_XPATH_INVALID_TYPE,
 */
  __pyx_t_3 = PyInt_FromLong(XML_XPATH_UNKNOWN_FUNC_ERROR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":24
 *     xmlerror.XML_XPATH_UNDEF_PREFIX_ERROR,
 *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
 *     xmlerror.XML_XPATH_INVALID_OPERAND,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_TYPE,
 *     xmlerror.XML_XPATH_INVALID_ARITY,
 */
  __pyx_t_4 = PyInt_FromLong(XML_XPATH_INVALID_OPERAND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":25
 *     xmlerror.XML_XPATH_UNKNOWN_FUNC_ERROR,
 *     xmlerror.XML_XPATH_INVALID_OPERAND,
 *     xmlerror.XML_XPATH_INVALID_TYPE,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_ARITY,
 *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,
 */
  __pyx_t_6 = PyInt_FromLong(XML_XPATH_INVALID_TYPE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":26
 *     xmlerror.XML_XPATH_INVALID_OPERAND,
 *     xmlerror.XML_XPATH_INVALID_TYPE,
 *     xmlerror.XML_XPATH_INVALID_ARITY,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,
 *     xmlerror.XML_XPATH_INVALID_CTXT_POSITION
 */
  __pyx_t_1 = PyInt_FromLong(XML_XPATH_INVALID_ARITY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":27
 *     xmlerror.XML_XPATH_INVALID_TYPE,
 *     xmlerror.XML_XPATH_INVALID_ARITY,
 *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,             # <<<<<<<<<<<<<<
 *     xmlerror.XML_XPATH_INVALID_CTXT_POSITION
 * )
 */
  __pyx_t_5 = PyInt_FromLong(XML_XPATH_INVALID_CTXT_SIZE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":28
 *     xmlerror.XML_XPATH_INVALID_ARITY,
 *     xmlerror.XML_XPATH_INVALID_CTXT_SIZE,
 *     xmlerror.XML_XPATH_INVALID_CTXT_POSITION             # <<<<<<<<<<<<<<
 * )
 * 
 */
  __pyx_t_10 = PyInt_FromLong(XML_XPATH_INVALID_CTXT_POSITION); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyTuple_New(8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_11, 4, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_11, 5, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_11, 6, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_11, 7, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_9 = 0;
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_10 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_v_4lxml_5etree__XPATH_EVAL_ERRORS = __pyx_t_11;
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":97
 * 
 * cdef bint _XPATH_VERSION_WARNING_REQUIRED
 * if _LIBXML_VERSION_INT == 20627:             # <<<<<<<<<<<<<<
 *     _XPATH_VERSION_WARNING_REQUIRED = 1
 * else:
 */
  __pyx_t_7 = (__pyx_v_4lxml_5etree__LIBXML_VERSION_INT == 20627);
  if (__pyx_t_7) {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":98
 * cdef bint _XPATH_VERSION_WARNING_REQUIRED
 * if _LIBXML_VERSION_INT == 20627:
 *     _XPATH_VERSION_WARNING_REQUIRED = 1             # <<<<<<<<<<<<<<
 * else:
 *     _XPATH_VERSION_WARNING_REQUIRED = 0
 */
    __pyx_v_4lxml_5etree__XPATH_VERSION_WARNING_REQUIRED = 1;
    goto __pyx_L44;
  }
  /*else*/ {

    /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":100
 *     _XPATH_VERSION_WARNING_REQUIRED = 1
 * else:
 *     _XPATH_VERSION_WARNING_REQUIRED = 0             # <<<<<<<<<<<<<<
 * 
 * cdef class _XPathEvaluatorBase:
 */
    __pyx_v_4lxml_5etree__XPATH_VERSION_WARNING_REQUIRED = 0;
  }
  __pyx_L44:;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":238
 *     cdef _Element _element
 *     def __init__(self, _Element element not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         cdef int ns_register_status
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_276 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_277 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":309
 *     """
 *     def __init__(self, _ElementTree etree not None, *, namespaces=None,
 *                  extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         XPathElementEvaluator.__init__(
 *             self, etree._context_node, namespaces=namespaces,
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_278 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_279 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":354
 * 
 * def XPathEvaluator(etree_or_element, *, namespaces=None, extensions=None,
 *                    regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *     u"""XPathEvaluator(etree_or_element, namespaces=None, extensions=None, regexp=True, smart_strings=True)
 * 
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_280 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_281 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":394
 * 
 *     def __init__(self, path, *, namespaces=None, extensions=None,
 *                  regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         cdef xpath.xmlXPathContext* xpathCtxt
 *         _XPathEvaluatorBase.__init__(self, namespaces, extensions,
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_282 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_283 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":447
 * cdef object _replace_strings
 * cdef object _find_namespaces
 * _replace_strings = re.compile('("[^"]*")|(\'[^\']*\')').sub             # <<<<<<<<<<<<<<
 * _find_namespaces = re.compile('({[^}]+})').findall
 * 
 */
  __pyx_t_11 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_429));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_kp_s_429));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_429));
  __pyx_t_5 = PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__sub); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__replace_strings);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__replace_strings);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_v_4lxml_5etree__replace_strings = __pyx_t_10;
  __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":448
 * cdef object _find_namespaces
 * _replace_strings = re.compile('("[^"]*")|(\'[^\']*\')').sub
 * _find_namespaces = re.compile('({[^}]+})').findall             # <<<<<<<<<<<<<<
 * 
 * cdef class ETXPath(XPath):
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_430));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_s_430));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_430));
  __pyx_t_11 = PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__findall); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__find_namespaces);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__find_namespaces);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_v_4lxml_5etree__find_namespaces = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xpath.pxi":459
 *     you pass ``smart_strings=False``.
 *     """
 *     def __init__(self, path, *, extensions=None, regexp=True, smart_strings=True):             # <<<<<<<<<<<<<<
 *         path, namespaces = self._nsextract_path(path)
 *         XPath.__init__(self, path, namespaces=namespaces,
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_284 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[17]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_285 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":5
 * cimport xslt
 * 
 * class XSLTError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class of all XSLT errors.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_431)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_5), __pyx_n_s__XSLTError, "lxml.etree"); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XSLTError, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":10
 *     pass
 * 
 * class XSLTParseError(XSLTError):             # <<<<<<<<<<<<<<
 *     u"""Error parsing a stylesheet document.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTError); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_432)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_5), __pyx_n_s__XSLTParseError, "lxml.etree"); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XSLTParseError, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 10; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":15
 *     pass
 * 
 * class XSLTApplyError(XSLTError):             # <<<<<<<<<<<<<<
 *     u"""Error running an XSL transformation.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTError); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_433)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_5), __pyx_n_s__XSLTApplyError, "lxml.etree"); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XSLTApplyError, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":20
 *     pass
 * 
 * class XSLTSaveError(XSLTError):             # <<<<<<<<<<<<<<
 *     u"""Error serialising an XSLT result.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTError); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_434)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_5), __pyx_n_s__XSLTSaveError, "lxml.etree"); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XSLTSaveError, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":25
 *     pass
 * 
 * class XSLTExtensionError(XSLTError):             # <<<<<<<<<<<<<<
 *     u"""Error registering an XSLT extension.
 *     """
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__XSLTError); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_5), "__doc__", ((PyObject *)__pyx_kp_s_435)) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_11 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_5), __pyx_n_s__XSLTExtensionError, "lxml.etree"); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XSLTExtensionError, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":31
 * 
 * # version information
 * LIBXSLT_COMPILED_VERSION = __unpackIntVersion(xslt.LIBXSLT_VERSION)             # <<<<<<<<<<<<<<
 * LIBXSLT_VERSION = __unpackIntVersion(xslt.xsltLibxsltVersion)
 * 
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree___unpackIntVersion(LIBXSLT_VERSION); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_436, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":32
 * # version information
 * LIBXSLT_COMPILED_VERSION = __unpackIntVersion(xslt.LIBXSLT_VERSION)
 * LIBXSLT_VERSION = __unpackIntVersion(xslt.xsltLibxsltVersion)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __pyx_f_4lxml_5etree___unpackIntVersion(xsltLibxsltVersion); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LIBXSLT_VERSION, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":160
 * 
 * cdef xslt.xsltDocLoaderFunc XSLT_DOC_DEFAULT_LOADER
 * XSLT_DOC_DEFAULT_LOADER = xslt.xsltDocDefaultLoader             # <<<<<<<<<<<<<<
 * 
 * xslt.xsltSetLoaderFunc(_xslt_doc_loader)
 */
  __pyx_v_4lxml_5etree_XSLT_DOC_DEFAULT_LOADER = xsltDocDefaultLoader;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":162
 * XSLT_DOC_DEFAULT_LOADER = xslt.xsltDocDefaultLoader
 * 
 * xslt.xsltSetLoaderFunc(_xslt_doc_loader)             # <<<<<<<<<<<<<<
 * 
 * ################################################################################
 */
  xsltSetLoaderFunc(__pyx_f_4lxml_5etree__xslt_doc_loader);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":189
 *     """
 *     cdef xslt.xsltSecurityPrefs* _prefs
 *     def __init__(self, *, read_file=True, write_file=True, create_dir=True,             # <<<<<<<<<<<<<<
 *                  read_network=True, write_network=True):
 *         self._prefs = xslt.xsltNewSecurityPrefs()
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_290 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_291 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_292 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":190
 *     cdef xslt.xsltSecurityPrefs* _prefs
 *     def __init__(self, *, read_file=True, write_file=True, create_dir=True,
 *                  read_network=True, write_network=True):             # <<<<<<<<<<<<<<
 *         self._prefs = xslt.xsltNewSecurityPrefs()
 *         if self._prefs is NULL:
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_293 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_294 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":200
 *         self._setAccess(xslt.XSLT_SECPREF_WRITE_NETWORK, write_network)
 * 
 *     DENY_ALL = XSLTAccessControl(             # <<<<<<<<<<<<<<
 *         read_file=False, write_file=False, create_dir=False,
 *         read_network=False, write_network=False)
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":201
 * 
 *     DENY_ALL = XSLTAccessControl(
 *         read_file=False, write_file=False, create_dir=False,             # <<<<<<<<<<<<<<
 *         read_network=False, write_network=False)
 * 
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__read_file), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__write_file), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__create_dir), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":202
 *     DENY_ALL = XSLTAccessControl(
 *         read_file=False, write_file=False, create_dir=False,
 *         read_network=False, write_network=False)             # <<<<<<<<<<<<<<
 * 
 *     DENY_WRITE = XSLTAccessControl(
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__read_network), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__write_network), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XSLTAccessControl)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLTAccessControl->tp_dict, __pyx_n_s__DENY_ALL, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  PyType_Modified(__pyx_ptype_4lxml_5etree_XSLTAccessControl);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":204
 *         read_network=False, write_network=False)
 * 
 *     DENY_WRITE = XSLTAccessControl(             # <<<<<<<<<<<<<<
 *         read_file=True, write_file=False, create_dir=False,
 *         read_network=True, write_network=False)
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":205
 * 
 *     DENY_WRITE = XSLTAccessControl(
 *         read_file=True, write_file=False, create_dir=False,             # <<<<<<<<<<<<<<
 *         read_network=True, write_network=False)
 * 
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__read_file), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__write_file), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__create_dir), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":206
 *     DENY_WRITE = XSLTAccessControl(
 *         read_file=True, write_file=False, create_dir=False,
 *         read_network=True, write_network=False)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__read_network), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_11, ((PyObject *)__pyx_n_s__write_network), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XSLTAccessControl)), ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_11)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLTAccessControl->tp_dict, __pyx_n_s__DENY_WRITE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_4lxml_5etree_XSLTAccessControl);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":268
 *         NULL)
 * 
 * cdef dict EMPTY_DICT = {}             # <<<<<<<<<<<<<<
 * 
 * cdef class _XSLTContext(_BaseContext):
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree_EMPTY_DICT));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree_EMPTY_DICT));
  __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
  __pyx_v_4lxml_5etree_EMPTY_DICT = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":359
 *     cdef _ErrorLog _error_log
 * 
 *     def __init__(self, xslt_input, *, extensions=None, regexp=True,             # <<<<<<<<<<<<<<
 *                  access_control=None):
 *         cdef xslt.xsltStylesheet* c_style
 */
  __pyx_t_5 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_k_299 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":424
 * 
 *     @classmethod
 *     def strparam(_, strval):             # <<<<<<<<<<<<<<
 *         u"""strparam(strval)
 * 
 */
  __pyx_t_5 = __Pyx_GetName((PyObject *)__pyx_ptype_4lxml_5etree_XSLT, __pyx_n_s__strparam); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_Method_ClassMethod(__pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_XSLT->tp_dict, __pyx_n_s__strparam, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  PyType_Modified(__pyx_ptype_4lxml_5etree_XSLT);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":437
 *         return _XSLTQuotedStringParam(strval)
 * 
 *     def apply(self, _input, *, profile_run=False, **kw):             # <<<<<<<<<<<<<<
 *         u"""apply(self, _input,  profile_run=False, **kw)
 * 
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_303 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":458
 *         return _copyXSLT(self)
 * 
 *     def __call__(self, _input, *, profile_run=False, **kw):             # <<<<<<<<<<<<<<
 *         u"""__call__(self, _input, profile_run=False, **kw)
 * 
 */
  __pyx_t_11 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_k_304 = __pyx_t_11;
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":782
 * # functions like "output" and "write" are a potential security risk, but we
 * # rely on the user to configure XSLTAccessControl as needed
 * xslt.xsltRegisterAllExtras()             # <<<<<<<<<<<<<<
 * 
 * # enable EXSLT support for XSLT
 */
  xsltRegisterAllExtras();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":785
 * 
 * # enable EXSLT support for XSLT
 * xslt.exsltRegisterAll()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  exsltRegisterAll();

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":792
 * 
 * cdef object _FIND_PI_ATTRIBUTES
 * _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*["\']([^"\']+)["\']', re.U).findall             # <<<<<<<<<<<<<<
 * 
 * cdef object _RE_PI_HREF
 */
  __pyx_t_11 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__U); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_437));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_kp_u_437));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_437));
  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__findall); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES = __pyx_t_10;
  __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":795
 * 
 * cdef object _RE_PI_HREF
 * _RE_PI_HREF = re.compile(ur'\s+href\s*=\s*["\']([^"\']+)["\']')             # <<<<<<<<<<<<<<
 * 
 * cdef object _FIND_PI_HREF
 */
  __pyx_t_10 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_438));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_438));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_438));
  __pyx_t_11 = PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__RE_PI_HREF);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__RE_PI_HREF);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_v_4lxml_5etree__RE_PI_HREF = __pyx_t_11;
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":798
 * 
 * cdef object _FIND_PI_HREF
 * _FIND_PI_HREF = _RE_PI_HREF.findall             # <<<<<<<<<<<<<<
 * 
 * cdef object _REPLACE_PI_HREF
 */
  __pyx_t_11 = PyObject_GetAttr(__pyx_v_4lxml_5etree__RE_PI_HREF, __pyx_n_s__findall); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__FIND_PI_HREF);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__FIND_PI_HREF);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_v_4lxml_5etree__FIND_PI_HREF = __pyx_t_11;
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":801
 * 
 * cdef object _REPLACE_PI_HREF
 * _REPLACE_PI_HREF = _RE_PI_HREF.sub             # <<<<<<<<<<<<<<
 * 
 * cdef XPath __findStylesheetByID
 */
  __pyx_t_11 = PyObject_GetAttr(__pyx_v_4lxml_5etree__RE_PI_HREF, __pyx_n_s__sub); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[18]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_GOTREF(__pyx_v_4lxml_5etree__REPLACE_PI_HREF);
  __Pyx_DECREF(__pyx_v_4lxml_5etree__REPLACE_PI_HREF);
  __Pyx_GIVEREF(__pyx_t_11);
  __pyx_v_4lxml_5etree__REPLACE_PI_HREF = __pyx_t_11;
  __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xslt.pxi":804
 * 
 * cdef XPath __findStylesheetByID
 * __findStylesheetByID = None             # <<<<<<<<<<<<<<
 * 
 * cdef _findStylesheetByID(_Document doc, id):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree___findStylesheetByID));
  __Pyx_GIVEREF(Py_None);
  __pyx_v_4lxml_5etree___findStylesheetByID = ((struct __pyx_obj_4lxml_5etree_XPath *)Py_None);

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":2741
 * # Validation
 * 
 * class DocumentInvalid(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Validation error.
 * 
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_439)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__DocumentInvalid, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DocumentInvalid, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":4
 * cimport dtdvalid
 * 
 * class DTDError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class for DTD errors.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_440)) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__DTDError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DTDError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":9
 *     pass
 * 
 * class DTDParseError(DTDError):             # <<<<<<<<<<<<<<
 *     u"""Error while parsing a DTD.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_441)) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__DTDParseError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DTDParseError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/dtd.pxi":14
 *     pass
 * 
 * class DTDValidateError(DTDError):             # <<<<<<<<<<<<<<
 *     u"""Error while validating an XML document with a DTD.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__DTDError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_442)) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__DTDValidateError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DTDValidateError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[20]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":4
 * cimport relaxng
 * 
 * class RelaxNGError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class for RelaxNG errors.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_443)) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__RelaxNGError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__RelaxNGError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":9
 *     pass
 * 
 * class RelaxNGParseError(RelaxNGError):             # <<<<<<<<<<<<<<
 *     u"""Error while parsing an XML document as RelaxNG.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_444)) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__RelaxNGParseError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__RelaxNGParseError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/relaxng.pxi":14
 *     pass
 * 
 * class RelaxNGValidateError(RelaxNGError):             # <<<<<<<<<<<<<<
 *     u"""Error while validating an XML document with a RelaxNG schema.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__RelaxNGError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_445)) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s_336, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_336, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[21]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":4
 * cimport xmlschema
 * 
 * class XMLSchemaError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class of all XML Schema errors
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_446)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__XMLSchemaError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XMLSchemaError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":9
 *     pass
 * 
 * class XMLSchemaParseError(XMLSchemaError):             # <<<<<<<<<<<<<<
 *     u"""Error while parsing an XML document as XML Schema.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSchemaError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_447)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s__XMLSchemaParseError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XMLSchemaParseError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":14
 *     pass
 * 
 * class XMLSchemaValidateError(XMLSchemaError):             # <<<<<<<<<<<<<<
 *     u"""Error while validating an XML document with an XML Schema.
 *     """
 */
  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__XMLSchemaError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_11), "__doc__", ((PyObject *)__pyx_kp_s_448)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_10, ((PyObject *)__pyx_t_11), __pyx_n_s_344, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_344, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":22
 * # XMLSchema
 * 
 * cdef XPath _check_for_default_attributes = XPath(             # <<<<<<<<<<<<<<
 *     u"boolean(//xs:attribute[@default or @fixed][1])",
 *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})
 */
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_449));
  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_kp_u_449));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_449));
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":24
 * cdef XPath _check_for_default_attributes = XPath(
 *     u"boolean(//xs:attribute[@default or @fixed][1])",
 *     namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})             # <<<<<<<<<<<<<<
 * 
 * cdef class XMLSchema(_Validator):
 */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_u__xs), ((PyObject *)__pyx_kp_u_341)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__namespaces), ((PyObject *)__pyx_t_10)) < 0) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_XPath)), __pyx_t_11, ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __Pyx_GOTREF(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes));
  __Pyx_DECREF(((PyObject *)__pyx_v_4lxml_5etree__check_for_default_attributes));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_v_4lxml_5etree__check_for_default_attributes = ((struct __pyx_obj_4lxml_5etree_XPath *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/xmlschema.pxi":40
 *     cdef bint _add_attribute_defaults
 * 
 *     def __init__(self, etree=None, *, file=None, attribute_defaults=False):             # <<<<<<<<<<<<<<
 *         cdef _Document doc
 *         cdef _Element root_node
 */
  __pyx_t_10 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[22]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_k_338 = __pyx_t_10;
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":4
 * cimport schematron
 * 
 * class SchematronError(LxmlError):             # <<<<<<<<<<<<<<
 *     u"""Base class of all Schematron errors.
 *     """
 */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_10), "__doc__", ((PyObject *)__pyx_kp_s_450)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_11, ((PyObject *)__pyx_t_10), __pyx_n_s__SchematronError, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SchematronError, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":9
 *     pass
 * 
 * class SchematronParseError(SchematronError):             # <<<<<<<<<<<<<<
 *     u"""Error while parsing an XML document as Schematron schema.
 *     """
 */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__SchematronError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_10), "__doc__", ((PyObject *)__pyx_kp_s_451)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_11, ((PyObject *)__pyx_t_10), __pyx_n_s_347, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_347, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/schematron.pxi":14
 *     pass
 * 
 * class SchematronValidateError(SchematronError):             # <<<<<<<<<<<<<<
 *     u"""Error while validating an XML document with a Schematron schema.
 *     """
 */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__SchematronError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItemString(((PyObject *)__pyx_t_10), "__doc__", ((PyObject *)__pyx_kp_s_452)) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_CreateClass(__pyx_t_11, ((PyObject *)__pyx_t_10), __pyx_n_s_349, "lxml.etree"); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_349, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[23]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/lxml.etree.pyx":1
 * u"""The ``lxml.etree`` module implements the extended ElementTree API             # <<<<<<<<<<<<<<
 * for XML.
 * """
 */
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__clear_error_log); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_453), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_454), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_domains); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_455), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_types); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_456), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_levels); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_457), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_from_level); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_458), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_from_fatals); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_459), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__filter_from_errors); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_460), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ListErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s_462); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_461), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_463), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__PyErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_464), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__PyErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__log); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_465), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__PyErrorLog); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__receive); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_466), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s_468); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_467), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__DocInfo); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____init__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_469), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___init); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_470), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____setitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_471), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____delitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_472), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____deepcopy__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_473), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____copy__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_474), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__set); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_475), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__append); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_476), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__addnext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_477), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__addprevious); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_478), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__extend); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_479), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__clear); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_480), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__insert); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_481), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__remove); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_482), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__replace); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_483), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____repr__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_484), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____getitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_485), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____len__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_486), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____contains__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_487), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____iter__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_488), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____reversed__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_489), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__index); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_490), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__get); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_491), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__keys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_492), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__values); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_493), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__items); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_494), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getchildren); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_495), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getparent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_496), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getnext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_497), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getprevious); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_498), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__itersiblings); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_499), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterancestors); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_500), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterdescendants); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_501), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterchildren); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_502), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getroottree); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_503), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getiterator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_504), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iter); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_505), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__itertext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_506), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__makeelement); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_507), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__find); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_508), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__findtext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_509), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__findall); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_510), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterfind); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_511), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__xpath); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_512), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__set); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_513), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__append); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_515), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__insert); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_516), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____setitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_517), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____getitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_518), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____len__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_519), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__get); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_520), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__keys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_521), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__items); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_522), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_514); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__values); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_523), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__parse); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_524), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___setroot); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_525), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getroot); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_526), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__write); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_527), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getpath); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_528), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getiterator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_529), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iter); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_530), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__find); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_531), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__findtext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_532), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__findall); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_533), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterfind); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_534), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__xpath); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_535), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__xslt); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_536), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__relaxng); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_537), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__xmlschema); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_538), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__xinclude); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_539), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ElementTree); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__write_c14n); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_540), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Element); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_541), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Comment); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_542), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_64); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_543), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Entity); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_544), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__SubElement); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_545), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__ElementTree); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_546), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__HTML); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_547), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XML); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_548), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__fromstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_549), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__fromstringlist); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_550), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__iselement); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_551), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__dump); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_552), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_553), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__tostringlist); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_554), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__tounicode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_555), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__parse); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_556), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____getitem__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_557), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____len__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_559), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____deepcopy__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_560), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____copy__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_561), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__iterchildren); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_562), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__get); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_563), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__keys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_564), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__values); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_565), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__items); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_566), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getchildren); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_567), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getparent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_568), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getnext); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_569), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_558); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__getprevious); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_570), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_572); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__append); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_571), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_572); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__extend); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_573), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__ElementBase); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____init__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_574), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_576); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__set_fallback); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_575), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_578); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__lookup); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_577), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_580); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__lookup); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_579), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_147); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_581), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___NamespaceRegistry); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__update); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_582), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s_584); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__get_namespace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_583), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__FunctionNamespace); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_585), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Resolver); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_586), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Resolver); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_587), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Resolver); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve_string); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_588), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Resolver); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve_filename); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_589), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Resolver); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve_file); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_590), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ResolverRegistry); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__add); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_591), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ResolverRegistry); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__remove); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_592), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ResolverRegistry); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__copy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_593), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___ResolverRegistry); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__resolve); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_594), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___BaseParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s_596); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_595), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___BaseParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s_147); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_597), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___BaseParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__copy); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_598), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___BaseParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__makeelement); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_599), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___FeedParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__feed); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_600), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___FeedParser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__close); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_601), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__set_default_parser); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_602), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__get_default_parser); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_603), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__close); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_604), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__data); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_605), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__start); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_606), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__end); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_607), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__pi); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_608), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__TreeBuilder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__comment); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_609), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XMLID); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_610), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XMLDTDID); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_611), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__parseid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_612), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XInclude); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_613), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__cleanup_namespaces); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_614), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__strip_attributes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_615), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__strip_elements); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_616), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__strip_tags); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_617), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Extension); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_618), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s___XPathEvaluatorBase); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__evaluate); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_619), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_621); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__register_namespace); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_620), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_621); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__register_namespaces); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_622), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_621); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____call__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_623), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s_625); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____call__); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetAttrString(__pyx_t_11, "__doc__");
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_624), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XPathEvaluator); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_626), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XPath); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_627), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLT); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__strparam); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_628), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLT); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__apply); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_629), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLT); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__tostring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_630), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLT); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_631), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s_633); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__parseXSL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_632), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLTExtension); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__execute); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_634), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XSLTExtension); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__apply_templates); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_635), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Validator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____init__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_636), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Validator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__validate); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_637), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Validator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__assertValid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_638), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s___Validator); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__assert_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_639), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__DTD); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_640), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__RelaxNG); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_641), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__XMLSchema); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_642), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyObject_GetAttr(__pyx_m, __pyx_n_s__Schematron); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s____call__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_GetAttrString(__pyx_t_5, "__doc__");
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_kp_u_643), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_10)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;

  /* "/home/sbehnel/source/Python/lxml/lxml-2.2/src/lxml/cstd.pxd":2
 * 
 * cdef extern from "string.h":             # <<<<<<<<<<<<<<
 *     cdef int strlen(char* s) nogil
 *     cdef char* strstr(char* haystack, char* needle) nogil
 */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  if (__pyx_m) {
    __Pyx_AddTraceback("init lxml.etree");
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init lxml.etree");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

static const char *__pyx_filenames[] = {
  "lxml.etree.pyx",
  "apihelpers.pxi",
  "classlookup.pxi",
  "parser.pxi",
  "serializer.pxi",
  "cleanup.pxi",
  "extensions.pxi",
  "proxy.pxi",
  "xmlerror.pxi",
  "readonlytree.pxi",
  "nsclasses.pxi",
  "docloader.pxi",
  "saxparser.pxi",
  "parsertarget.pxi",
  "iterparse.pxi",
  "xmlid.pxi",
  "xinclude.pxi",
  "xpath.pxi",
  "xslt.pxi",
  "xsltext.pxi",
  "dtd.pxi",
  "relaxng.pxi",
  "xmlschema.pxi",
  "schematron.pxi",
  "public-api.pxi",
  "python.pxd",
};

/* Runtime support code */

static void __pyx_init_filenames(void) {
  __pyx_f = __pyx_filenames;
}

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AS_STRING(kw_name));
        #endif
}

static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *number, *more_or_less;

    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    number = (num_expected == 1) ? "" : "s";
    PyErr_Format(PyExc_TypeError,
        #if PY_VERSION_HEX < 0x02050000
            "%s() takes %s %d positional argument%s (%d given)",
        #else
            "%s() takes %s %zd positional argument%s (%zd given)",
        #endif
        func_name, more_or_less, num_expected, number, num_found);
}

static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;

    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
        } else {
            #if PY_MAJOR_VERSION < 3
            if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
            #else
            if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
            #endif
                goto invalid_keyword_type;
            } else {
                for (name = first_kw_arg; *name; name++) {
                    #if PY_MAJOR_VERSION >= 3
                    if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                        PyUnicode_Compare(**name, key) == 0) break;
                    #else
                    if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                        _PyString_Eq(**name, key)) break;
                    #endif
                }
                if (*name) {
                    values[name-argnames] = value;
                } else {
                    /* unexpected keyword found */
                    for (name=argnames; name != first_kw_arg; name++) {
                        if (**name == key) goto arg_passed_twice;
                        #if PY_MAJOR_VERSION >= 3
                        if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                            PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
                        #else
                        if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                            _PyString_Eq(**name, key)) goto arg_passed_twice;
                        #endif
                    }
                    if (kwds2) {
                        if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                    } else {
                        goto invalid_keyword;
                    }
                }
            }
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, **name);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%s() got an unexpected keyword argument '%s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *local_type, *local_value, *local_tb;
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
    if (unlikely(tstate->curexc_type))
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
        goto bad;
    #endif
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
    Py_INCREF(local_type);
    Py_INCREF(local_value);
    Py_INCREF(local_tb);
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    /* Make sure tstate is in a consistent state when we XDECREF
       these objects (XDECREF may run arbitrary code). */
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}


static CYTHON_INLINE long __Pyx_mod_long(long a, long b) {
    long r = a % b;
    r += ((r != 0) & ((r ^ b) < 0)) * b;
    return r;
}

static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
    long q = a / b;
    long r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
        #else
        if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key)))
        #endif
            goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%s() keywords must be strings", function_name);
    return 0;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%s() got an unexpected keyword argument '%s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
        #if PY_VERSION_HEX < 0x02050000
                 "need more than %d value%s to unpack", (int)index,
        #else
                 "need more than %zd value%s to unpack", index,
        #endif
                 (index == 1) ? "" : "s");
}

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(void) {
    PyErr_SetString(PyExc_ValueError, "too many values to unpack");
}

static PyObject *__Pyx_UnpackItem(PyObject *iter, Py_ssize_t index) {
    PyObject *item;
    if (!(item = PyIter_Next(iter))) {
        if (!PyErr_Occurred()) {
            __Pyx_RaiseNeedMoreValuesError(index);
        }
    }
    return item;
}

static int __Pyx_EndUnpack(PyObject *iter) {
    PyObject *item;
    if ((item = PyIter_Next(iter))) {
        Py_DECREF(item);
        __Pyx_RaiseTooManyValuesError();
        return -1;
    }
    else if (!PyErr_Occurred())
        return 0;
    else
        return -1;
}

static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(PyObject_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();

    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}

static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;

    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}


static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
    Py_ssize_t q = a / b;
    Py_ssize_t r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}



static PyObject* __Pyx_PyEval_CallObjectWithKeywords(PyObject *callable, PyObject *args, PyObject *kwargs) {
    PyObject* result;
    if (likely(PyDict_Check(kwargs))) {
        return PyEval_CallObjectWithKeywords(callable, args, kwargs);
    } else {
        PyObject* real_dict;
        real_dict = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, kwargs, NULL);
        if (unlikely(!real_dict))
            return NULL;
        result = PyEval_CallObjectWithKeywords(callable, args, real_dict);
        Py_DECREF(real_dict);
        return result; /* may be NULL */
    }
}

static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError();
    }
}

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}

static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact)
{
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (none_allowed && obj == Py_None) return 1;
    else if (exact) {
        if (Py_TYPE(obj) == type) return 1;
    }
    else {
        if (PyObject_TypeCheck(obj, type)) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%s' has incorrect type (expected %s, got %s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
    PyObject *__import__ = 0;
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    __import__ = __Pyx_GetAttrString(__pyx_b, "__import__");
    if (!__import__)
        goto bad;
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    module = PyObject_CallFunctionObjArgs(__import__,
        name, global_dict, empty_dict, list, NULL);
bad:
    Py_XDECREF(empty_list);
    Py_XDECREF(__import__);
    Py_XDECREF(empty_dict);
    return module;
}

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result)
        PyErr_SetObject(PyExc_NameError, name);
    return result;
}

static PyObject *__Pyx_CreateClass(
    PyObject *bases, PyObject *dict, PyObject *name, const char *modname)
{
    PyObject *py_modname;
    PyObject *result = 0;

    #if PY_MAJOR_VERSION < 3
    py_modname = PyString_FromString(modname);
    #else
    py_modname = PyUnicode_FromString(modname);
    #endif
    if (!py_modname)
        goto bad;
    if (PyDict_SetItemString(dict, "__module__", py_modname) < 0)
        goto bad;
    #if PY_MAJOR_VERSION < 3
    result = PyClass_New(bases, dict, name);
    #else
    result = PyObject_CallFunctionObjArgs((PyObject *)&PyType_Type, name, bases, dict, NULL);
    #endif
bad:
    Py_XDECREF(py_modname);
    return result;
}

#if PY_MAJOR_VERSION < 3
static PyObject *__Pyx_GetStdout(void) {
    PyObject *f = PySys_GetObject((char *)"stdout");
    if (!f) {
        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
    }
    return f;
}

static int __Pyx_Print(PyObject *arg_tuple, int newline) {
    PyObject *f;
    PyObject* v;
    int i;

    if (!(f = __Pyx_GetStdout()))
        return -1;
    for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
        if (PyFile_SoftSpace(f, 1)) {
            if (PyFile_WriteString(" ", f) < 0)
                return -1;
        }
        v = PyTuple_GET_ITEM(arg_tuple, i);
        if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
            return -1;
        if (PyString_Check(v)) {
            char *s = PyString_AsString(v);
            Py_ssize_t len = PyString_Size(v);
            if (len > 0 &&
                isspace(Py_CHARMASK(s[len-1])) &&
                s[len-1] != ' ')
                    PyFile_SoftSpace(f, 0);
        }
    }
    if (newline) {
        if (PyFile_WriteString("\n", f) < 0)
            return -1;
        PyFile_SoftSpace(f, 0);
    }
    return 0;
}

#else /* Python 3 has a print function */

static int __Pyx_Print(PyObject *arg_tuple, int newline) {
    PyObject* kwargs = 0;
    PyObject* result = 0;
    PyObject* end_string;
    if (!__pyx_print) {
        __pyx_print = __Pyx_GetAttrString(__pyx_b, "print");
        if (!__pyx_print)
            return -1;
    }
    if (!newline) {
        if (!__pyx_print_kwargs) {
            __pyx_print_kwargs = PyDict_New();
            if (!__pyx_print_kwargs)
                return -1;
            end_string = PyUnicode_FromStringAndSize(" ", 1);
            if (!end_string)
                return -1;
            if (PyDict_SetItemString(__pyx_print_kwargs, "end", end_string) < 0) {
                Py_DECREF(end_string);
                return -1;
            }
            Py_DECREF(end_string);
        }
        kwargs = __pyx_print_kwargs;
    }
    result = PyObject_Call(__pyx_print, arg_tuple, kwargs);
    if (!result)
        return -1;
    Py_DECREF(result);
    return 0;
}

#endif

#if PY_MAJOR_VERSION < 3

static int __Pyx_PrintOne(PyObject *o) {
    PyObject *f;
    if (!(f = __Pyx_GetStdout()))
        return -1;
    if (PyFile_SoftSpace(f, 0)) {
        if (PyFile_WriteString(" ", f) < 0)
            return -1;
    }
    if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
        return -1;
    if (PyFile_WriteString("\n", f) < 0)
        return -1;
    return 0;
    /* the line below is just to avoid compiler
     * compiler warnings about unused functions */
    return __Pyx_Print(NULL, 0);
}

#else /* Python 3 has a print function */

static int __Pyx_PrintOne(PyObject *o) {
    int res;
    PyObject* arg_tuple = PyTuple_New(1);
    if (unlikely(!arg_tuple))
        return -1;
    Py_INCREF(o);
    PyTuple_SET_ITEM(arg_tuple, 0, o);
    res = __Pyx_Print(arg_tuple, 1);
    Py_DECREF(arg_tuple);
    return res;
}

#endif

static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
    /* It appears that PyMethodDescr_Type is not anywhere exposed in the Python/C API */
    static PyTypeObject *methoddescr_type = NULL;
    if (methoddescr_type == NULL) {
       PyObject *meth = __Pyx_GetAttrString((PyObject*)&PyList_Type, "append");
       if (!meth) return NULL;
       methoddescr_type = Py_TYPE(meth);
       Py_DECREF(meth);
    }
    if (PyObject_TypeCheck(method, methoddescr_type)) { /* cdef classes */
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        #if PY_VERSION_HEX < 0x03020000
        PyTypeObject *d_type = descr->d_type;
        #else
        PyTypeObject *d_type = descr->d_common.d_type;
        #endif
        return PyDescr_NewClassMethod(d_type, descr->d_method);
    }
    else if (PyMethod_Check(method)) { /* python classes */
        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
    }
    else if (PyCFunction_Check(method)) {
        return PyClassMethod_New(method);
    }
    PyErr_Format(PyExc_TypeError,
                 "Class-level classmethod() can only be called on"
                 "a method_descriptor or instance method.");
    return NULL;
}

#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
    Py_XINCREF(type);
    Py_XINCREF(value);
    Py_XINCREF(tb);
    /* First, check the traceback argument, replacing None with NULL. */
    if (tb == Py_None) {
        Py_DECREF(tb);
        tb = 0;
    }
    else if (tb != NULL && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto raise_error;
    }
    /* Next, replace a missing value with None */
    if (value == NULL) {
        value = Py_None;
        Py_INCREF(value);
    }
    #if PY_VERSION_HEX < 0x02050000
    if (!PyClass_Check(type))
    #else
    if (!PyType_Check(type))
    #endif
    {
        /* Raising an instance.  The value should be a dummy. */
        if (value != Py_None) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        /* Normalize to raise <class>, <instance> */
        Py_DECREF(value);
        value = type;
        #if PY_VERSION_HEX < 0x02050000
            if (PyInstance_Check(type)) {
                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
                Py_INCREF(type);
            }
            else {
                type = 0;
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception must be an old-style class or instance");
                goto raise_error;
            }
        #else
            type = (PyObject*) Py_TYPE(type);
            Py_INCREF(type);
            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception class must be a subclass of BaseException");
                goto raise_error;
            }
        #endif
    }

    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}

#else /* Python 3+ */

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;

    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (!PyExceptionClass_Check(type)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }

    PyErr_SetObject(type, value);

    if (tb) {
        PyThreadState *tstate = PyThreadState_GET();
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
    }

bad:
    return;
}
#endif

static PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r = PyObject_GetAttr(o, n);
    if (!r) {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
            goto bad;
        PyErr_Clear();
        r = d;
        Py_INCREF(d);
    }
    return r;
bad:
    return 0;
}

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned char" :
                    "value too large to convert to unsigned char");
            }
            return (unsigned char)-1;
        }
        return (unsigned char)val;
    }
    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned short" :
                    "value too large to convert to unsigned short");
            }
            return (unsigned short)-1;
        }
        return (unsigned short)val;
    }
    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned int" :
                    "value too large to convert to unsigned int");
            }
            return (unsigned int)-1;
        }
        return (unsigned int)val;
    }
    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
    const char neg_one = (char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to char" :
                    "value too large to convert to char");
            }
            return (char)-1;
        }
        return (char)val;
    }
    return (char)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
    const short neg_one = (short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to short" :
                    "value too large to convert to short");
            }
            return (short)-1;
        }
        return (short)val;
    }
    return (short)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
    const int neg_one = (int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to int" :
                    "value too large to convert to int");
            }
            return (int)-1;
        }
        return (int)val;
    }
    return (int)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
    const signed char neg_one = (signed char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed char" :
                    "value too large to convert to signed char");
            }
            return (signed char)-1;
        }
        return (signed char)val;
    }
    return (signed char)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
    const signed short neg_one = (signed short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed short" :
                    "value too large to convert to signed short");
            }
            return (signed short)-1;
        }
        return (signed short)val;
    }
    return (signed short)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
    const signed int neg_one = (signed int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed int" :
                    "value too large to convert to signed int");
            }
            return (signed int)-1;
        }
        return (signed int)val;
    }
    return (signed int)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned long");
            return (unsigned long)-1;
        }
        return (unsigned long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned long");
                return (unsigned long)-1;
            }
            return PyLong_AsUnsignedLong(x);
        } else {
            return PyLong_AsLong(x);
        }
    } else {
        unsigned long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned long)-1;
        val = __Pyx_PyInt_AsUnsignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned PY_LONG_LONG");
            return (unsigned PY_LONG_LONG)-1;
        }
        return (unsigned PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned PY_LONG_LONG");
                return (unsigned PY_LONG_LONG)-1;
            }
            return PyLong_AsUnsignedLongLong(x);
        } else {
            return PyLong_AsLongLong(x);
        }
    } else {
        unsigned PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
    const long neg_one = (long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to long");
            return (long)-1;
        }
        return (long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to long");
                return (long)-1;
            }
            return PyLong_AsUnsignedLong(x);
        } else {
            return PyLong_AsLong(x);
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (long)-1;
        val = __Pyx_PyInt_AsLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to PY_LONG_LONG");
            return (PY_LONG_LONG)-1;
        }
        return (PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to PY_LONG_LONG");
                return (PY_LONG_LONG)-1;
            }
            return PyLong_AsUnsignedLongLong(x);
        } else {
            return PyLong_AsLongLong(x);
        }
    } else {
        PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
    const signed long neg_one = (signed long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed long");
            return (signed long)-1;
        }
        return (signed long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed long");
                return (signed long)-1;
            }
            return PyLong_AsUnsignedLong(x);
        } else {
            return PyLong_AsLong(x);
        }
    } else {
        signed long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed long)-1;
        val = __Pyx_PyInt_AsSignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed PY_LONG_LONG");
            return (signed PY_LONG_LONG)-1;
        }
        return (signed PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed PY_LONG_LONG");
                return (signed PY_LONG_LONG)-1;
            }
            return PyLong_AsUnsignedLongLong(x);
        } else {
            return PyLong_AsLongLong(x);
        }
    } else {
        signed PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsSignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static void __Pyx_WriteUnraisable(const char *name) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
}

static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;

    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
            goto bad;
    }
    tmp.fp = f;
#if PY_VERSION_HEX < 0x03010000
    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
#else
    cobj = PyCapsule_New(tmp.p, sig, 0);
#endif
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX < 0x03010000
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#else
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

#ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
    long size, int strict)
{
    PyObject *py_module = 0;
    PyObject *result = 0;
    PyObject *py_name = 0;
    char warning[200];

    py_module = __Pyx_ImportModule(module_name);
    if (!py_module)
        goto bad;
    #if PY_MAJOR_VERSION < 3
    py_name = PyString_FromString(class_name);
    #else
    py_name = PyUnicode_FromString(class_name);
    #endif
    if (!py_name)
        goto bad;
    result = PyObject_GetAttr(py_module, py_name);
    Py_DECREF(py_name);
    py_name = 0;
    Py_DECREF(py_module);
    py_module = 0;
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError, 
            "%s.%s is not a type object",
            module_name, class_name);
        goto bad;
    }
    if (!strict && ((PyTypeObject *)result)->tp_basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning), 
            "%s.%s size changed, may indicate binary incompatibility",
            module_name, class_name);
        PyErr_WarnEx(NULL, warning, 0);
    }
    else if (((PyTypeObject *)result)->tp_basicsize != size) {
        PyErr_Format(PyExc_ValueError, 
            "%s.%s has the wrong size, try recompiling",
            module_name, class_name);
        goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(py_module);
    Py_XDECREF(result);
    return 0;
}
#endif

#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
    PyObject *py_name = 0;
    PyObject *py_module = 0;

    #if PY_MAJOR_VERSION < 3
    py_name = PyString_FromString(name);
    #else
    py_name = PyUnicode_FromString(name);
    #endif
    if (!py_name)
        goto bad;
    py_module = PyImport_Import(py_name);
    Py_DECREF(py_name);
    return py_module;
bad:
    Py_XDECREF(py_name);
    return 0;
}
#endif

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"

static void __Pyx_AddTraceback(const char *funcname) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;

    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(__pyx_filename);
    #else
    py_srcfile = PyUnicode_FromString(__pyx_filename);
    #endif
    if (!py_srcfile) goto bad;
    if (__pyx_clineno) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    py_code = PyCode_New(
        0,            /*int argcount,*/
        #if PY_MAJOR_VERSION >= 3
        0,            /*int kwonlyargcount,*/
        #endif
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple,  /*PyObject *consts,*/
        __pyx_empty_tuple,  /*PyObject *names,*/
        __pyx_empty_tuple,  /*PyObject *varnames,*/
        __pyx_empty_tuple,  /*PyObject *freevars,*/
        __pyx_empty_tuple,  /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        __pyx_lineno,   /*int firstlineno,*/
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    if (!py_code) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_GET(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = __pyx_lineno;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else  /* Python 3+ has unicode identifiers */
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

/* Type Conversion Functions */

static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   if (x == Py_True) return 1;
   else if ((x == Py_False) | (x == Py_None)) return 0;
   else return PyObject_IsTrue(x);
}

static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
  PyNumberMethods *m;
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_VERSION_HEX < 0x03000000
  if (PyInt_Check(x) || PyLong_Check(x))
#else
  if (PyLong_Check(x))
#endif
    return Py_INCREF(x), x;
  m = Py_TYPE(x)->tp_as_number;
#if PY_VERSION_HEX < 0x03000000
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = PyNumber_Long(x);
  }
#else
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Long(x);
  }
#endif
  if (res) {
#if PY_VERSION_HEX < 0x03000000
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
#else
    if (!PyLong_Check(res)) {
#endif
      PyErr_Format(PyExc_TypeError,
                   "__%s__ returned non-%s (type %.200s)",
                   name, name, Py_TYPE(res)->tp_name);
      Py_DECREF(res);
      return NULL;
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject* x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}

static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
#if PY_VERSION_HEX < 0x02050000
   if (ival <= LONG_MAX)
       return PyInt_FromLong((long)ival);
   else {
       unsigned char *bytes = (unsigned char *) &ival;
       int one = 1; int little = (int)*(unsigned char*)&one;
       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
   }
#else
   return PyInt_FromSize_t(ival);
#endif
}

static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
       return (size_t)-1;
   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
       PyErr_SetString(PyExc_OverflowError,
                       "value too large to convert to size_t");
       return (size_t)-1;
   }
   return (size_t)val;
}


#endif /* Py_PYTHON_H */
